【发布时间】:2021-01-28 05:03:31
【问题描述】:
背景
我有一个应用程序使用请求模块来处理连接到远程网络服务器。这非常有效,但我想使用企业代理服务器在组织内部署它。组织中的机器在操作系统级别配置了代理(即 windows 设置系统代理)。
我希望我的应用自动使用已配置的操作系统代理设置,而不是必须向他们询问信息(尤其是当他们使用基本身份验证时,所以我必须安全地存储用户名/密码,而不仅仅是代理主机/端口)。
问题
如果您自己不直接指定代理,Requests 会自动使用操作系统的代理设置吗?
在阅读了 Request 的文档或底层 urllib3 之后,我找不到明确的答案。
在我的开发机器上,我没有要测试的代理,因此我想在去之前知道答案,并在我的应用程序中编写手动代理处理代码,这实际上可能没有必要......
更多信息
-
作为比较,Urllib 确实这样做了 - 请参阅 https://docs.python.org/3/library/urllib.request.html#urllib.request.ProxyHandler ...如果没有指定代理,它将使用系统配置的代理。
-
如果在我对 Request 文档的初步审查中,它没有使用系统配置,而是仅使用设置了的环境变量:https://2.python-requests.org/en/master/user/advanced/#proxies
-
但是,经过一番挖掘,我找到了一种至少获得操作系统代理配置的方法,使用
urllib.request.getproxies():https://stackoverflow.com/a/16311657/9423009 -
此时我想我至少可以在运行时使用上述内容来获取操作系统代理配置,并将其传递给
requests... -
...但后来我发现了这篇文章,其中指出
requests将在未指定任何内容的情况下使用操作系统级别配置:How to use requests library without system-configured proxies
因此,此时,我在文档中找不到请求或 urllib3 的明确答案,但确实有一个 SO 帖子说明请求将使用操作系统级别配置,通过调用 urllib.requests.getproxies() 本身。
...那么任何人都可以确认/否认这种情况吗?
谢谢!
【问题讨论】:
标签: python-3.x python-requests urllib3