我有一个python网络爬虫,我想在许多不同的代理服务器之间分发下载请求,可能运行squid(虽然我对替代品开放)。例如,它可以以循环方式工作,其中request1转到proxy1,request2转发到proxy2,最后循环回来。知道如何设置吗?
为了使其更难,我还希望能够动态更改可用代理列表,减少一些代理,并添加其他代理。
如果重要,则动态分配IP地址。
谢谢:)
答案 0 :(得分:14)
我已经使用HAProxy + DeleGate + Multiple Tor实例设置了旋转代理。使用Tor,您无法很好地控制带宽和延迟,但它对于网络抓取非常有用。我刚刚发表了一篇关于这个主题的文章:Running Your Own Anonymous Rotating Proxies
答案 1 :(得分:6)
让您的抓取工具有一个代理列表,并且每个HTTP请求都允许它以循环方式使用列表中的下一个代理。但是,这将阻止您使用HTTP / 1.1持久连接。修改代理列表最终将导致使用新代理或不使用代理。
或者并行打开多个连接,每个代理一个,并将抓取请求分发给每个打开的连接。可以通过让connetor向请求调度程序注册自己来实现动态。
答案 2 :(得分:1)
编辑:甚至还有gimmeproxy的Python包装器:https://github.com/ericfourrier/gimmeproxy-api
如果您不介意Node,可以使用proxy-lists收集公共代理,并check-proxy进行检查。这正是https://gimmeproxy.com的工作原理,更多信息here