代码之家  ›  专栏  ›  技术社区  ›  James Elderfield

Python请求通过VPN提供502坏网关

  •  2
  • James Elderfield  · 技术社区  · 7 年前

    我正试图用 requests 图书馆我正在使用VPN进入我公司的网络,并且还设置了一个公司代理。我试图访问的地址仅在该公司网络中可见。

    import requests
    
    url = "http://some.private.server.net"
    
    r = requests.get(url)
    

    我的环境中同时设置了HTTP\U代理和HTTPS\U代理。我正在运行Windows 7。

    我从这个代码中得到错误502。它在我物理连接到公司网络时起作用,所以我认为问题在于通过VPN而不是代理连接。我可以使用web浏览器访问该地址。

    我对网络了解不多,但我尝试将请求的源地址更改为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,没有问题。

    1 回复  |  直到 7 年前
        1
  •  5
  •   James Elderfield    7 年前

    具有讽刺意味的是,问题是我不需要使用代理来访问此服务器。你可以用,

    import requests
    
    s = requests.Session()
    s.trust_env = False
    
    url = "http://some.private.server.net"
    
    response = s.get(url)