Scrapy爬蟲專案中避免被禁止爬蟲的幾種方法

2021-09-22 05:48:23 字數 2533 閱讀 2530

現在**的安全性越來越高,並會通過分析使用者的行為以及相關資訊來判斷該使用者是否是自動爬蟲並會將爬蟲行為禁止。不同的**判斷依據也不同,有的根據ip、有的根據使用者資訊、有的根據訪問頻率等。因此,本文將具有針對性地介紹幾種方法應對不同的情況。

有的**會通過使用者的cookie資訊堆使用者進行識別和分析,如果將本地的cookie資訊讓對方**無法識別出會話資訊,從而無法禁止爬取。對於scrapy專案來說,可以通過在settings.py檔案中進行相應的設定來實現禁用cookie。如下圖所示,預設將cookies_enabled屬性注釋了。

我們可以將注釋取消,如下圖所示,即可實現禁止cookie。

有的**會通過使用者對網頁訪問的頻率進行分析來判斷是否為爬蟲自動爬取行為,識別為爬蟲行為後便會禁止爬取行為。面對這種情況,可以控制爬蟲時間間隔,可以設定download_delay屬性來使爬取行為與正常訪問無異。如下圖所示,settings.py中將download_delay屬性注釋了。

將注釋取消,並設定需要的值。如下圖所示:

在前面介紹手寫爬蟲的時候,強調爬蟲時需要模擬瀏覽器進行爬蟲,即對headers的user-agent屬性進行設定。有的**會分析使用者的user-agent進行反爬蟲。我們可以建立乙個user-agent pool來避免這種情況,使用者**池存放不同的user-agent,可以 通過隨機選用user-agent從而避免禁止。

1.在settings.py檔案中設定使用者**池

#使用者**池設定

"mozilla/5.0 (windows nt 6.1; wow64; rv:48.0) gecko/20100101 firefox/48.0",

class uapools(useragentmiddleware):

def __init__(self,ua=''):

self.ua=ua

def process_request(self, request, spider):

choiceua=random.choice(uapool)

print("當前使用的user-agent是:"+choiceua)

request.headers.setdefault("user-agent",choiceua)

其中,該類繼承scrapy.**********middlewares.useragent.useragentmiddleware類,然後實現process_request(self,request,spider)方法,該方法中將請求的user-agent設定成隨機在使用者**池中選中的使用者**。

**********_middlewares =
4.執行爬蟲檔案,如下圖所示。

在手寫爬蟲時,常會碰到ip禁用的問題,之前手寫爬蟲常會使用**ip來解決問題,而在scrapy通過ip池來解決這類問題,使用的是同樣的原理。

1.在settings.py檔案中設定ip池

可以在或者上找一些**ip寫入ip池,如下所示:

#ip池設定

#process_request(),主要進行請求處理

def process_request(self, request, spider):

#先隨機選擇ip

choiceip=random.choice(ippool)

print("當前使用的ip是:"+choiceip["ipaddr"])

#將對應的ip實際新增為具體的**,用該ip進行爬取

該類繼承scrapy.**********middlewares.httpproxy.httpproxymiddleware類,實現process_request(self,request,spider)。通過**request.meta["proxy"]="http://"+choiceip["ipaddr"]將隨機選擇的**ip設定成使用的ip。

**********_middlewares =
4.執行爬蟲程式

執行爬蟲程式,執行結果如下所示:

以上便是scrapy專案幾種避免被禁止的方法。 本文所涉及的**見github:

scrapy避免被禁止

在scrapy 專案中,主要可以通過以下方法來避免被禁止 1 禁止cookies 3 使用ip池 4 使用使用者 5 其他方法,比如進行分布式爬取等 這個就不介紹了 1.禁止cookies 如果我們要禁止使用cookies,可以在對應scrapy爬蟲專案中的settings.py檔案進行相應的設定。...

爬蟲如何避免被禁止

一 禁止cookie 有的 會通過cookie來識別使用者,我們可以禁用cookie使對方 無法識別出我們的對話資訊,達到避免被禁止。在scrapy的專案中的settings.py 檔案中找到 並修改如下 disable cookies enabled by default cookies enab...

Scrapy搭建爬蟲專案

1.進入到conda環境中,執行conda create name scrapy env python 3.6.5 scrapy建立乙個關於scrapy專案的虛擬環境。只需要建立乙個scrapy的虛擬環境就可以,不需要每次都建立 2.執行conda activate scrapy env切換到 sc...