【问题标题】:How to ignore windows proxy settings with python urllib?如何使用 python urllib 忽略 Windows 代理设置?
【发布时间】:2011-02-08 09:03:25
【问题描述】:

我希望 Python 在使用 urllib 时忽略 Windows 代理设置。我设法做到这一点的唯一方法是禁用 Internet Explorer 上的所有代理设置。有什么程序化的方式吗?

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

【问题讨论】:

    标签: python proxy urllib


    【解决方案1】:

    来自 urlib2 documentation: 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 下面的答案对我有用。
    【解决方案2】:

    我无法让请求忽略代理。 这些都不起作用。

    proxies=None or proxies={} 
    

    这确实有效

    proxies={'http':None}
    

    【讨论】:

      【解决方案3】:

      传递给urlopen方法

      proxies={}
      

      或尝试:

      urllib.getproxies = lambda x = None: {}
      

      在 urllib 导入之后(发现信息 here)。

      【讨论】:

      • 请参阅 S.Mark 答案的评论
      • 第二种解决方案确实有效。如文档所述,urllib.getproxies = lambda x = None: {} 应在import urllib 之后添加。
      • 可以确认 proxies={} 在 python3.5 下不起作用,但另一个选项对我有用。
      【解决方案4】:

      根据document,您可以通过,proxies=None 或 proxies={}

      urllib.urlopen(some_url, proxies=None)
      

      【讨论】:

      • 不幸的是,这不起作用。 proxies=some_value 似乎扩展了已知代理列表而不是覆盖它。
      • @Jaú,os.environ['http_proxy']=None 怎么样?
      • 文档说应该是proxies={}
      猜你喜欢
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多