Тайм-аут Pyll urllib2 при использовании Tor в качестве прокси? - PullRequest
3 голосов
/ 15 июня 2009

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

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

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

import socket
socket.setdefaulttimeout(None).

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

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

Спасибо, Rob

Ответы [ 3 ]

3 голосов
/ 16 июня 2009

В соответствии с Python Socket Documentation значением по умолчанию является отсутствие тайм-аута, поэтому указание значения None является излишним.

Существует несколько возможных причин, по которым ваше соединение прерывается. Возможно, вашим пользовательским агентом является «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 голосов
/ 16 июня 2009

urllib2.urlopen (url [, данные] [, тайм-аут])

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

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

0 голосов
/ 16 июня 2009

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

...