gpt4 book ai didi

python - 在请求库中关闭代理

转载 作者:太空宇宙 更新时间:2023-11-04 00:51:32 25 4
gpt4 key购买 nike

我一直在一些 Python 代码中使用 requests 库,我需要一些帮助来驾驭公司代理服务器的浑水。

考虑以下代码:

response = requests.get(url, proxies={...})

到目前为止一切都很好。 requests 调用使用传递给它的代理。

在下一个示例中,requests 使用环境变量 HTTP_PROXYHTTPS_PROXY 中定义的代理:

response = requests.get(url)

(proxies 参数默认为 None,这会触发它去查看环境变量。)

我想做的是一些不同的东西。我想保留环境变量,因为它们对于我使用的其他应用程序是必需的。但我希望请求不要使用代理。我试过:

response = requests.get(url, proxies={})

但是 requests 仍然关闭并获取环境变量代理。如果不取消设置我的环境变量,我似乎无法阻止它这样做。

有什么想法吗?

最佳答案

设置trust_env variable on the sessionFalse。如果不是真的(True 是默认值),来自环境的代理信息将被完全忽略:

session = requests.Session()
session.trust_env = False
response = session.get(url)

这也会禁用 .netrc authentication支持。如果您仍然需要它,那么我可以看到您还有两个选项:

  • 添加一个NO_PROXY环境变量;设置为 * 意味着根本不应该使用代理。您可以通过直接在 os.environ 字典中设置键来完成此操作。

  • 只需从 os.environ 中删除代理 key 即可。

    考虑到在 OSX 和 Windows 上,Python 也会在系统配置中查找代理(因此 Windows 上的注册表和 Mac OS X 上的 SysConf)。

改变 os.environ 是安全的。它是一个普通的字典,在你的程序中添加或删除键是可以的,父shell环境不会被改变。

关于python - 在请求库中关闭代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36906985/

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