我正在使用[使用python]进行网络抓取。

例如,情况是我在server-1后面,并且我使用代理设置连接到外界。因此,在Python中,可以使用代理处理程序来获取URL。
现在的事情是,我正在构建搜寻器,因此我不能仅使用一个IP [否则将被阻止]。为了解决这个问题,我有一堆代理人,我想改组一下。

我的问题是:这是两个级别的代理,一个连接到主服务器1,我使用代理,然后在通过代理进行重排后,我想使用代理。我怎样才能做到这一点?

最佳答案

更新听起来好像您要连接到代理A,然后从那里通过位于A之外的代理B,C,D启动HTTP连接。您可以查看proxychains project,它说它可以“通过用户隧道化任何协议(protocol)定义的TOR,SOCKS 4/5和HTTP代理链”。

3.1版在Ubuntu Lucid中作为软件包提供。如果它不能直接为您服务,proxychains source code可能会提供一些有关如何为您的应用程序实现此功能的见解。

原始答案:
checkout urllib2.ProxyHandler。这是如何使用几个不同的代理来打开URL的示例:

import random
import urllib2

# put the urls for all of your proxies in a list
proxies = ['http://localhost:8080/']

# construct your list of url openers which each use a different proxy
openers = []
for proxy in proxies:
    opener = urllib2.build_opener(urllib2.ProxyHandler({'http': proxy}))
    openers.append(opener)

# select a url opener randomly, round-robin, or with some other scheme
opener = random.choice(openers)
req = urllib2.Request(url)
res = opener.open(req)

10-08 02:07