如何忽略“输入私人代理访问的用户名”提示?

时间:2009-11-16 10:39:47

标签: python proxy urllib

我正在使用urllib.urlopen和一些http代理,有时候(可能在他们需要授权时)我将以下提示打印到控制台:

Enter username for Private Proxy Access (country) at xxx.xxx.xxx.xxx:xxxx

如何针对此类事件提出异常?

以下是示例:

from urllib import urlopen

p = '64.79.209.238:36867'
print urlopen('http://google.com', proxies={'http': 'http://'+p})

如果提到的代理过早死亡,以下是一些替代64.79.197.36:4344464.79.209.203:3496864.79.197.36:43444209.59.207.197:3438

3 个答案:

答案 0 :(得分:2)

您需要覆盖FancyURLopener.prompt_user_passwd方法:

class AuthorizationRequired(Exception):

    pass


class MyURLOpener(urllib.FancyURLopener):

    def prompt_user_passwd(self, host, realm):
        raise AuthorizationRequired()


opener = MyURLOpener(proxies={'http': 'http://'+p})
fp = opener.open(url)

答案 1 :(得分:1)

urllib.urlencode 永远打印该邮件。该方法从未首先进入网络。你的问题出在其他地方。

我猜你正在后台运行一些打印消息的守护进程。

请提供完全可重现的代码和消息。触发消息的代理示例也很好。

答案 2 :(得分:1)

我将Denis的代码改编了一下:

import urllib
urllib.FancyURLopener.prompt_user_passwd = lambda *a, **k: (None, None)

它将完全禁用密码提示