Я пытаюсь прочитать URL в нашей корпоративной сети. В частности, сервер, с которым я связываюсь, находится в одном офисе, а клиентский ПК - в другом:
print(urlopen(r"http://london.mycompany/mydir/").read())
Всякий раз, когда я запускаю эту функцию, я получаю:
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "C:\Python24\lib\urllib2.py", line 130, in urlopen
return _opener.open(url, data)
File "C:\Python24\lib\urllib2.py", line 364, in open
response = meth(req, response)
File "C:\Python24\lib\urllib2.py", line 471, in http_response
response = self.parent.error(
File "C:\Python24\lib\urllib2.py", line 402, in error
return self._call_chain(*args)
File "C:\Python24\lib\urllib2.py", line 337, in _call_chain
result = func(*args)
File "C:\Python24\lib\urllib2.py", line 480, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 407: Proxy Authentication Required
Странно, что между этими двумя компьютерами нет брандмауэра - по какой-то причине url решил подключиться к веб-серверу через прокси-сервер, который мы обычно используем для подключения к контенту за пределами компании, и в этом случае это терпит неудачу, потому что я не аутентифицировал это.
Я почти уверен, что ошибка происходит на клиентском ПК: я выполнил nslookup и пинг на сервер, чтобы убедиться, что между двумя компьютерами есть соединение, однако, когда я наблюдаю транзакцию с использованием TCPView для Windows, я могу видите, что процесс python.exe подключается к совершенно другому серверу (да, прокси!).
Так что может быть причиной этого? Обратите внимание, что переменная os.environ ["http_proxy"] НЕ установлена - эта переменная часто используется для подключения urllib через прокси-сервер. Это не тот случай, здесь. Может ли быть что-то еще, что может иметь такой же эффект?
FYI, запуск Python 2.4.4 на Windows XP 32bit в очень закрытой корпоративной среде.