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. 使用第三方識別,即那些圖形驗證碼的在綫識別網站,不過可能需要收費。
Scrapy———反爬蟲的一些基本應對方法的更多相关文章
- Scrapy反爬
1,随机更换 user-agent: 将足够多的user-agent放在settings中,在parse方法中调用 缺点:每一个request中都要调用这个方法 这个是scrapy的流程图. 既然每一 ...
- Python Scrapy反爬虫常见解决方案(包含5种方法)
爬虫的本质就是“抓取”第二方网站中有价值的数据,因此,每个网站都会或多或少地采用一些反爬虫技术来防范爬虫.比如前面介绍的通过 User-Agent 请求头验证是否为浏览器.使用 JavaScript ...
- 使用scrapy爬虫,爬取17k小说网的案例-方法二
楼主准备爬取此页面的小说,此页面一共有125章 我们点击进去第一章和第一百二十五章发现了一个规律 我们看到此链接的 http://www.17k.com/chapter/271047/6336386 ...
- 关于使用scrapy框架编写爬虫以及Ajax动态加载问题、反爬问题解决方案
Python爬虫总结 总的来说,Python爬虫所做的事情分为两个部分,1:将网页的内容全部抓取下来,2:对抓取到的内容和进行解析,得到我们需要的信息. 目前公认比较好用的爬虫框架为Scrapy,而且 ...
- 第三百四十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—cookie禁用、自动限速、自定义spider的settings,对抗反爬机制
第三百四十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—cookie禁用.自动限速.自定义spider的settings,对抗反爬机制 cookie禁用 就是在Scrapy的配置文件set ...
- 第三百四十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—爬虫和反爬的对抗过程以及策略—scrapy架构源码分析图
第三百四十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—爬虫和反爬的对抗过程以及策略—scrapy架构源码分析图 1.基本概念 2.反爬虫的目的 3.爬虫和反爬的对抗过程以及策略 scra ...
- 二十四 Python分布式爬虫打造搜索引擎Scrapy精讲—爬虫和反爬的对抗过程以及策略—scrapy架构源码分析图
1.基本概念 2.反爬虫的目的 3.爬虫和反爬的对抗过程以及策略 scrapy架构源码分析图
- scrapy——4 —反爬措施—logging—重要参数—POST请求发送实战
scrapy——4 常用的反爬虫策略有哪些 怎样使用logging设置 Resquest/Response重要参数有哪些 Scrapy怎么发送POST请求 动态的设置User-Agent(随即切换Us ...
- Scrapy中的反反爬、logging设置、Request参数及POST请求
常用的反反爬策略 通常防止爬虫被反主要有以下几策略: 动态设置User-Agent(随机切换User-Agent,模拟不同用户的浏览器信息.) 禁用cookies(也就是不启用cookies midd ...
随机推荐
- javascript笔记day01
JavaScript基础语法 HTML :标记语言 JavaScript :编程语言 序言 JavaScript发展历史(JS) 1. 1994年,网景公司(Netscape)发布了Navigator ...
- 【java学习笔记2】访问控制修饰符 public、protected、默认、private
先写了一个User()类: package chapter01; public class User { // 私有的 private int id; // 受保护的 protected int ag ...
- Jquery Ajax如何添加header参数
转自网络 1 $.ajax({ 2 type: "POST", 3 url: "http://192.168.0.88/action.cgi?ActionID=WEB_R ...
- 深度学习论文翻译解析(十六):Squeeze-and-Excitation Networks
论文标题:Squeeze-and-Excitation Networks 论文作者:Jie Hu Li Shen Gang Sun 论文地址:https://openaccess.thecvf.co ...
- kickstart+pxe部署
------------恢复内容开始------------ kickstart 通过网络安装系统 ----pxe kickstart,cobbler pex 预启动执行环境 通过网络接口启动计算机, ...
- 微服务 - 服务消费(六)Ribbon
Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具.它是一个基于HTTP和TCP的客户端负载均衡器.它可以通过在客户端中配置ribbonServer ...
- [leetcode]49. Group Anagrams重排列字符串分组
是之前的重排列字符串的延伸,判断是重排列后存到HashMap中进行分组 这种HashMap进行分组的方式很常用 public List<List<String>> groupA ...
- istio kiali 亲和性调度
一.节点调度 在开始 kiali 亲和性调度之前,先演示一个简单的例子介绍 pod 选择调度到指定 node: 节点打标 使用命令查看当前所有 k8s 节点: [root@k8s-master ~]# ...
- win8.1默认输入法设置
1.右击左下角,选择控制面板 2.选择更改输入法 3.选择高级设置 4.在替代默认输入法,从下拉列表中选择自己已安装的输入法,比如搜狗拼音输入法,qq拼音输入法等其他输入法
- Sublime Text 3 习惯插件 转
原帖:https://www.cnblogs.com/hykun/p/sublimeText3.html Emmet插件 Emmet插件可以说是使用Sublime Text进行前端开发必不可少的插件 ...