Подключение к сети не работает с помощью urllib или urllib2 даже после настройки прокси - PullRequest
0 голосов
/ 22 марта 2012

Я не могу открыть URL для чтения () с помощью urllib или urllib2 даже после использования прокси-обработчиков (в случае urllib2) и установки прокси в urllib. Моя сеть, которая использует прокси для подключения к Интернету, имеет прокси (взятые из моего браузера):

HTTP-прокси: someproxy.com Порт: 1080

Я пробовал urllib:

import urllib
myproxies = {'http':'http://someproxy.com:1080'}
data = urllib.urlopen('http://www.google.com', proxies = myproxies).read()

но я получаю эту ошибку:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\urllib.py", line 84, in urlopen
    return opener.open(url)
  File "C:\Python27\lib\urllib.py", line 200, in open
    return self.open_unknown_proxy(proxy, fullurl, data)
  File "C:\Python27\lib\urllib.py", line 219, in open_unknown_proxy
  raise IOError, ('url error', 'invalid proxy for %s' % type, proxy)
IOError: [Errno socket error] [Errno 11001] getaddrinfo failed'

и для urllib2:

import urllib2
proxy = urllib2.ProxyHandler({'http':'http://someproxy.com:1080'})
opener1 = urllib2.build_opener(proxy)
urllib2.install_opener(opener1)
urllib2.urlopen('http://www.google.com')'

Я получаю эту ошибку:

Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
   File "C:\Python27\lib\urllib2.py", line 126, in urlopen
     return _opener.open(url, data, timeout)
   File "C:\Python27\lib\urllib2.py", line 394, in open
     response = self._open(req, data)
   File "C:\Python27\lib\urllib2.py", line 412, in _open
     '_open', req)
   File "C:\Python27\lib\urllib2.py", line 372, in _call_chain
     result = func(*args)
   File "C:\Python27\lib\urllib2.py", line 1199, in http_open
     return self.do_open(httplib.HTTPConnection, req)
   File "C:\Python27\lib\urllib2.py", line 1174, in do_open
     raise URLError(err)
 urllib2.URLError: <urlopen error [Errno 11001] getaddrinfo failed>

любая помощь будет принята с благодарностью.

MRick

1 Ответ

2 голосов
/ 22 марта 2012

Я думаю, вы хотите следующее для urllib

...
proxies = {'http':'http://someproxy.com:1080/'}
data = urllib.urlopen('http://www.google.com', proxies=proxies).read()
...

или это для urllib2:

...
proxy = urllib2.ProxyHandler({'http':'http://someproxy.com:1080'})
...

Обратите внимание, что URL-адрес прокси-сервера включает часть протокола, которая является вашим кодомне включает.

...