通过代理使用urllib2

2024-09-28 23:30:37 发布

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

我正试图通过代理使用urllib2;然而,在尝试使用urllib2传递验证详细信息的几乎所有变体之后,我要么得到一个永远挂起且不返回任何内容的请求,要么得到407 Errors。我可以使用连接到prox pac并相应重定向的浏览器连接到web fine;但是,我似乎无法通过命令行curlwgeturllib2等执行任何操作,即使我使用prox pac重定向到的代理。我尝试使用urllib2将我的代理设置为pac文件中的所有代理,但都不起作用。

我当前的脚本如下:

import urllib2 as url

proxy = url.ProxyHandler({'http': 'username:password@my.proxy:8080'})
auth = url.HTTPBasicAuthHandler()
opener = url.build_opener(proxy, auth, url.HTTPHandler)
url.install_opener(opener)
url.urlopen("http://www.google.com/")

它抛出了HTTP Error 407: Proxy Authentication Required,我也尝试了:

import urllib2 as url

handlePass = url.HTTPPasswordMgrWithDefaultRealm()
handlePass.add_password(None, "http://my.proxy:8080", "username", "password")
auth_handler = url.HTTPBasicAuthHandler(handlePass)
opener = url.build_opener(auth_handler)
url.install_opener(opener)
url.urlopen("http://www.google.com")

就像是curlwget超时。

我需要做什么来诊断这个问题?我怎么可能通过浏览器而不是通过同一台计算机上的命令行使用看起来相同的代理和凭据进行连接?

可能和路由器有关吗?如果是,它如何区分浏览器HTTP请求和命令行HTTP请求?


Tags: 命令行authhttpurl代理浏览器proxpassword