尝试访问 HTTPS 站点时,Python 请求模块无法与代理一起使用
Posted
技术标签:
【中文标题】尝试访问 HTTPS 站点时,Python 请求模块无法与代理一起使用【英文标题】:Python requests module not working with Proxy when trying to access HTTPS sites 【发布时间】:2020-09-08 11:47:52 【问题描述】:我正在尝试使用高级代理 IP 连接到使用请求模块的网站,但它不适用于“https”网站。
import requests
from requests.auth import HTTPProxyAuth
auth=HTTPProxyAuth('username','password')
proxies=
'http':'http://xxx.xxx.x.xxx:8080/',
'https':'http://xxx.xxx.x.xxx:8080/'
print(requests.get('https://www.google.com',proxies=proxies,auth=auth).status_code)
抛出以下错误:
raise ProxyError(e, request=request)
requests.exceptions.ProxyError: 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')))
注意:我已经尝试使用各种猴子补丁,这些补丁甚至从 7 年前就建议进行 Digest Auth,但它们似乎都不起作用。
编辑 1:
我没有使用 http://username@password:ip:port/ 格式来使用代理,因为我的用户名包含“@”,这会导致解析错误。
提前致谢:)
【问题讨论】:
【参考方案1】:我觉得你可以用这个
http://username@password:ip:port/
您提到您的密码包含特殊字符
“@”可以替换为“%40”
例如,
“Pass@word”可以替换为“Pass%40word”
如果您的密码中包含更多特殊字符,以下数据可能会有所帮助
'@' = '%40'
'%' ='%25'
'#' = '%23'
'@' = '%40'
':' = '%3a'
';' = '%3b'
'?' = '%3f'
'$' = '%24'
'!' = '%21'
'/' = '%2f'
'\' = '%27'
'"' = '%22'
【讨论】:
以上是关于尝试访问 HTTPS 站点时,Python 请求模块无法与代理一起使用的主要内容,如果未能解决你的问题,请参考以下文章
我想向ASP站点发送一个Python请求,但该站点显示访问被拒绝
解决:python爬取https站点时SNIMissingWarning和InsecurePlatformWarning