在网络爬虫中故意旋转和保持IP地址
我不是抓取数据的专家。我有一个小项目,使用Python从一个看起来防守很严的网站抓取数据,我用的是Tor、Privoxy和一个自定义的Python类。虽然在这个过程中遇到了一些问题,但现在它的运行效果出乎意料的好。
有一件事我不太明白。为什么我看到的所有库和代码片段都实现了:
- 在请求达到n次或超过指定时间后更换IP。
- 有机制来管理已使用的IP,在请求达到n次后释放它们。
我的做法是简单地选择一个用户代理(User-Agent),向Tor发送NEWNYM信号,然后抓取数据,直到服务器把我踢出去(比如返回403错误),然后再换一个新的用户代理和IP。这个方法在速度和可靠性上远远超过了前面提到的那些技术。
这可能不是一个仅限于Tor的问题,但在使用Tor时需要特别关注的一些原因包括:出口节点的数量有限,而且NEWNYM信号并不能保证每次都能提供不同的IP地址。
我在使用免费代理时的成功率参差不齐,这个话题我还没深入研究。
我错过了什么呢?
1 个回答
0
如果一个网站没有防爬虫机制,允许你从同一个IP地址发出无数请求,那做1或2的做法就显得有点问题了。每个情况都不一样,所以我建议你根据自己的实际情况来决定怎么做。
如果一个网站在你从同一个IP访问了1,000个不同的网页,或者每分钟查看超过60个页面后开始封锁你的IP,换IP可能会帮助你避免被发现。网站在设置这些规则时,是在猜测爬虫会怎么工作,同时也在猜测你是怎么使用他们的代码的(比如快爬虫和慢爬虫、访问很多页面和少量页面等)。
我觉得不用太担心,继续用适合你情况的方法就行。如果你没有频繁换IP的必要,那就别换。如果他们开始封锁你,那你再考虑换个策略,找个有效的方法。