常见的反爬虫措施以及解决方法

一、通过 Headers 反爬虫
从用户请求的 Headers 反爬虫是最常见的反爬虫策略。很多网站都会对 Headers 的 User-Agent 进行检测,还有一部分网站会对 Referer 进行检测(一些资源网站的防盗链就是检测 Referer)。如果 遇到了这类反爬虫机制,可以直接在爬虫中添加 Headers,将浏览器的 User-Agent 复制到爬虫的 Headers 中;或者将 Referer 值修改为目标网站域名。对于检测 Headers 的反爬虫,在爬虫中修改或 者添加 Headers 就能很好的绕过。

二、基于用户行为反爬虫
还有一部分网站是通过检测用户行为,例如同一 IP 短时间内多次访问同一页面,或者同一账户短时 间内多次进行相同操作。

大多数网站都是前一种情况,对于这种情况,使用 IP 代理就可以解决。可以专门写一个爬虫,爬取 网上公开的代理 ip,检测后全部保存起来。这样的代理 ip 爬虫经常会用到,最好自己准备一个。有了 大量代理 ip 后可以每请求几次更换一个 ip,这在 requests 或者 urllib2 中很容易做到,这样就能很容 易的绕过第一种反爬虫。

对于第二种情况,可以在每次请求后随机间隔几秒再进行下一次请求。有些有逻辑漏洞的网站,可 以通过请求几次,退出登录,重新登录,继续请求来绕过同一账号短时间内不能多次进行相同请求的限 制。

三、动态页面的反爬虫
上述的几种情况大多都是出现在静态页面,还有一部分网站,我们需要爬取的数据是通过 ajax 请求 得到,或者通过 JavaScript 生成的。首先用 Firebug 或者 HttpFox 对网络请求进行分析。如果能够找 到 ajax 请求,也能分析出具体的参数和响应的具体含义,我们就能采用上面的方法,直接利用 requests 或者 urllib2 模拟 ajax 请求,对响应的 json 进行分析得到需要的数据。

能够直接模拟 ajax 请求获取数据固然是极好的,但是有些网站把 ajax 请求的所有参数全部加密了。 我们根本没办法构造自己所需要的数据的请求。我这几天爬的那个网站就是这样,除了加密 ajax 参数, 它还把一些基本的功能都封装了,全部都是在调用自己的接口,而接口参数都是加密的。遇到这样的网 站,我们就不能用上面的方法了,我用的是 selenium+phantomJS 框架,调用浏览器内核,并利用 phantomJS 执行 js 来模拟人为操作以及触发页面中的 js 脚本。从填写表单到点击按钮再到滚动页面, 全部都可以模拟,不考虑具体的请求和响应过程,只是完完整整的把人浏览页面获取数据的过程模拟一 遍。

用这套框架几乎能绕过大多数的反爬虫,因为它不是在伪装成浏览器来获取数据(上述的通过添加 Headers 一定程度上就是为了伪装成浏览器),它本身就是浏览器,phantomJS 就是一个没有界面的 浏览器,只是操控这个浏览器的不是人。利用 selenium+phantomJS 能干很多事情,例如识别点触式 (12306)或者滑动式的验证码,对页面表单进行暴力破解等等。

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在面对爬虫技术时,Scrapy可以采取一些措施进行爬虫。其中一种方法是通过降低请求频率来模仿人类用户的行为。在Scrapy的配置文件settings.py中,可以设置DOWNLOAD_DELAY参数来指定请求的时间间隔。通过延迟请求,使得爬虫的行为更接近真实用户的访问频率。例如,设置DOWNLOAD_DELAY = 3,表示两次请求之间的间隔为3秒。此外,还可以使用随机延迟时间来避免请求过于规律,进一步增加爬虫被识别的难度。 另一种爬虫措施是修改Scrapy的User-Agent请求头。通过模拟不同的浏览器或设备类型,使得爬虫程序看起来更像是真实的用户在访问网站。这样可以绕过一些简单的爬虫技术,如基于User-Agent的验证。可以在Scrapy的中间件中设置User-Agent的随机切换,或者使用代理IP来发送请求,增加请求的多样性,提高爬虫的成功率。 此外,如果网站使用了robots.txt文件来限制爬虫访问,Scrapy可以通过在配置文件settings.py中取消ROBOTSTXT_OBEY的注释来忽略对robots.txt文件的遵守。这样可以强行爬取站点信息,绕过对爬虫的限制。例如,取消如下代码的注释:ROBOTSTXT_OBEY = False。 综上所述,通过降低请求频率、修改User-Agent请求头以及忽略robots.txt文件,Scrapy可以采取一些爬虫措施来应对网站的爬虫技术。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Python Scrapy爬虫常见解决方案(包含5种方法)](https://blog.csdn.net/qq_30235073/article/details/96073042)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Python scrapy 爬虫入门(七)突破爬虫技术](https://download.csdn.net/download/weixin_38670707/13749305)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值