открытие сайтов с использованием urllib2 из-за корпоративного брандмауэра - 11004 getaddrinfo не удалось - PullRequest
5 голосов
/ 31 января 2011

Я пытаюсь получить доступ к веб-сайту из-за корпоративного брандмауэра, используя ниже: -

password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
password_mgr.add_password(None, url, username, password)
auth_handler = urllib2.HTTPBasicAuthHandler(password_mgr)
opener = urllib2.build_opener(auth_handler) 
urllib2.install_opener(opener) 
conn = urllib2.urlopen('http://python.org')

Получение ошибки

URLError: <urlopen error [Errno 11004] getaddrinfo failed>

Я пробовал с различными обработчиками (пробовал ProxyHandler также немногопо-другому), но, похоже, не работает.

Есть ли какие-либо подсказки о том, что может быть причиной ошибки, и какие-либо другие способы предоставления учетных данных и обеспечения их работы?

Ответы [ 2 ]

5 голосов
/ 31 января 2011

Если вы используете прокси и этот прокси имеет имя пользователя и пароль (которые есть у многих корпоративных прокси), вам нужно установить обработчик прокси с помощью urllib2.

  proxy_url = 'http://' + proxy_user + ':' + proxy_password + '@' + proxy_ip
  proxy_support = urllib2.ProxyHandler({"http":proxy_url})
  opener = urllib2.build_opener(proxy_support,urllib2.HTTPHandler)
  urllib2.install_opener(opener)

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

4 голосов
/ 25 июня 2012

В Windows я заметил, что python использует настройки IE Internet Options-> LAN Settings. Поэтому, даже если мы используем urllib2 для установки открывателя и указываем proxy_url, он будет продолжать использовать настройки IE.

Наконец-то все заработало, когда я экспортировал системную переменную:

http_proxy=http://userid:pswd@proxyurl.com:port
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...