爬蟲11 scrapy突破反爬蟲策略

2021-08-27 16:10:12 字數 3197 閱讀 3797

1、user-agent

(1)fake-useragent的安裝:pip install fake-useragent

用法:

from fake_useragent import useragent

ua = useragent()

print(ua.ie)

執行結果:

mozilla/4.0 (compatible; msie 8.0; windows nt 6.1; wow64; trident/4.0; slcc2; .net clr 2.0.50727; infopath.2)
上使ie瀏覽器的用法,其他的瀏覽器的用法 

(2)設定user-agent,修改middleware.py中介軟體,在middleware.py新增如下**

from fake_useragent import useragent

class useragentmiddleware(object):

def __init__(self, user_agent=''):

# print('==useragentmiddleware init==')

self.ua = useragent()

def process_request(self, request, spider):

# print('==useragentmiddleware process_request==')

if self.ua:

# print('********current useragent************')

print(self.ua.random)

request.headers.setdefault('user-agent', self.ua.random)

然後修改settings配置檔案中的**********_middlewares

# 原來的spider_middlewares

# **********_middlewares =

**********_middlewares =

上述**是根據原始碼自帶的使用者**改寫的,檢視原始碼:site-package/scrapy/**********middlewares/useragent.py

2、**ip

**ip的設定和user-agent的設定相似,在中定義**ip的中介軟體;

import random

from scrapy import signals

class randomproxymiddleware(object):

def __init__(self):

self.proxies = [,,

,,

]def process_request(self, request, spider):

proxy = random.choice(self.proxies)

# 沒有**賬戶驗證的**使用方式

# 對賬戶密碼進行 base64 編碼轉換

base64_userpasswd = base64.b64encode(proxy['user_passwd'])

request.headers['proxy-authorization'] = 'basic ' + base64_userpasswd

request.meta['proxy'] = "http://" + proxy['ip_port']

然後修改settings配置檔案中的spider_middlewares

**********_middlewares =
3、獲取動態頁面

# 載入驅動

print('***************=process_request***************=')

browser = webdriver.phantomjs()

browser.get(request.url) # 載入網頁

data = browser.page_source # 獲取網頁文字

data = data.encode('utf-8')

browser.quit()

return htmlresponse(request.url, body=data, encoding='utf-8', request=request)

def process_response(self, request, response, spider):

return response

def process_exception(self, request, exception, spider):

pass

def spider_opened(self, spider):

spider.logger.info('spider opened: %s' % spider.name)然後修改settings配置檔案中的spider_middlewares

**********_middlewares =
sina部落格就是一動態頁面,想要獲取頁面的所有資訊,需要將頁面向下滑動……

4、禁用cookie

特殊情況下防止某些**根據 cookie 來封鎖爬蟲。

cookies_enabled = false

Scrapy繞過反爬蟲策略

方法1 修改setting.py中的user agent user agent 方法2 修改setting中的default request headers default request headers 也就是不啟用cookies middleware,不向server傳送cookies,有些 通...

爬蟲 07 反爬蟲

回到頂部 爬蟲和反爬蟲基本概念 爬蟲 自動獲取 資料的程式,關鍵是批量的獲取。反爬蟲 使用技術手段防止爬蟲程式的方法。誤傷 反爬蟲技術將普通使用者識別為爬蟲,如果誤傷過高,效果再高也不能用。成本 反爬蟲需要的人力和機器成本。攔截 成功攔截爬蟲,一般攔截率越高,誤傷率越高。反爬蟲的目的 初級爬蟲 簡單...

反爬蟲 Scrapy設定隨機請求頭

在這裡給大家推薦乙個包含全球所有的user agent的 位址 效果圖如下 這裡我隨機選了幾個關於谷歌和火狐瀏覽器中的ua,然後再scrapy框架中的middlewares.py中新增加乙個類 在裡面構建了乙個user agent的列表,效果如下 python class useragentdown...