关闭请求库

时间:2016-04-28 06:33:31

标签: python proxy python-requests

我在一些Python代码中一直使用requests库,我需要一些帮助来浏览公司代理服务器的阴暗水域。

请考虑以下代码:

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

到目前为止一切顺利。 requests调用使用传递给它的代理。

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

response = requests.get(url)

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

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

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

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

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

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

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

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

  • 添加NO_PROXY环境变量;设置为*表示根本不应使用代理。您可以通过直接在os.environ字典中设置密钥来完成此操作。

  • 只需从os.environ删除代理密钥。

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

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