Scrapy———反爬蟲的一些基本應對方法
2024-08-31 13:08:47
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. 使用第三方識別,即那些圖形驗證碼的在綫識別網站,不過可能需要收費。
最新文章
- 压力测试 webbench
- HBase基础和伪分布式安装配置
- Orchard源码分析(5.2):BeginRequest事件处理(DefaultOrchardHost.BeginRequest方法)
- PHP CI 查询条件大全
- VC编程技巧:IE控件的高级用法
- Delphi 7下使用Log4Delphi 0.8日志组件
- iOS关于sqlite3操作
- js拖动层
- Create local metadata resource of yum
- jquery源码 DOM加载
- 如何共享数据?- 每天5分钟玩转 Docker 容器技术(41)
- Ubuntu中,wxpython的TextCtrl引发的error:_pixman_log_error
- MySQL的log_bin和sql_log_bin 的区别
- java io系列07之 FileInputStream和FileOutputStream
- ranch 源码分析(二)
- BZOJ 3007 [SDOI2012]拯救小云公主 - 对偶图 + 并查集
- BMap:WEB 服务API
- 【Zookeeper】源码分析之持久化(二)之FileSnap
- Esper学习之七:EPL语法(三)
- vue v-model 表单控件绑定