我遇到了几天这个问题,但不知道如何解决:
假设我必须连接到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>
答案 0 :(得分:0)
您需要指定HTTPS代理:
session.proxies = {'https': 'proxy_url:port'}
然后,该会话可用于访问HTTPS目标,这是当今的所有目标。