我一直在努力使用我的公司代理来发出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',)))
我在网上查了一下,但没有找到有这个特定问题的人。
感谢您的时间
答案 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直接连接)从其他同事那里找到