方法1.
由于之前公司项目的需要,我们收集了谷歌地图数据和一些大型网站数据。
经验如下:
1.必须要IP,就像@alswl说的很对,ADSL。有条件的话,其实可以跟机房申请外部IP。
2.在具有外部IP的机器上部署代理服务器。
3.你的程序,用轮训代替代理服务器访问你要收藏的网站。
好处:
1.程序逻辑变化小,只需要代理函数。
2.根据对方网站不同的屏蔽规则,你只需要多加几个代理就可以了。
3.即使特定IP被屏蔽了,直接注销代理服务器就OK了。程序逻辑不需要改变。方法2.
有少数网站防范意识薄弱。可以伪装IP,修改X-Forwarded-for(好像是这个法术)。)可以绕过。
大部分网站,如果要经常抓取,通常需要更多的IP。我的首选方案是国外VPS搭配多个IP,通过默认网关切换实现IP切换,比HTTP代理效率高很多,估计大多数情况下也比ADSL切换效率高。方法3.
ADSL脚本,监控是否被屏蔽,然后不断切换ip
设置查询频率限制
正统的方式是调用这个网站提供的服务接口。方法4.
8年以上爬虫经验的人告诉你,国产ADSL才是王道。最好申请更多的线路,分布在多个不同的电信区域局。最好是跨省市。自己写断网重拨组件,自己写动态IP追踪服务,重置远程硬件(主要针对ADSL猫防止其停机),分配其他任务,恢复数据,问题不大。我的已经稳定运行好几年了,妥妥的!方法5.
1用户代理伪装和轮换
2使用代理ip和轮换
3 cookies处理,部分网站对登录用户的政策更宽松。
友情提示:考虑爬虫给别人网站带来的负担,做一个负责任的爬虫3360)方法6.
尽可能模拟用户行为:
1.用户代理经常改变;
2.将访问时间间隔设置得更长,并将访问时间设置为随机数;
3.访问页面的顺序也可以随机来到方法8.。
网站屏蔽一般是根据单位时间内对特定IP的访问次数。
我把收集的任务按照目标站点的IP分组,通过控制每个IP在单位时间内发送的任务数量来避免被阻塞。当然这个前提是你收集了很多网站。如果只收藏一个网站,只能通过多个外部IP来实现。方法9.
1、控制履带的压力;
2.可以考虑使用代理访问目标站点。
-降低捕获频率,设置更长的时间,并使用随机数作为访问时间。
-频繁切换用户代理(模拟浏览器访问)
-多页数据,随机访问然后抓取数据
-更改用户IP