【问题标题】:Why am I getting this error? HTTP Error 407: Proxy Authentication Required为什么我会收到此错误? HTTP 错误 407:需要代理身份验证
【发布时间】:2015-04-23 14:38:05
【问题描述】:

我正在使用帖子中的以下代码,How to specify an authenticated proxy for a python http connection?

import urllib2

def get_proxy_opener(proxyurl, proxyuser, proxypass, proxyscheme="http"):
    password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
    password_mgr.add_password(None, proxyurl, proxyuser, proxypass)

    proxy_handler = urllib2.ProxyHandler({proxyscheme: proxyurl})
    proxy_auth_handler = urllib2.ProxyBasicAuthHandler(password_mgr)

    return urllib2.build_opener(proxy_handler, proxy_auth_handler)

if __name__ == "__main__":
    import sys
    if len(sys.argv) > 4:
        url_opener = get_proxy_opener(*sys.argv[1:4])
        for url in sys.argv[4:]:
            print url_opener.open(url).headers
    else:
        print "Usage:", sys.argv[0], "proxy user pass fetchurls..."

我正在使用我的 wpad.dat 文件中为 argv[1] 指定的代理 ip。 (# 保密)

return "PROXY 138.84.###.###:####";

我将我的用户名和密码用于 argval[2] 和 [3]。当我使用http://google.com 时,它会吐出适当的标头信息。当我使用http://shipcsx.com/pub_sx_mainpagepublic_jct/sx.shipcsxpublic/Main 时,它显示:HTTP 错误 407:需要代理身份验证。

【问题讨论】:

    标签: python proxy urllib2 bots


    【解决方案1】:

    这可能不是 StackExchange 的问题。您可能需要对代理服务器有所了解才能正确排除故障。在没有其他信息的情况下,我会临时猜测 Google 域(或其中的一部分)在代理上被配置为受信任的站点。这允许请求完全绕过代理身份验证。

    【讨论】:

    • 谢谢,这可能就是为什么 Google 可以工作但 ShipCSX 不行的原因。我会争辩说这确实属于 SO,因为我的问题是为什么代码没有正确地对我进行身份验证。我只是添加 Google.com 以获取更多信息。
    • 关于 HTTP 错误的好处是它们通常非常具有描述性,因为它们至少会告诉您在哪里寻找问题。假设您的代理凭据是正确的(我们无法告诉您),下一步是与代理服务器管理员联系以获取更多信息。您的代码看起来非常好,但我们无法告诉您为什么它无法通过身份验证。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 2023-04-02
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-02
    相关资源
    最近更新 更多