ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
pyCheckProxy – прокси чекер на Python |

08.12.2009, 17:12
|
|
Участник форума
Регистрация: 23.03.2007
Сообщений: 170
Провел на форуме: 1355906
Репутация:
211
|
|
pyCheckProxy – прокси чекер на Python
Версия: 0.1.
Автор: h1z.
WWW: http://www.mr-h1z.com.
Возможности: - Данный скрипт может проверять прокси из файлов и из списков URL’ов.
- Скрипт является многопоточным.
- Пока только поддерживается проверка HTTP-прокси.
- Скрипт сам извлекает прокси из файлов, т.е. файл может содержать мусор.
Описание опций: - -f или --file – задаёт расположение файла со списком прокси или списком URL’ов. По умолчанию, если не задать данную опцию скрипт попытается обратится к файлу ./proxy.txt в данной директории.
- -t или --timeout – задаёт тайм аут для сокета. По умолчанию, равен 80.
- -c или --count – количество потоков. По умолчанию, количество равно 10.
- -u или --urls – опция которая указывает скрипту что в файле содержатся URL’ы. По умолчанию, опция выключена
- -o или --out – задаёт расположение файла, куда будет выводится список рабочих прокси. По умолчанию, результат выводится на экран.
Скачать pyCheckProxy.
Для работы скрипта требуется Python 2.4-2.6.
Пример запуска:
./check.py --file file.html --count 20 # Проверить прокси из файла file.html, используя 20 потоков
Планы на будущие: - Добавить GUI на PyQt4.
- Поддержка SOCKS-прокси и проверка на анонимность.
Исходный код:
Код:
#!/usr/bin/env python
#pyCheckProxy by h1z
#version: 0.1
import urllib2, socket, re, threading, sys, getopt
_file="proxy.txt"
_threads=10
_urls=False
_out=""
_file_out=0
_timeout=80
proxyList=[]
class Proxy:
def __init__(self, time_out=80, check_url="http://www.google.com", inside_text="<title>Google</title>"):
self._sock=socket
self._sock.setdefaulttimeout(time_out)
self._check_url=check_url
self._inside_text=inside_text
self._proxy_buf=[]
self._proxy_list=[]
self._thread_count=0
def check(self, proxy):
try:
proxy_handler = urllib2.ProxyHandler({'http': proxy})
opener = urllib2.build_opener(proxy_handler)
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
urllib2.install_opener(opener)
req=urllib2.Request(self._check_url)
self._sock=urllib2.urlopen(req)
if (self._sock.read().index(self._inside_text))>=0:
return True
except:
return False
return True
def check_all(self, proxy_list=[], thread_count=10):
if type([])==type(proxy_list) and len(proxy_list)>0:
self._proxy_list=[]
self._proxy_buf=proxy_list
self._thread_count=thread_count
for i in range(thread_count):
thr=threading.Thread(target=self._thread_check, name=str(i))
thr.start();
while (self._thread_count>0):
pass
return self._proxy_list
def _thread_check(self):
while (len(self._proxy_buf)>0):
try:
item=self._proxy_buf.pop()
if self.check(item):
self._proxy_list.append(item)
except:
pass
self._thread_count-=1
def _usage():
print """(c) h1z, http://www.mr-h1z.com
Usage:
./check.py [options]
Options:
--file - path to file[default: proxy.txt]
--count - count of threads[default: 10]
--urls - file inside urls[default: false]
--out - file to output[default: stdout]
--timeout - set timeout[default: 80]"""
sys.exit(1)
def _add_to_list(text):
global proxyList
for _tmp in text:
try:
while True:
buf=re.search("([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\:[0-9]{1,5})", _tmp)
try:
proxyList.index(proxyList)
except ValueError:
proxyList.append(buf.group(0))
_tmp=_tmp[len(buf.group(0)):]
except:
pass
try:
opts, args=getopt.getopt(sys.argv[1:], "uf:c:o:t:", ["urls","file=","count=","out=","timeout="])
except getopt.GetoptError:
_usage()
for opt, arg in opts:
if opt in ("-f","--file"):
_file=arg
elif opt in ("-u","--urls"):
_urls=True
elif opt in ("-c","--count"):
_threads=int(arg)
elif opt in ("-o","--out"):
_out=arg
elif opt in ("-t","--timeout"):
_timeout=int(arg)
try:
f=open(_file,'r')
except IOError:
print "Error. File './%s' not found!" % (_file)
sys.exit(1)
pr_list=f.readlines()
f.close()
if _urls==False:
_add_to_list(pr_list)
else:
for url in pr_list:
try:
_sock=socket
_sock=urllib2.urlopen(urllib2.Request(url))
_add_to_list(_sock.read().split('\n'))
except:
pass
p_check=Proxy(time_out=_timeout)
if len(_out)>1:
_file_out=open(_out,'w')
if _threads>len(proxyList):
_threads=len(proxyList)
for i in p_check.check_all(proxyList,_threads):
if len(_out)>1:
_file_out.write(i)
else:
print i
if len(_out)>1:
_file_out.close()
Если скрипт чекает очень медленно, то попробуйте задать таймаут 20-40:
|
|
|

08.12.2009, 21:02
|
|
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме: 2868783
Репутация:
414
|
|
Немного трэдом ошибся, тут компилируемые языки )
|
|
|

08.12.2009, 21:13
|
|
Участник форума
Регистрация: 23.03.2007
Сообщений: 170
Провел на форуме: 1355906
Репутация:
211
|
|
О_о и правда, просьба модераторов перенести в другой раздел.
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|