gpt4 book ai didi

python - 如何使用 urllib2 将经过身份验证的代理异常应用于开启器?

转载 作者:可可西里 更新时间:2023-11-01 14:21:47 25 4
gpt4 key购买 nike

在 Windows 上使用 urllib2(可能还有 urllib)时,python 似乎神奇地获取了应用于 InternetExplorer 的经过身份验证的代理设置。但是,它似乎没有检查和处理高级设置“异常(exception)”列表。

有没有办法让它处理异常(exception)列表?或者,忽略 IE 代理设置并应用我自己的代理开启器来解决这个问题?

我之前尝试过创建一个代理开启器,但无法让它工作。这是我设法挖掘出来的内容,但我仍然不知道如何/在何处应用任何异常(exception),我什至不确定这是否正确:

proxy_info = {
'host':'myproxy.com',
'user':Username,
'pass':Password,
'port':1080
}

http_str = "http://%(user)s:%(pass)s@%(host)s:%(port)d" % proxy_info

authInfo = urllib2.HTTPBasicAuthHandler()
authInfo.add_password()
proxy_dict = {'http':http_str}
proxyHandler = urllib2.ProxyHandler(proxy_dict)

# apply the handler to an opener
proxy_opener = urllib2.build_opener(proxyHandler, urllib2.HTTPHandler)

urllib2.install_opener(proxy_opener)

最佳答案

默认情况下,urllib2 从环境变量中获取代理设置,这就是它使用 IE 设置的原因。这非常方便,因为您不需要自己设置身份验证。

你不能像你想的那样应用异常(exception),最简单的方法是有两个 opener 并根据域是否在你的异常(exception)列表中来决定使用哪一个还是不是。

当你想使用代理时使用默认的opener,当你不需要它时使用没有代理的:

>>> no_proxy = urllib2.ProxyHandler({})
>>> opener = urllib2.build_opener(no_proxy)
>>> urllib2.install_opener(opener)

来自 here .

编辑:

这是我的做法:

exclusion_list = ['http://www.google.com/', 'http://localhost/']

no_proxy = urllib2.ProxyHandler({})
no_proxy_opener = urllib2.build_opener(no_proxy)

default_proxy_opener = urllib2.build_opener()

url = 'http://www.example.com/'

if url in exclusion_list:
opener = no_proxy_opener
else:
opener = default_proxy_opener

page = opener.open(url)
print page

您最大的问题是将 url 与排除列表匹配,但这是一个全新的问题。

关于python - 如何使用 urllib2 将经过身份验证的代理异常应用于开启器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/270983/

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