gpt4 book ai didi

python - 通过代理使用 urllib2

转载 作者:可可西里 更新时间:2023-11-01 16:30:43 25 4
gpt4 key购买 nike

我正在尝试通过代理使用 urllib2;但是,在尝试使用 urllib2 传递我的验证详细信息的几乎所有变体之后,我要么收到一个永远挂起且不返回任何内容的请求,要么收到 407 错误。我可以使用连接到 prox-pac 并相应地重定向的浏览器正常连接到网络;但是,我似乎无法通过命令行 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 请求?

最佳答案

像这样的挫败感促使我使用 Requests .如果您正在使用 urllib2 进行大量工作,那么您真的应该检查一下。例如,要使用 Requests 做您想做的事情,您可以这样写:

import requests
from requests.auth import HTTPProxyAuth

proxy = {'http': 'http://my.proxy:8080'}
auth = HTTPProxyAuth('username', 'password')
r = requests.get('http://wwww.google.com/', proxies=proxy, auth=auth)
print r.text

或者您可以将它包装在一个 Session 对象中,并且每个请求都会自动使用代理信息(另外它会自动存储和处理 cookie!):

s = requests.Session(proxies=proxy, auth=auth)
r = s.get('http://www.google.com/')
print r.text

关于python - 通过代理使用 urllib2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14928385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com