Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 4, 2012 22:39:57

wghost
От:
Зарегистрирован: 2011-09-02
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

grab и проверка прокси

Проксичекер на grab(взято с хабра):

>>> from grab import Grab, GrabError
from urllib import quote
import re
g = Grab()
g.go('www.google.ru/search?num=100&q=' + quote('free proxy +":8080"'))
rex = re.compile(r'(?:(?:[-a-z0-9]+\.)+)[a-z0-9]+:\d{2,4}')
for proxy in rex.findall(g.drop_space(g.css_text('body'))):
g.setup(proxy=proxy, proxy_type='http', connect_timeout=5, timeout=5)
try:
g.go('google.com')
except GrabError:
print proxy, 'FAIL'
else:
print proxy, 'OK'
g.drop_space выдает ошибку, стало просто rex.findall(g.response.body).
В таком варианте все прокси пишут ‘FAIL’ практически независимо от работоспособности. Может выдать ‘OK’ на нерабочий, но редко. Прям мистика.
Если сделать g.setup(proxy=рабочий_прокси, proxy_type='http', connect_timeout=5, timeout=5), этот прокси нормально чекнется и напишет ‘OK’.

И того по отдельности работает:
g = Grab()
g.go('http://www.domain.com/proxy.txt')
rex = re.compile(r'(?:(?:[-a-z0-9]+\.)+)[a-z0-9]+:\d{2,4}')
proxy = rex.findall(g.response.body)
print proxy
Парсит прокси в формате:
['164.151.129.37:3128', '122.226.113.54:808', '60.216.101.232:808']
И

    g.setup(proxy='nn.nn.nn.nn:8080', proxy_type='http', connect_timeout=5, timeout=5)
try:
g.go('http://domain.com/')
except GrabError:
print 'FAIL'
else:
print 'ok'
Проверяет на работоспособность один прокси.

Нужно совместить, чтобы проверялись прокси из списка. Желателно в несколько потоков.



Офлайн

#2 Фев. 5, 2012 22:25:40

Singularitty
От:
Зарегистрирован: 2012-02-02
Сообщения: 61
Репутация: +  5  -
Профиль   Отправить e-mail  

grab и проверка прокси

Ты скопировал код с хабра и хочешь чтобы вместо тебя все зделали ?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version