Форум сайта python.su
python 3.2 проверяю прокси urllib-ом:
request = urllib.request.Request(url)
request.add_header('User-Agent',
'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.3) Gecko/20190824 Firefox/3.5.3')
opener = urllib.request.build_opener(urllib.request.ProxyHandler({'https': '213.111.252.230:8000'}))
urllib.request.install_opener(opener)
try:
res = urllib.request.urlopen(request,
timeout=3)
except HTTPError as e:
self.log('сервер вернул ошибку: %s' % e.code, '!')
return False
except URLError as e:
self.log('не могу скачать страницу: %s' % e.reason, '!')
return False
except Exception as e:
self.log('ошибка: %s' % e, '!')
else:
headers = res.getheaders()
encoding = self.parent.http._get_encoding(headers)
try:
data = res.read().decode(encoding, 'ignore')
except Exception as e:
self.log('ошибка http.read().decode(): %s' % e, '!')
return False
проверяем 213.111.252.230:8000, тип 0
[!] ошибка: <urlopen error [Errno 111] В соединении отказано>
проверяем 213.111.252.230:8000, тип 1
[!] ошибка: <urlopen error timed out>
* тут виснет на минуту *
проверяем 213.111.252.230:8000, тип 2
[!] ошибка: <urlopen error [Errno 110] Время ожидания соединения истекло>
* и тут продолжает тупить *
Офлайн
отвечу сам себе
в socksHandler, использующем портированный на 3.2 socksiPy есть такая строчка
if isinstance(self.timeout, float):
self.sock.settimeout(self.timeout)
такая вот байда. никогда бы в голову не пришло ставить таймаут в флоат.
изменил проверку на int и все заработало
Офлайн