带有 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 请求模块无法与代理一起使用

Python_01_IP代理池_实现代理池的校验模块

python接口自动化43- 使用代理proxies 发送请求

Python爬虫笔记(二)requests模块get,post,代理