通过代理发送HTTP请求

2024-06-23 19:37:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用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 Error 403: Forbidden

代理服务器没问题(我可以在Firefox中使用它)。 此外,我不会看到与我的计算机到目的地址的任何通信(Wireshark)非常奇怪(urllib2如何确定http错误代码?)在

有什么建议吗?在


Tags: installbuildcomhttp代理serverresponsewww
1条回答
网友
1楼 · 发布于 2024-06-23 19:37:44

我相信,你的代码几乎是正确的,你只需要指定你的脚本应该与代理通信的协议。尝试:

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请求更易于阅读的库。在请求中比较上述等效项:

^{pr2}$

相关问题 更多 >

    热门问题