尝试访问 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 从站点获得授权

解决:python爬取https站点时SNIMissingWarning和InsecurePlatformWarning

访问被拒绝您无权访问 Selenium Python 中的站点 [重复]

站点默认访问https

错误 Bad Request (400),当我访问域上的站点时