Как проигнорировать запрос “Введите имя пользователя для доступа к частному прокси”?

StackOverflow https://stackoverflow.com/questions/1741360

  •  20-09-2019
  •  | 
  •  

Вопрос

Я использую 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:43444, 64.79.209.203:34968, 64.79.197.36:43444, 209.59.207.197:3438

Это было полезно?

Решение

Вам нужно перезаписать 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)

Другие советы

urllib.urlencode не делает когда - либо распечатайте это сообщение.Этот метод никогда не попадает в сеть в первую очередь.Ваша проблема где-то в другом месте.

Я предполагаю, что вы запускаете какой-то другой демон в фоновом режиме, который печатает сообщение.

Пожалуйста, предоставьте точный воспроизводимый код и сообщение.Пример прокси-сервера, который запускает сообщение, также был бы хорош.

Я немного адаптировал код Дениса к этому:

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

Это полностью отключит запрос пароля

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top