Requests报”requests.exceptions.ProxyError: {proxy error message} “的原因以及解决办法

  • Post category:Python
  1. 问题原因

该错误通常意味着连接到代理服务器时出现了问题,可能是由于以下原因导致的:

  • 代理服务器连接不上。
  • 建立连接超时。
  • DNS解析失败。
  • 代理服务器返回失败的响应。

出现以上任一情况,Requests 都会抛出 requests.exceptions.ProxyError异常。

  1. 解决办法

以下是一些解决 ProxyError 的方法:

2.1 禁用代理

如果你确定你的代理设置是正确的,你也可以尝试禁用代理,以便查看问题是否由代理引起。使用 Requests 的proxies参数将代理设置为空值即可禁用代理。

import requests

proxies = {
    "http": "",
    "https": "",
}

url = "http://example.com"

response = requests.get(url, proxies=proxies)

print(response.content)

2.2 更换代理

如果你的代理服务器在运行,但你不能连接到它,你可以尝试更换代理,然后测试一下连接是否能够建立。

import requests

proxies = {
    "http": "http://new-proxy-url:port",
}

url = "http://example.com"

response = requests.get(url, proxies=proxies)

print(response.content)

2.3 延长超时时间

默认情况下,Requests 的连接和读取超时时间都是 10 秒。如果连接速度较慢,可以将超时时间增加。在 requests.get() 方法中使用 timeout 参数,其中包含两个值,分别是连接超时时间和读取超时时间。例如:

import requests

url = "http://example.com"

response = requests.get(url, timeout=(5, 15))

print(response.content)

上述代码中,连接超时时间是5秒,读取超时时间是15秒。

2.4 检查网络连接

首先,请确保你的计算机能够正常连接到网络。可以通过 ping 命令或 traceroute 命令来确认网络连接:

ping google.com
traceroute google.com

如果你发现你的网络连接有问题,请尝试修复网络连接或与网络管理员联系。

  1. 总结

通过禁用代理,更换代理,延长超时时间或检查网络连接等方法,可以解决 requests.exceptions.ProxyError 报错。如无法解决问题,可以进一步了解报错原因,或使用其他网络请求库进行测试。