我尝试使用urllib2通过代理服务器发送http请求,但遗憾的是我无法完成。
proxy_server = {"http":"86.51.26.13:8080"}
proxy = urllib2.ProxyHandler(proxy_server)
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
response = urllib2.urlopen("http://www.whatismyip.com/").read()
print response
我使用上面代码得到的错误是:
urllib2.HTTPError:HTTP错误403:禁止
代理服务器没问题(我可以在Firefox中使用它)。 此外,我不会看到任何与我的计算机通信(Wireshark)到目的地址真的很奇怪(urllib2如何确定http错误代码?)
有什么建议吗?
答案 0 :(得分:0)
我相信,您的代码几乎是正确的,您只需要指定脚本应该与代理进行通信的协议。尝试:
import urllib2
proxy_server = {"http":"http://86.51.26.13:8080"}
proxy = urllib2.ProxyHandler(proxy_server)
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
response = urllib2.urlopen("http://www.whatismyip.com").read()
print response
第一个http指定此代理将处理http请求,但如果您愿意,可以通过代理上的https路由它们。
您可能对此代码感到满意,但我个人更喜欢requests,这是一个使http请求更容易阅读的库。比较请求中的上述等价物:
import requests
proxies = {
"http":"http://86.51.26.13:8080"
}
response = requests.get("http://www.whatismyip.com", proxies=proxies)
print response