我正在尝试使用requests
库从公司网络内部的服务器中获取一些数据。我正在使用VPN进入公司的网络,并且还建立了公司代理。我尝试访问的地址仅在该公司网络内可见。
import requests
url = "http://some.private.server.net"
r = requests.get(url)
我的环境中同时设置了HTTP_PROXY和HTTPS_PROXY。我正在运行Windows 7。
我从此代码中收到错误502。当我物理地连接到公司网络时,它就起作用了,所以我认为问题在于通过VPN而不是通过代理进行连接。我可以使用网络浏览器访问该地址。
我对网络了解不多,但是我尝试将请求的源地址更改为VPN网络适配器使用的IP地址。
import requests
from requests_toolbelt.adapters.source import SourceAddressAdapter
s = requests.Session()
ip = "y.y.y.y"
s.mount('http://', SourceAddressAdapter(ip))
s.mount('https://', SourceAddressAdapter(ip))
url = "http://some.private.server.net"
response = s.get(url)
这仍然导致与上述相同的错误(502)。
编辑:更仔细地看502错误,代理服务器返回消息“您正在寻找的页面的主机名不存在”。
因此,我尝试将URL替换为尝试访问的服务器的IP地址,但由于“网关超时”而得到502。
我可以从命令行ping该IP没问题。
最佳答案
具有讽刺意味的是,问题是我不需要使用代理来访问该服务器。你可以这样
import requests
s = requests.Session()
s.trust_env = False
url = "http://some.private.server.net"
response = s.get(url)