做网络爬虫的工程师不可避免的一个问题就是封IP,限制访问,毕竟要爬取的数据太过庞大,短时间发送的请求太多,会对目标服务器造成过大的压力,因而被限制访问。
爬的慢的话,工作完成不了,爬的快的话,IP被限制,工作同样完成不了?那么这个问题怎么解决呢?经过爬虫工程师们的不懈努力,总结了以下一些解决方案,可以参考下,选择最合理的搭配方法。
一、使用代理IP
代理IP是必须要的,可以自己部署代理服务器,也可以直接购买代理IP,甚至很多人网上爬取免费代理IP,不过效率比较低。
二、伪装IP
有小部分的网站防爬措施比较弱,伪装下IP就可以蒙混过关,修改X-Forwarded-for。但现在大部分的网站的反爬措施都会做,如果爬取的太频繁,还是需要使用代理IP。
三、ADSL+脚本
通过脚本来监测IP是否被封,封了就通过ADSL来切换IP,这样来配合也是可以的。多申请一些线路,分布在不同的地区,不同的IP段,分配好任务,设置好频率。
四、模拟用户行为
尽可能的模拟用户行为,访问的时间间隔长一点,随机时间休眠,访问页面的顺序也随机来访问,看起来一切都那么的自然。
五、userAgent和cookies处理
user-agent 伪装处理,随机轮换,cookies也要处理下,同时设置好访问频率,随机搭配代理IP使用。
六、降低访问频率
考虑到目标服务器的压力,单位时间里不要太疯狂的去抓取数据,导致目标服务器直接宕机。降低抓取频率,模拟浏览器访问,分布式多线程抓取,提高效率又不搞垮目标服务器。