如何使用python解决网站的反爬虫

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用python解决网站的反爬虫相关的知识,希望对你有一定的参考价值。

1、从用户请求的Headers反爬虫是最常见的反爬虫策略。
伪装header。很多网站都会对Headers的User-Agent进行检测,还有一部分网站会对Referer进行检测(一些资源网站的防盗链就是检测Referer)。如果遇到了这类反爬虫机制,可以直接在爬虫中添加Headers,将浏览器的User-Agent复制到爬虫的Headers中;或者将Referer值修改为目标网站域名[评论:往往容易被忽略,通过对请求的抓包分析,确定referer,在程序中模拟访问请求头中添加]。对于检测Headers的反爬虫,在爬虫中修改或者添加Headers就能很好的绕过。
2、基于用户行为反爬虫
还有一部分网站是通过检测用户行为,例如同一IP短时间内多次访问同一页面,或者同一账户短时间内多次进行相同操作。[这种防爬,需要有足够多的ip来应对]
(1)、大多数网站都是前一种情况,对于这种情况,使用IP代理就可以解决。可以专门写一个爬虫,爬取网上公开的代理ip,检测后全部保存起来。有了大量代理ip后可以每请求几次更换一个ip,这在requests或者urllib中很容易做到,这样就能很容易的绕过第一种反爬虫。
编写爬虫代理:
步骤:
1.参数是一个字典\'类型\':\'代理ip:端口号\'
proxy_support=urllib.request.ProxyHandler()
2.定制、创建一个opener
opener=urllib.request.build_opener(proxy_support)
3a.安装opener
urllib.request.install_opener(opener)
3b.调用opener
opener.open(url)
用大量代理随机请求目标网站,应对反爬虫
参考技术A 在互联网中,有网络爬虫的地方,绝对少不了反爬虫的身影。网站反爬虫的拦截前提是要正确区分人类访问用户和网络机器人,当发现可疑目标时,通过限制IP地址等措施阻止你继续访问。爬虫该如何突破反爬虫限制?

一、构建合理的HTTP请求头
HTTP的请求头是在你每次向网络服务器发送请求时,传递的一组属性和配置信息。由于浏览器和Python爬虫发送的请求头不同,有可能被反爬虫检测出来。

二、设置cookie的学问
Cookie是一把双刃剑,有它不行,没它更不行。网站会通过cookie跟踪你的访问过程,如果发现你有爬虫行为会立刻中断你的访问,比如你特别快的填写表单,或者短时间内浏览大量页面。而正确地处理cookie,又可以避免很多采集问题,建议在采集网站过程中,检查一下这些网站生成的cookie,然后想想哪一个是爬虫需要处理的。

三、正常的时间访问路径
合理控制采集速度,是Python爬虫不应该破坏的规则,尽量为每个页面访问时间增加一点儿间隔,可以有效帮助你避免反爬虫。

四、使用http
对于分布式爬虫和已经遭遇反爬虫的人来说,使用http将成为你的首选。Ipidea分布地区广,可满足分布式爬虫使用需要。支持api提取,对Python爬虫来说再适合不过。
参考技术B

1、仅限制用户IP访问频率

限制IP访问频率通常表现为:当使用本地IP收集速度高于某个频率时,会出现收集错误、页面重定向等。在cookie中存储访问者的IP信息,增加了爬虫的难度。

解决方案:

(1)当cookie中没有IP记录时,需要使用动态短效代理IP/隧道代理IP,根据网站限制IP强度,调整采集速度,购买适当的代理IP,将其设置到ForeSpider爬虫IP代理。

(2)cookie中记录IP时需要使用静态持久代理IP,根据网站的IP限制,调整采集速度,购买适量的代理IP,将其设置到ForeSpider数据采集系统IP代理处。

2、限制用户ID访问

频率限制用户标识通常表现为:收集一段时间后,停止收集/收集错误,浏览器中的页面无法显示(页面重定向、验证码、错误页面等)。)。清空浏览器浏览记录后,可以再次打开并正常显示。

在这个时候,可以查看页面的cookie,以确认服务器是否限制用户ID,当访问页面的cookie中存在UID或其他ID字符串时,表明服务器已识别了该用户ID。还有一种对UID加密的情况,这时cookie中有一串加密后的字符串。

方法:在ForeSpider采集器高级设置中使用多通道采集功能,设置最大登录用户数,设置代理IP(使用静态持久代理IP),通过模拟多用户浏览网站,解决网站ID的局限性。

3、用户IP访问频率

用户ID访问频率的双重限制通常表现为:采集一段时间后,停止采集/采集错误,页面无法显示在浏览器中(页面重定向、验证码、错误页面等)。).清空浏览器浏览记录后,再次打开即可正常显示。

爬虫设置为多通道收集后,收集一段时间后发现知识产权被封存。还可以通过观察页面cookie中是否有IP和UID/UID加密信息来判断。

解决方案:使用ForeSpider数据采集系统的高级设定中的多通道采集功能,同时打开动态IP锁定,设定代理IP(使用静态长期代理IP),设定最大登录用户数,解决网站对帐户的限制

4、限制用户帐户访问频率通常表现为:

网站需要登录,登录后收集的帐户被封存。这种情况一般是由于服务器识别用户账号,并限制用户账号访问频率导致的。

解决方案:注册多个账号,密封后更换;

参考技术C “618ip代理”仅提供国内网络节点,不提供境外网络节点,不能用于任何非法用途,不能访问境外封闭网站、跨境联网,只能提供国内营销或工作使用。
1、给客户提供换ip功能,包含静态线路和动态线路选择
2、提供全国20多个省160多个城市ip地址随意选择
3、提供静态ip.动态ip地址供客户长期使用
4、提供se、pptp、L2tp等模式链接

以上是关于如何使用python解决网站的反爬虫的主要内容,如果未能解决你的问题,请参考以下文章

Python Scrapy反爬虫常见解决方案(包含5种方法)

常见的反爬虫技术有哪些?如何防止别人爬自己的网站?

Python爬虫实例代理的使用

Python爬虫项目实战-爬取猫眼电影

Python3爬虫反反爬之搞定同程旅游加密参数 antitoken

Python爬虫采集遇到403问题怎么办?