Python使用代理为https请求请求API获取需要407代理身份验证

时间:2015-12-01 17:07:08

标签: python proxy python-requests

我一直在努力使用我的公司代理来发出https请求。

import requests
from requests.auth import HTTPProxyAuth

proxy_string = 'http://user:password@url_proxt:port_proxy'

s = requests.Session()
s.proxies = {"http": proxy_string , "https": proxy_string}
s.auth = HTTPProxyAuth(user,password)

r = s.get('http://www.google.com') # OK
print(r.text)
r = s.get('https://www.google.com',proxies={"http": proxy_string , "https": proxy_string}) #OK
print(r.text)
r = s.get('https://www.google.com') # KO
print(r.text)

当KO时,我有以下例外:

HTTPSConnectionPool(host='www.google.com', port=443): Max retries exceeded with url: / (Caused by ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 407 Proxy Authentication Required',)))

我在网上查了一下,但没有找到有这个特定问题的人。

感谢您的时间

3 个答案:

答案 0 :(得分:4)

感谢Lukasa的出色帮助,我解决了我的问题。

请在此处查看有关修复的讨论: https://github.com/kennethreitz/requests/issues/2911

或设置:

session.trust_env=False

答案 1 :(得分:1)

我个人通过更新环境变量http_proxy,https_proxy,socks_proxy,ftp_proxy解决了我系统上面的问题。

首先在终端上输入命令:printenv

这应该显示系统上的环境变量。

在我的情况下: HTTP_PROXY = http://proxyserver:port/

我将其更改为:http_proxy = http://username:password@proxy:port/

使用命令 export http_proxy =" http:// username:password @ proxy:port /"

类似于https_proxy,socks_proxy,ftp_proxy

答案 2 :(得分:1)

我已解决的其他方式是 - 与您的公司IT管理员联系并找到连接到外部域的直接代理端口(带/不带密码)

pip install --proxy = http://proxyhost proxy_port pixiedust

在其日食设置(网络)中使用代理(proxy_port直接连接)从其他同事那里找到