是这样的,去年写爬虫,被 IP 问题困扰,于是就想写个程序来自动处理代理 IP 的问题。
具体来说思路是这样的:
- 提供一个 TCP 服务端,用来接受爬虫发出的请求。
- 维护一个代理池,池中存放可用的代理地址。
- 服务端接收到爬虫的请求后,从代理池中随机选择一个可用代理,然后进行请求转发。
- 代理服务器返回数据后,再将数据返回给爬虫。
后来我就撸了个隧道代理程序,这个程序自动从某些提供代理的网页上获取可用代理,验证可用后放入代理池。
昨天我又重新改造了下,实现了简单的插件机制,试了下其实效果还可以的。不过质量还是受限于代理池中代理的质量。
发上来一方面是想求几个 star。 另一方面是想看看别人的想法,有没有其他质量更高的获取代理的方案。
项目地址:
https://github.com/daoye/goudan
https://github.com/daoye/goudan_plugins
具体用法就是
- 启动 main.py ,然后默认会监听本地 0.0.0.0:1991,1992,1993,1994 端口,这四个端口分别对应 http,https,socks4,socks5 协议类型的代理。
- 在爬虫程序上设置代理地址为: http://ip:1991 或 sock5:ip:1994 ... 就可以了。