带有 Python 请求模块的代理
Posted
技术标签:
【中文标题】带有 Python 请求模块的代理【英文标题】:Proxies with Python Requests module 【发布时间】:2022-01-19 15:42:57 【问题描述】:我尝试将代理与请求库一起使用
import requests
proxies = 'https': 'http://xxx.xxx.xxx.xx:yyyy',
'http': 'http://xx.xxx.xxx.xxx:yyyy'
r = requests.get('https://www.instagram.com', proxies=proxies)
print(r.status_code)
遇到了这个问题:
requests.exceptions.ProxyError: HTTPSConnectionPool(host='www.wikipedia.org', port=443): Max retries exceeded with url: / (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x0000013CB6D8D610>: Failed to establish a new connection: [WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond')))
我研究了许多不同的网站和解决此问题的方法,但没有任何帮助。 然后我开始问问题:“代理是如何工作的”,“如何选择代理?”。 对于我的项目,我需要几个(甚至可能是几十个不同的代理),所以购买不是我的选择。 (我使用了公共代理,纠正我, 如果可以购买一个代理或***帐户,那么它不是一个永久代理地址,而是许多不同的)
此外,在寻找答案的过程中,我遇到了程序对更改计算机上 Internet 源的奇怪反应(在我看来)。从路由器、公共 wi-fi 和移动互联网得到不同的错误结果。这怎么可能?
【问题讨论】:
【参考方案1】:你应该试试这个
你的代码
proxies = 'https': 'http://xxx.xxx.xxx.xx:yyyy',
'http': 'http://xx.xxx.xxx.xxx:yyyy'
新增(删除代理字典中的 http 和 https 前缀)
proxies = 'https': 'xxx.xxx.xxx.xx:yyyy',
'http': 'xx.xxx.xxx.xxx:yyyy'
我也遇到过类似的错误,一般是HTTPS验证出错,可以试试加参数Verify = False
r = requests.get('https://www.instagram.com', proxies=proxies, Verify=False)
【讨论】:
我试过这个,但是用 verify = False 有同样的错误,当我删除 http 前缀时:requests.exceptions.InvalidURL 错误弹出:代理 URL 没有方案,应该以 http 开头: // 或 https://以上是关于带有 Python 请求模块的代理的主要内容,如果未能解决你的问题,请参考以下文章
即使 curl 工作,带有代理 407 状态代码的 Python 请求
尝试访问 HTTPS 站点时,Python 请求模块无法与代理一起使用