繁体   English   中英

Python-requests, HTTPS 代理认证 <407 Proxy Authentication Required>

[英]Python-requests, HTTPS proxy authentication <407 Proxy Authentication Required>

我遇到了这个问题几天,但我不知道如何解决它:假设我必须连接到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>

您需要指定 HTTPS 代理:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM