此刻的你正在用爬虫程序采集网站公开数据,突然请求失败,提示"拒绝访问"或"连接超时"。你心里一慌,这是怎么回事?别慌,这很有可能是你的IP被目标网站限制了。可能原因是请求频率太快,或者单IP请求次数过多,触发了目标网站的保护机制。那么要怎么恢复爬虫工作呢?
最常用的方法就是使用代理IP,也就是给你的爬虫穿一件"马甲"。代理IP会代替你的真实IP去访问,这样目标网站看到的就是代理IP,而非你的真实IP。虽然使用代理IP请求频率过快,还是避免不了被限制的下场,但是没有关系,封了一个代理IP,还有千千万万个代理IP,换上新的IP继续工作就可以了。
虽然代理IP有很多,但每次封了之后再切换,中间的过程总是会有停顿,不是那么丝滑。当你研究出了目标网站的反爬策略有哪些时,就可以针对性的制定反反爬策略。比如一个IP访问10次,就会被目标网站限制,那么你可以访问9次后就换新的IP。这样不用等IP被限制后再切换IP,可以无缝衔接,更加丝滑的工作了。
网站反爬策略有很多,判断你是否是机器人的策略也有很多,但主要看的是频率和行为。经常有人说,我的访问频率也不快啊,为什么还是被限制了。这有可能是访问行为露出了端倪,比如你总是每隔2秒访问一个网页,一个网页总是访问1秒就完成了。这样有规律的访问行为,很容易被察觉。
除此之外,还有一些基础反爬策略要知道,比如每次访问时,让程序随机变换User-Agent(这就好比换不同的浏览器,比如Chrome、Firefox、Safari等);如有需要,还要带上看似正常的Referer等等。
如果你的反反爬策略都做好了,那么你的爬虫工作将会更加持续稳定的工作。但你还不能掉以轻心,高枕无忧,因为目标网站的反爬策略随时可能升级,因此你也要经常关注你的爬虫状态。最好是有日志记录,哪怕出了问题,也可以通过日志来分析,可以快速定位原因,解决问题。
说到底,想要防止IP被封和恢复爬虫工作,核心就是隐藏自己的身份,模拟正常人访问行为。前者可以避免自己的真实IP被封,后者可以让代理IP工作持久,再通过一定的IP轮换策略,可以让爬虫更加丝滑更加持久稳定的工作。