2009-11-16 48 views
1

我使用了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

回答

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

urllib.urlencode曾經打印該消息。該方法從來沒有打到網絡上。你的問題在別的地方。

我想你在後臺運行一些其他的守護進程打印消息。

請提供確切可重複的代碼和信息。觸發消息的代理示例也很好。

+0

把它添加到OP – Fluffy 2009-11-16 11:09:55

+0

抱歉,我現在才注意到,我寫了urlencode而不是urlopen – Fluffy 2009-11-16 11:14:31

1

我適應丹尼斯的代碼一點點這樣的:

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

這將禁用密碼提示共