Scrapy———反爬蟲的一些基本應對方法

1. IP地址驗證

  背景:有些網站會使用IP地址驗證進行反爬蟲處理,檢查客戶端的IP地址,若同一個IP地址頻繁訪問,則會判斷該客戶端是爬蟲程序。

  解決方案:

    1. 讓Scrapy不斷隨機更換代理服務器的IP地址,如在middlewares.py中添加如下類:

1 class RandomProxyMiddleware(object):
2     def process request(self,request,spider):
3         request.meta['proxy]=get_random_proxy()

    2.在setting.py中啓用自定義middleware,添加如下代碼:

DOWNLOADER MIDDLEWARES={
     'YourSpiderName.middlewares.RandomProxyMidderware' : 543       
}

2. 禁用cookie

  背景: 有些網站可以通過跟蹤Cookie來識別是否是同一個客戶端。Scrapy默認開啓了cookie.

  解決方案: 若爬取的網站不需要登陸,可通過禁用Cookie以反識別:

  1. 在setting.py中,添加以下代碼:

1 cookies_enabled=False

3. 違反爬蟲規則文件

  背景:一般網站都有robots.txt文件,Scrapy會識別並遵從其爬蟲規則。

  解決方案:讓爬蟲違反爬蟲規則文件的限制,强行爬取站點信息:

  1. 在setting.py中設置:

1   ROBOTSTXT OBEY=False

4. 限制訪問頻率

  背景:當同一個IP地址,同一個客戶端訪問目標網站過於頻繁時,很可能會被當成機器程序(爬蟲)禁止訪問。

  解決方案: 模擬正常用戶訪問的速度,限制Scrapy的訪問頻率

  1. 在setting.py中添加以下代碼:

#開啓訪問頻率限制
AUTOTHROTTLE ENABLED=True

#設置訪問開始的延遲
AUTOTHROTTLE START DELAY=5

#設置訪問之間的最大延遲
AUTOTHTOTTLE MAX DELAY=60

#設置Scrapy并行發給每臺遠程服務器的請求數量
AUTOTHROTTLE TARGET CONCUTTENCY=1.0

#設置下載之後的自動高延遲
DOWNLOAD DELAY=3

5. 圖形驗證碼

  背景:某些網站在同一IP,同一個客戶端訪問次數超過限制后會要求輸入圖形驗證碼,只有成功輸入的圖形驗證碼才能繼續訪問。

  解決方案:

  1. 使用PIL,Libsvrn等庫自己開發程序來識別圖形驗證碼;

  2. 使用第三方識別,即那些圖形驗證碼的在綫識別網站,不過可能需要收費。

 

转载于:https://www.cnblogs.com/riocasture/p/11337925.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值