Python请求,HTTPS代理身份验证<407需要代理身份验证>

时间:2020-01-08 09:23:12

标签: python authentication proxy python-requests squid

我遇到了几天这个问题,但不知道如何解决: 假设我必须连接到https://targetwebsite.com,该服务器只能通过具有身份验证的代理服务器访问,并且我想向该网站发出python请求。 到目前为止,我所做的是:

import requests
from requests.auth import HTTPProxyAuth

session = requests.Session()
session.proxies = {'http': 'proxy_url:port'}
session.auth = HTTPProxyAuth('proxy_username', 'proxy_password')
session.get('https://targetwebsite.com')
>> <Response [404]>

它不使用代理,实际上,如果我尝试通过API获取IP,结果是我取回了我当前的IP地址,而不是代理的IP。

...
session.get('https://api.ipify.org/?format=json')
>> <Response [200]>
>> {"ip":"XXX.XXX.XXX.XX"} // IP address of my machine

但是,如果我通过http向同一个网站提出请求,那么它会起作用:

session.get('http://targetwebsite.com')
>> <Response [200]>

我不得不说我使用的是我创建的代理服务器,它通过Squid托管在树莓派上,所以也许我在配置它时错了,但是我不认为这是问题所在,因为当我在Firefox中使用具有相同凭据的相同代理,我也可以通过https访问网站。

正如有人建议的那样,我也尝试了不同的配置,并得到以下结果:

...
session.proxies = {'http': 'proxy_url:port', 'https': 'proxy_url:port'}
session.get('https://targetwebsite.com')
>> <407 Proxy Authentication Required>
...
session.proxies = {'https': 'proxy_url:port'}
session.get('https://targetwebsite.com')
>> <407 Proxy Authentication Required>

1 个答案:

答案 0 :(得分:0)

您需要指定HTTPS代理:

session.proxies = {'https': 'proxy_url:port'}

然后,该会话可用于访问HTTPS目标,这是当今的所有目标。