2009-06-15 3 views
3

Я использую python urllib2 с Tor как прокси для доступа к веб-сайту. Когда я открыть главную страницу сайта она работает нормально, но когда я пытаюсь просмотреть страницу входа (на самом деле не войти в систему, но просто посмотреть его), я получаю следующее сообщение об ошибке ...Python urllib2 таймаут при использовании Tor как прокси?

URLError: <urlopen error (10060, 'Operation timed out')> 

Чтобы противодействовать этому Я сделал следующее:

import socket 
socket.setdefaulttimeout(None). 

Я все еще получаю ту же ошибку тайм-аута.

  1. Означает ли это, что веб-сайт отключается на стороне сервера? (Я не знаю много о http-процессах, так что извините, если это немой вопрос)
  2. Есть ли способ исправить его, чтобы Python мог просматривать страницу?

Спасибо, Роб

ответ

0

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

3

В соответствии с Python Socket Documentation по умолчанию нет тайм-аута, поэтому указание значения «Нет» является избыточным.

Существует несколько возможных причин, по которым ваше соединение падает. Возможно, ваш пользовательский агент является «Python-urllib», который может быть очень блокирован. Чтобы изменить агента пользователя:

request = urllib2.Request('site.com/login') 
request.add_header('User-Agent','Mozilla/5.0 (X11; U; Linux i686; it-IT; rv:1.9.0.2) Gecko/2008092313 Ubuntu/9.04 (jaunty) Firefox/3.5') 

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

proxy = urllib2.ProxyHandler({"http":"http://127.0.0.1:8118"}) 
opener = urllib2.build_opener(proxy) 
urllib2.install_opener(opener) 
+0

Спасибо за ответ. Я уже построил и установил обработчик прокси, но я не думал о попытке изменить пользовательский агент. Я попытался, но ничего не изменил. Я также не думаю, что он явно заблокирован, потому что я могу получить доступ к главной странице. Возможно ли, что на сайте установлен минимальный тайм-аут по умолчанию, а дополнительное время прокси-сервера вызывает таймаут? – user123304

+0

Я думаю, что вы предлагаете, возможно, но маловероятно. Еще один вариант, который следует учитывать, заключается в том, что сайт выполняет обратный поиск, обнаруживая, что вы исходите от известного прокси-сервера и впоследствии удаляете свое соединение. У меня была эта проблема, или, вернее, это было мое лучшее предположение, когда я столкнулся с аналогичной проблемой с Yahoo/Yahoo Mail. Вы пробовали другие домены без проблем? –

+0

Я пробовал другие домены без проблем, включая другие домены https, но я могу получить доступ к большому количеству страниц на сайте, а не к логину. Согласуется ли это с сайтом, который выполняет обратный поиск? Спасибо, Rob – user123304

0

urllib2.urlopen (url [, data] [, timeout])

Необязательный параметр тайм-аута определяет тайм-аут в секундах для блокировки операций, таких как попытка подключения (если не указано, будет использоваться глобальная настройка таймаута по умолчанию). Это фактически работает только для соединений HTTP, HTTPS, FTP и FTPS.

http://docs.python.org/library/urllib2.html

Смежные вопросы