如何使用Python urllib忽略Windows代理设置?

6

我希望Python在使用urllib时忽略Windows代理设置。我唯一能做到的是在Internet Explorer上禁用所有代理设置。有没有编程的方法?

os.environ['no_proxy']不是一个好选择,因为我想避免对所有地址使用代理。

4个回答

3

传递给 urlopen 方法

proxies={}

或者尝试以下方式:

urllib.getproxies = lambda x = None: {}

在urllib导入之后(信息可在这里找到)。


请查看S.Mark的答案评论。 - mcrisc
第二个解决方案确实有效。并且应该在import urllib之后添加urllib.getproxies = lambda x = None: {},就像文档中所说的那样。 - Nancy
可以确认proxies={}在Python3.5下不起作用,但另一种选项对我有用。 - DelboyJay

3

根据urllib2的文档:Class urllib2.ProxyHandler([proxies]) ... 要禁用自动检测代理,请传递一个空字典。

所以我们想要做的是这样:

import urllib2
proxy = urllib2.ProxyHandler({}) # Pass empty dictionary to bypass proxy
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
socket = urllib2.urlopen('http://www.google.com')
content = socket.read() 

这在我的 Python 3.5 上没有起作用。我尝试使用 urllib.request 替换 urllib2,因为库已更改,代码确实运行了,但在执行 urlopen 时仍然尝试连接代理。systempuntoout 在下面的答案对我有用。 - DelboyJay

1
根据文档,你可以传递proxies=None或proxies={}。
urllib.urlopen(some_url, proxies=None)

不幸的是,这样做不起作用。proxies = some_value 似乎是扩展已知代理列表,而不是覆盖它。 - mcrisc
@Jaú,os.environ ['http_proxy'] = None 怎么样? - YOU
文档中说应该是 proxies={} - wOxxOm

0

我在请求中遇到了忽略代理的问题。 这些方法都没有起作用。

proxies=None or proxies={} 

这确实有效

proxies={'http':None}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接