1

いくつかの http プロキシで urllib.urlopen を使用していますが、(おそらく認証が必要な場合に) コンソールに次のプロンプトが表示されることがあります。

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:43444, 64.79.209.203:34968, 64.79.197.36:43444,209.59.207.197:3438

4

3 に答える 3

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)
于 2009-11-16T15:47:03.553 に答える
1

urllib.urlencodeそのメッセージを印刷することはありませんその方法は、そもそもネットワークにヒットすることはありません。あなたの問題はどこかにあります。

メッセージを出力する他のデーモンをバックグラウンドで実行していると思います。

正確に再現可能なコードとメッセージを提供してください。メッセージをトリガーするプロキシの例も良いでしょう。

于 2009-11-16T10:45:59.420 に答える
1

Denis のコードをこれに少し適応させました。

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

パスワードプロンプトを完全に無効にします

于 2012-04-25T07:33:17.243 に答える