通过代理服务器发送HTTP请求

时间:2014-06-06 15:06:45

标签: python proxy

我尝试使用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错误代码?)

有什么建议吗?

1 个答案:

答案 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