Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB58.8530
BTC/USD0.0000
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 19.08.2014, 03:08   #1
igelius
Senior Member
 
Регистрация: 24.04.2013
Сообщений: 291
Бабло: $108490
Question Прокси чекер на Питоне

Здесь было:
http://www.gofuckbiz.com/showthread.php?t=20224
Линка на статью по проксичекеру мертвая.
Есть где еще?
igelius вне форума  
Старый 19.08.2014, 10:29   #2
WebNinja
grablab.org
 
Аватар для WebNinja
 
Регистрация: 18.09.2007
Адрес: Thailand
Сообщений: 4,921
Бабло: $322214
Отправить сообщение для WebNinja с помощью ICQ Отправить сообщение для WebNinja с помощью Skype™
По умолчанию

могу залить.
WebNinja вне форума  
Старый 19.08.2014, 10:50   #3
MetroJazz
Senior Member
 
Аватар для MetroJazz
 
Регистрация: 19.01.2011
Сообщений: 327
Бабло: $48850
По умолчанию

http://dumpz.org/217066/
MetroJazz вне форума  
Старый 19.08.2014, 13:10   #4
igelius
Senior Member
 
Регистрация: 24.04.2013
Сообщений: 291
Бабло: $108490
ТС -->
автор темы ТС По умолчанию

Ага, спасибо.
igelius вне форума  
Старый 19.08.2014, 23:52   #5
igelius
Senior Member
 
Регистрация: 24.04.2013
Сообщений: 291
Бабло: $108490
ТС -->
автор темы ТС По умолчанию

В общем я реально мозг пропил похоже. Читаю это и не вижу где именно палится ошибка. То есть чтобы чекнуть прокси нужно попробовать перейти например на гугл.ком и еще на пару сайтов для верности, и если везде глухо значит проксик мертв. Так вот, я не вижу этого момента в коде. Спрашивал уже на форуме по питону:
Код:
# coding: utf-8
from grab import Grab
g = Grab()
g.setup_proxylist(proxy_file='socks.txt', proxy_type='socks5', read_timeout=None, auto_init=True, auto_change=False)
g.go('https://google.com')
Вернуло ошибку. Например:
Код:
  File "/usr/local/lib/python2.7/site-packages/grab/base.py", line 268, in go
    return self.request(url=url, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/grab/base.py", line 343, in request
    self.transport_request()
  File "/usr/local/lib/python2.7/site-packages/grab/transport/curl.py", line 280, in transport_request
    raise GrabTimeoutError(ex[0], ex[1])
grab.error.GrabTimeoutError: [Errno 28] SSL connection timeout
Как блин выцепить ошибку и продолжить выполнение скрипта? Записать прокси в мертвые или просто вернуться к g.setup_proxylist.
igelius вне форума  
Старый 19.08.2014, 23:57   #6
fromYukki
Full Stack Web Developer
 
Регистрация: 15.08.2014
Адрес: Vietnam
Сообщений: 28
Бабло: $5980
По умолчанию

не смотрел я код Grap но судя по всему, он сам определяет таски исходя из названия методов класса task_*** так же по названию этого метода в случае неудачи вызывает НАЗВАНИЕ_МЕТОДА_fallback ... ну а в нем всегда вызывается ваш метод save_proxy_fail который при превышении кол-ва ошибок более 10 удаляет из mongo прокси или обновляет кол-во ошибок если оно все еше меньше 10

Если интересно могу сделать похожий скрипт на go lang там вам и многопоточность и могу в другую базу складывать или в файл

Ну а если вам надо именно этот код исправить то думаю лучше всего прочесть эту доку https://docs.python.org/2/tutorial/e...ing-exceptions и раздел Handling Exceptions

Думаю что в try catch надо завенуть то что находится в методе process_proxy_response (перехватывать GrabError исключение)

Последний раз редактировалось fromYukki; 20.08.2014 в 00:05.
fromYukki вне форума  
Старый 20.08.2014, 00:26   #7
igelius
Senior Member
 
Регистрация: 24.04.2013
Сообщений: 291
Бабло: $108490
ТС -->
автор темы ТС По умолчанию

Цитата:
Сообщение от fromYukki Посмотреть сообщение
Ну а если вам надо именно этот код исправить то думаю лучше всего прочесть эту доку https://docs.python.org/2/tutorial/e...ing-exceptions и раздел Handling Exceptions
Все, вкурил. Спасибо.

Последний раз редактировалось igelius; 20.08.2014 в 00:38.
igelius вне форума  
Старый 20.08.2014, 10:11   #8
WebNinja
grablab.org
 
Аватар для WebNinja
 
Регистрация: 18.09.2007
Адрес: Thailand
Сообщений: 4,921
Бабло: $322214
Отправить сообщение для WebNinja с помощью ICQ Отправить сообщение для WebNinja с помощью Skype™
По умолчанию

Да, еще можно положить пхп файл который ип юзера отдает на сервер и сравнивать. Чтобы проверять прокси на анонимность.
WebNinja вне форума  
Старый 21.08.2014, 05:11   #9
igelius
Senior Member
 
Регистрация: 24.04.2013
Сообщений: 291
Бабло: $108490
ТС -->
автор темы ТС По умолчанию

Всеже я не до конца вкурил. Допустим:
Код:
from grab import Grab
g = Grab()
g.load_proxylist('proxy', 'text_file', proxy_type='socks5', auto_init=True, auto_change=False)
try:
		g.go('http://google.com')
		print 'go'
except IOError:
		print 'error'
Нифига не работает когда сокс вообще недоступен:
Код:
grab.error.GrabConnectionError: (7, 'Unable to receive initial SOCKS5 response.')
igelius вне форума  
Старый 21.08.2014, 23:04   #10
fromYukki
Full Stack Web Developer
 
Регистрация: 15.08.2014
Адрес: Vietnam
Сообщений: 28
Бабло: $5980
По умолчанию

Я личным сообщением ответить не могу, не хватает кармы

Отвечая на ПМ: Я в основном на golang, php но немного питон знаю, за $ пока нет времени... за так помогу

судя по всему тете надо
except IOError:
заменить на
except GrabError:
это поможет перехватывать все ошибки которые сделаны этим Grab фреймворком (нашел их здесь https://github.com/lorien/grab/blob/.../grab/error.py)
или лучше заменить на
except Exception:
перехватит все исключения всех типов
fromYukki вне форума  
Закрытая тема



Опции темы
Опции просмотра