Python 代码使用代理服务器访问网络遇到连接无法建立的错误

举报
汪子熙 发表于 2025/11/02 21:04:01 2025/11/02
【摘要】 在面对使用 Python 的 requests 库通过代理访问 URL 时遇到的错误,如 Error accessing https://cloud.tencent.com/developer/article/2388638 through proxy: HTTPSConnectionPool(host='cloud.tencent.com', port=443): Max retries ...

在面对使用 Python 的 requests 库通过代理访问 URL 时遇到的错误,如 Error accessing https://cloud.tencent.com/developer/article/2388638 through proxy: HTTPSConnectionPool(host='cloud.tencent.com', port=443): Max retries exceeded with url: /developer/article/2388638 (Caused by ProxyError('Unable to connect to proxy', NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x0000027520A40880>: Failed to establish a new connection: [WinError 10061] No connection could be made because the target machine actively refused it'))), 我们可以通过一系列的诊断和解决步骤来尝试修复这一问题。这个错误表明尝试通过指定的代理服务器连接到目标 URL 时,连接被代理服务器拒绝了。

诊断问题

错误信息表明代理服务器拒绝了连接请求。这可能是由于多种原因造成的,包括但不限于代理服务器配置错误、网络问题、或者代理服务器软件本身的问题。要有效解决这个问题,需要从基础做起,逐步排查可能的原因。

1. 检查代理服务器配置

确保代理服务器的地址、端口和认证信息(如果需要的话)是正确的。如果你在代码中硬编码了代理服务器的配置,应该重新检查这些配置信息是否正确无误。如果使用的是环境变量来配置代理,同样需要确保这些环境变量设置正确。

2. 验证网络连接

确保你的机器可以访问代理服务器。可以使用 ping 或者 telnet 命令来测试代理服务器的地址和端口是否可达。例如,如果代理服务器的地址是 proxy.example.com,端口是 8080,你可以在命令行中运行 telnet proxy.example.com 8080 来检查连接是否成功。

3. 检查代理服务器软件

如果你有权限访问代理服务器,检查代理服务器软件的运行状态。确保代理服务已经启动并且运行正常。如果代理服务器软件有日志功能,查看日志可能会提供连接失败的详细原因。

解决步骤

更新 requests 和 urllib3 库

确保你使用的 requests 库和 urllib3 库是最新版本。旧版本的库可能存在已知的 bugs 或者不兼容的问题。可以使用 pip 来更新这些库:

pip install requests --upgrade
pip install urllib3 --upgrade

使用正确的代理配置格式

在 requests 中使用代理,需要以正确的格式指定代理信息。以下是一个示例:

proxies = {
    'http': 'http://your_proxy_address:proxy_port',
    'https': 'https://your_proxy_address:proxy_port',
}

response = requests.get('https://cloud.tencent.com/developer/article/2388638', proxies=proxies)

确保替换 your_proxy_addressproxy_port 为你的代理服务器的实际地址和端口。

考虑绕过代理

如果你的目标是访问公开的互联网资源,而你的网络环境允许直接访问(不通过代理服务器),可以尝试暂时移除代理配置来验证问题是否确实与代理相关。

使用高级代理配置

requests 库允许进行更为详细的代理配置,包括使用 SOCKS 代理等。如果你的场景需要这些高级功能,可以考虑使用 requests[socks] 这个额外的依赖项来支持 SOCKS 代理:

pip install requests[socks]

然后在代码中配置 SOCKS 代理,例如:

proxies = {
    'http': 'socks5://your_proxy_address:proxy_port',
    'https': 'socks5://your_proxy_address:proxy_port',
}

response = requests.get('https://cloud.tencent.com/developer/article/2388638', proxies=

proxies)

结语

解决通过代理访问 URL 时遇到的连接问题,需要系统地检查和排除各种可能的原因。从检查基本的代理服务器配置开始,到确保网络连接的有效性,再到使用最新版本的依赖库,每一步都是确保能够顺利通过代理服务器访问外部资源的关键。在这个过程中,耐心和细致是解决问题的重要因素。希望以上提供的方法能够帮助你解决遇到的问题。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。