python

导航

如何解决python反爬虫限制访问?

来源 :中华考试网 2020-11-24

  单台机器,单个IP大家都明白,短时间内访问一个网站几十次后肯定会被屏蔽的。每个网站对IP的解封策略也不一样,有的1小时候后又能重新访问,有的要一天,有的要几个月去了。

  突 破抓取频率限制有两种方式,一种是研究网站的反爬策略。有的网站不对列表页做频率控制,只对详情页控制。有的针对特定UA,referer,或者微信的H5页面的频率控制要弱很多。

  另一种方式就是多IP抓取。

  多IP抓取又分IP代理池和adsl拨号两种,我这里说adsl拨号的方式,IP代理池相对于adsl来说,我觉得收费太贵了。要稳定大规模抓取肯定是要用付费的,一个月也就100多块钱。adsl的特点是可以短时间内重新拨号切换IP,IP被禁止了重新拨号一下就可以了。这样你就可以开足马力疯狂抓取了,但是一天只有24小时合86400秒,要如何一天抓过百万网页,让网络性能最大化也是需要下一些功夫的,后面我再详说。至于有哪些可以adsl拨号的野云主机,你在百度搜"vps adsl",能选择的厂商很多的。大多宣称有百万级IP资源可拨号,我曾测试过一段时间,把每次拨号的IP记录下来,有真实二三十万IP的就算不错了。 选adsl的一个注意事项是,有的厂商拨号IP只能播出C段和D段IP,110(A段).132(B段).3(C段).2(D段),A和B段都不会变,靠C,D段IP高频次抓取对方网站,有可能对方网站把整个C/D段IP都封掉。C/D段加一起255X255就是6万多个IP全都报废,所以要选拨号IP范围较宽的厂商。 这些都是野云主机,质量和稳定性本就没那么好。只有多试一试,试的成本也不大,买一台玩玩一个月也就一百多元,还可以按天买。

  上面为什么说不用付费的IP代理池?

  因为比adsl拨号贵很多,因为全速抓取时,一个反爬做得可以的网站10秒内就会封掉这个IP,所以10秒就要换一个IP,理想状况下一天86400秒,要换8640个IP。如果用付费IP代理池的话,一个代理IP收费4分钱,8640个IP一天就要345元。 adsl拨号的主机一个月才100多元。adsl拨号Python代码怎么拨号厂商都会提供的,建议是用厂商提供的方式,这里只是示例:windows下用os调用rasdial拨号:

  import os

  # 拨号断开

  os.popen('rasdial 网络链接名称 /disconnect')

  # 拨号

  os.popen('rasdial 网络链接名称 adsl账号 adsl密码')

  linux下拨号:

  import os

  # 拨号断开

  code = os.system('ifdown 网络链接名称')

  # 拨号code = os.system('ifup 网络链接名称')

  关于应对python反爬虫的办法,网络上的解决也是五花八门,这里小编分享了自己的一些理解,希望能对一些有需要的小伙伴有所帮助,更多方法我们也可以不断交流。

分享到

您可能感兴趣的文章