如何确定urllib2已经通过给定的代理查询了内容?

时间:2011-07-09 07:55:12

标签: python proxy metadata urllib2

我想出了如何使用urllib2代理:

encoded_params = urllib.urlencode(params)
url = "http://someurl.com"

header = {"User-Agent" : "Mozilla/5.0 (X11; U; Linux i686) Gecko/20071127 Firefox/2.0.0.11"}
proxy = urllib2.ProxyHandler({'http': '193.33.125.217:8080'})
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)

request = urllib2.Request(url, headers=header)
response = urllib2.urlopen(request)

我希望代码是正确的。也许还有一种更优雅的方式?至少它似乎工作到目前为止。是否有类似日志或字典的信息,其中包含我使用urllib2发出的请求的信息?能给我一些关于我使用的代理,参数,查询时的IP,可能是端口和其他元数据的信息吗?

1 个答案:

答案 0 :(得分:1)

据我所知,你正在做的一切正确。一种测试方法是运行一个简单的Web服务器并从您的代理连接到它。制作一个简单的测试Web服务器很简单:

from wsgiref.simple_server import demo_app
from wsgiref.simple_server import make_server

httpd = make_server('0.0.0.0', 8000, demo_app)
print "Serving on port 8000..."
httpd.serve_forever()

假设您可以从运行它的任何地方(不被防火墙等阻止)从外部连接到Web服务器,您应该能够验证代理地址在连接时是否被回显。如果您执行print response.read(),则可以查看各种WSGI environ详细信息。这适用于测试,但不要让服务器永远运行:)