Scrapy增加隨機請求頭user agent

2021-08-09 02:35:05 字數 1876 閱讀 8333

一般為了避免伺服器反爬蟲,當我們發出request時,需要增加一些隨機的請求頭資訊(header),然後就可以輕鬆的繞過伺服器的反偵察手段了。

因此一般只要在middlewares.py檔案中新增加如下**,然後每次request的時候,就會有隨機的user_agent了,然後就可以有效的避免伺服器反爬蟲了。

#以下用於pc端請求資料,但網上有一些請求頭是手機端的,要看清楚。

#因為一般請求頭不一樣,伺服器返回的資料格式也是不一樣,我們解析時的xpath也就不一樣了

#1. 隨機的scrapy增加隨機請求頭user_agent

class myuseragentmiddleware(useragentmiddleware):

'''設定user-agent

'''def __init__(self, user_agent):

self.user_agent = user_agent

@classmethod

def from_crawler(cls, crawler):

return cls(

user_agent=crawler.settings.get('my_user_agent')

)def process_request(self, request, spider):

agent = random.choice(self.user_agent)

#print('agent-----%s' %agent)

request.headers['user-agent'] = agent

#以下用於pc端請求資料,但網上有一些請求頭是手機端的,要看清楚。

#因為一般請求頭不一樣,伺服器返回的資料格式也是不一樣,我們解析時的xpath也就不一樣了

my_user_agent = [

"mozilla/5.0 (macintosh; intel mac os x 10.12; rv:55.0) gecko/20100101 firefox/55.0",

"mozilla/5.0 (macintosh; intel mac os x 10.11; rv:55.0) gecko/20100101 firefox/55.0",

"mozilla/5.0 (macintosh; intel mac os x 10.10; rv:55.0) gecko/20100101 firefox/55.0",

"mozilla/5.0 (macintosh; intel mac os x 10.9; rv:55.0) gecko/20100101 firefox/55.0",

"mozilla/5.0 (macintosh; intel mac os x 10.8; rv:55.0) gecko/20100101 firefox/55.0",

"mozilla/5.0 (macintosh; intel mac os x 10.7; rv:55.0) gecko/20100101 firefox/55.0",

"mozilla/5.0 (macintosh; intel mac os x 10.8; rv:55.0) gecko/20100101 firefox/54.0",

"mozilla/5.0 (macintosh; intel mac os x 10.8; rv:55.0) gecko/20100101 firefox/53.0",

"mozilla/5.0 (macintosh; intel mac os x 10.8; rv:55.0) gecko/20100101 firefox/52.0",

"mozilla/5.0 (macintosh; intel mac os x 10.8; rv:55.0) gecko/20100101 firefox/50.0",

]

反爬蟲 Scrapy設定隨機請求頭

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

Pyspider中給爬蟲偽造隨機請求頭的例項

pyspider 中採用了 tornado 庫來做 http 請求,在請求過程中可以新增各種引數,例如請求鏈結超時時間,請求傳輸資料超時時間,請求頭等等,但是根據pyspider的原始框架,給爬蟲新增引數只能通過 crawl config這個python字典來完成 如下所示 框架 將這個字典中的引數...

scrapy請求頭首字母大寫的解決方法

背景 同樣的url,headers,payload進行post請求,requests可以正確的拿到資料,而scrapy則無法通過驗證。通過抓包發現,scrapy所發出的請求頭首字母均為大寫,在postman 中將請求頭的各個key改為小寫後能正確拿到請求資料。原因 scrapy的request物件通...