如何在Python中使用两级代理设置?

Nis*_*arg 5 python web-crawler

我正在使用web-crawler [使用python].

例如,情况是我在服务器1后面,我使用代理设置连接到外部世界.所以在Python中,使用代理处理程序我可以获取URL.现在的事情是,我正在构建一个爬虫,所以我不能只使用一个IP [否则我将被阻止].为了解决这个问题,我有一堆代理,我想要洗牌.

我的问题是:这是两级代理,一个连接到主服务器-1,我使用代理,然后通过代理后洗,我想使用代理.我怎样才能做到这一点?

sam*_*ias 6

更新听起来好像你正在寻找连接到代理A并从那里通过A之外的代理B,C,D启动HTTP连接.你可能会查看代理链项目,它说它可以"通过用户隧道传输任何协议 -定义的TOR链,SOCKS 4/5和HTTP代理".

版本3.1在Ubuntu Lucid中作为一个包提供.如果它不能直接为您工作,则代理链源代码可以提供有关如何为您的应用实现此功能的一些信息.

原始答案:查看urllib2.ProxyHandler.以下是如何使用多个不同代理打开网址的示例:

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)
Run Code Online (Sandbox Code Playgroud)