Python requests using a proxy returns 'service not known, socket.getaddrinfo, socket.gaierror: [Errno -2] on a valid url

Python requests using a proxy returns 'service not known, socket.getaddrinfo, socket.gaierror: [Errno -2] on a valid url

错误:

Failed to establish a new connection: [Errno -2] Name or service not known File "///****/lib64/python3.6/site-packages/urllib3/util/connection.py", line 73, in create_connection for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): File "a", line 745, in getaddrinfo for res in _socket.getaddrinfo(host, port, family, type, proto, flags): socket.gaierror: [Errno -2] Name or service not known

这个问题只发生在 Redhat 7 的生产环境中。我在来自不同网络的 ubuntu 上有完全相同的代码 运行,我没有遇到任何问题。一切都很完美。

我的代码调用了 3 个 API。 2 不能在 redhat 上工作,但有一个可以。 我正在使用匿名代理。 另一件奇怪的事情是我可以通过相同的代理远程登录到 redhat 上的所有这些 api,并且它们工作正常。但不是通过请求。

UPDATE: the server is on a corporate network which does not resolve dns. The dns is resolved on the external proxy

对我来说,请求库似乎没有与更新的 dns 解析器或类似的东西通信,但老实说,我对 dns 有点模糊。 我认为 post 编写代码没有任何意义,正如我所说,它在 ubuntu 上运行完美。 只是为了它,我将 post 其中一个电话。 我在用 ... 请求==2.25.1 Python 3.6.12 红帽 7

        HTTP_PROXIES={'http': 'http://xx.xx.xx.xx:8080'}
        headers = {'accept': 'application/json', 'Content-Type': 'application/json',}
        data = json.dumps({"key":list_values})

        response = requests.post('https://someapiaddress.com/', 
        proxies=HTTP_PROXIES, headers=headers, data=data)

任何帮助,非常感谢

最后解决的办法很简单。 一个 api 有效而另一个无效的原因是因为有效的 API 是不安全的 http 而无效的是安全的:https 解决方案是。 而不是...

HTTP_PROXIES={'http': 'http://xx.xx.xx.xx:8080'}

应该是

 HTTP_PROXIES={'http': 'http://xx.xx.xx.xx:8080','https': 'https://xx.xx.xx.xx:8080'}