yongbuyanbai2 发表于 2017-1-19 17:54:14

爬虫访问中通过http代理ip解决网站限制IP

      之前由于公司项目需要,采集过地图数据,还有一些大型网站数据。
      经验如下:
      1.代理IP必须需要, 说的非常正确,ADSL。如果有条件,其实可以跟机房多申请外网IP。
      2.在有外网IP的机器上,部署代理服务器。
      3.你的程序,使用轮训替换代理服务器来访问想要采集的网站。
      好处:
      1.程序逻辑变化小,只需要代理功能。
      2.根据对方网站屏蔽规则不同,你只需要添加更多的代理就行了。
      3.就算具体IP被屏蔽了,你可以直接把代理服务器下线就OK,程序逻辑不需要变化。
      最早是想通过代理,买一些代理IP。
      比如免费的http代理 http://www.xicidaili.com上面提供了很多国内的代理IP服务器地址。可以从这边抓取http代理。
      后来就用ADSL了,这个办法有个不好的地方就是他要断网,再拨号,断网过程爬虫是空跑的,如果你对数据实时性要求特别高,需要好好规划一下程序。
      ADSL另一个不好的地方是服务器厂商似乎都是小作坊,不稳定,找到一个秒拔秒变,又长期稳定的合作伙伴也是很重要的。
      按照你的说法,平均2秒访问一次,即遭封锁代理服务器IP地址,因此只有降低抓取速度,但是又有总量和时间的限制。有个问题:如果我平均2秒多一点访问一次,是否可以永远不被封锁?对方网站的封锁策略你是否都摸透?
按照现有条件,假设封锁条件唯一,那1万页,30分钟,平均一秒种的量是5.56次。
如果不考虑动态调度的话,那你可以设置至少6条线路来完成抓取(更正一下,应该是至少12条线路,时间仓促,计算失误)。
      单线的数据回传照这个条件看起来,代理IP根本没有压力,可以在抓完一页,休息2秒的时间内,完成数据提交。
如果的确是这样的话,你可以考虑用同事家的电脑代理IP,只要开机,运行你的程序即可。适当补贴电费就可以。
如果同事这条路走不通,比较便宜的可以租用阿里云的代理服务器机器,HTTP代理很便宜,WIN 1000多一年,Linux便宜的才几百。(当然我们也遇到过整个云都被封锁的情况,毕竟IP段相对固定)
      终极解决方案就是拉几条电信的ADSL线路代理IP,光纤和电话线都可以,拨号就用CMD方式就可以了。
1000多1年,光纤10M,电话线4M,自己再买几台机器放过去就行了。
      以上仅供参考。


页: [1]
查看完整版本: 爬虫访问中通过http代理ip解决网站限制IP