如何突破网站反爬机制

目前常见的Web反采集策略大概有以下几种:
? 1)数据加密;
? 2)限制访问频率;
? 3)数据以非文本形式展现;
? 4)验证码保护;
? 5)Cookie验证;
本文主要探讨一下如何突破”限制访问频率”:
“限制访问频率”的原理:
服务器端程序(例如,WAF)维护了一个客户端(IP)的访问计数,如果客户端(IP)请求频率超过阈值,请求就会被拦截,通常会出现下列情形:
? 1)最常见的:返回403或503错误。
? 2)连接被重置。
? 3)最令人头疼的:返回无效的内容

突破方法:
? 1)使用HTTP爬虫代理。因为服务端是根据IP进行限制的,通过使用代理就可以将下载量平均到多个IP上。需要注意的是透明代理往往是无效的,因为WAF能够检测到真实的源IP,所以要使用隐秘(secret)代理。
? 2)增加请求延迟。比如,WAF限制单IP请求频率不能超过20次/分钟,我们可以在两次请求之间增加5S的延迟,这样下载频率就是12次/分钟,就不会被拦截了。
通常我们会将1)和2)的方法结合,这样即能防止被拦截,又能加快采集速度。例如,使用10个代理,每次下载增加5S延迟,一分钟的实际下载量就是:120次。
? 3)利用搜索引擎缓存(Google,Bing,百度)。“曲线救国”策略,绕过目标服务器,从搜索引擎的缓存进行采集。而且缓存里的页面的结构和原页面是一样的,不用重写提取规则。
? 4)谷歌翻译。让谷歌作为我们的“代理”,将源语言和目标语言都设置成一样,这样从谷歌翻译结果获取的数据和原页面就是一样的(注意,HTML结构有很大变化,需要重写提取规则)。
? 5)对于返回无效内容的情况,一定要找到检测内容是否有效的方法,否则很难保证所有数据都是正确的。

原文地址:https://blog.51cto.com/14400115/2421496

时间: 2024-10-01 21:53:41

如何突破网站反爬机制的相关文章

Python爬虫|深入请求(四)常见的反爬机制以及应对方法

作者:David Qian 链接:https://zhuanlan.zhihu.com/p/21558661 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 大家好!我是厦门大学王亚南经济研究院的大一学生,今天将由我来为大家介绍一下常见的反爬机制以及应对方法. 注:非商业转载注明作者即可,商业转载请联系作者授权并支付稿费.本人已授权"维权骑士"网站(http://rightknights.com)对我在知乎发布文章的版权侵权行为进行追究与维权. ---

常见的反爬机制及应对策略

1.Headers: 从用户的headers进行反爬是最常见的反爬策略,Headers是一种最常见的反爬机制Headers是一种区分浏览器行为和机器行为中最简单的方法,还有一些网站会对Referer (上级链接)进行检测 从而实现爬虫. 相应的解决措施:通过审查元素或者开发者工具获取相应的headers 然后把相应的headers 传输给python 的requests,这样就能很好地绕过. 2.IP 限制 一些网站会根据你的IP 地址访问的频率,次数进行反爬.也就是说如果你用单一的IP 地址访

python爬虫---CrawlSpider实现的全站数据的爬取,分布式,增量式,所有的反爬机制

CrawlSpider实现的全站数据的爬取 新建一个工程 cd 工程 创建爬虫文件:scrapy genspider -t crawl spiderName www.xxx.com 连接提取器LinkExtractor 可以根据指定的规则对指定的连接进行提取 提取的规则就是构造方法中的allow('正则表达式')参数决定 规则解析器Rule 可以将将连接提取器提取到的连接进行请求发送,可以根据指定的规则(callback)对请求到的数据进行解析 follow=True:将连接提取器 继续作用到

反爬机制及反反爬策略

1.UA检测 UA,即 User-Agent,是HTTP请求头部信息的一个属性,它是用户访问网站时的浏览器标识,可以通过审查元素或者开发者工具中看到.一些网站通过检测UA从而确定请求的对象是脚本程序还是正常的用户通过浏览器请求,实现反爬虫的目的. 反反爬策略:构造自己的UA池,使得每次用程序向网站发请求时都随机带上正常的UA标识,更好的模拟浏览器行为.有些网站还会有反爬时间或者频率的限制,因此,最好可以再设置一个 timeout ,最好是随机休眠,Python中可以使用 time.sleep()

Python爬虫实践 —— 1.对反爬机制的认识

51zxw发布了一个新课程,是今年二月份的,现在总算是辞职空下来时间了,想着学习下爬虫吧,反正学了也不亏.爬虫算是最简单的东西了,爬虫背靠数据挖掘.数据分析和机器学习,与大数据和AI相比显得没那么高大上,随便一个程序员都能写一个的小爬虫.可是,在数据封锁隐藏,反爬机制不断深入的今天,如何设计爬虫分布式运行架构.有效高匿的代理池.反封号防屏蔽.清洗存储有效数据.优化爬取策略.结合大数据技术,更有效率有质量地获取数据等等云云,也不是看似那么简单.因为当今世纪,数据即是一切,小小爬虫,一定程度上成为了

被一个无用的网站反爬到自闭--糗事百科

首先第一个问题: 浏览器拿到的数据包和用requests模块拿到的数据不一样. 第二个问题: 访问第二页,却给了第一页的数据.原来可以拿到 可能是多次拿数据之后,他不封ip,只会给第一页.但是我用浏览器还是可以正常访问. 原文地址:https://www.cnblogs.com/changdasheng/p/10241729.html

反爬机制

robots        防君子不防小人 UA伪装      request 设置headers参数 ajax           动态数据json 图片懒加载  src2/origin 数据加密    js代码里面一些function 加密算法 验证码       云打码/超级鹰12306 cookie       session会话 哈希值       xpath element 里面搜索 原文地址:https://www.cnblogs.com/zhangchen-sx/p/108532

使用 mitmdump 进行 selenium webDriver绕过网站反爬服务的方法 pdd某宝 可用

安装:  pip install  mitmproxy 新建一个脚本 脚本代码: 1 from mitmproxy import ctx 2 3 injected_javascript = ''' 4 // overwrite the `languages` property to use a custom getter 5 Object.defineProperty(navigator, "languages", { 6 get: function() { 7 return [&qu

如何处理网站的反爬

做爬虫,碰到最多的问题不是代码bug,而是封IP.开发好一个爬虫,部署好服务器,然后开始抓取信息,不一会儿,就提示封IP了,这时候的内心是崩溃的.那么,有什么办法不封IP呢?首先,要知道为什么会封IP,这样才能更好的避免封IP.有些网站反爬措施比较弱,伪装下IP就可以绕过了,修改X-Forwarded-for就万事大吉.但现在这样的网站比较少了,大部分的网站的反爬措施都在不断加强,不断升级,这给避免封IP带来更大的困难.有人说,使用代理IP就万事大吉了.诚然,使用大量的优质代理IP可以解决大部分