PDA

Просмотр полной версии : Multithreading Sock's Cheker [Python Script]


De-visible
17.12.2008, 23:10
Multithreading Sock's Cheker



#!/usr/bin/env python2.5
#c0ded by De-visible
import pycurl
import urllib
import time
import threading
import Queue
from cStringIO import StringIO
import signal

WORKERS = 250 # максимальное число потоков
q = Queue.Queue()
good_prox = []

def AboutScript():
print """
###############About################
# #
# [Sock's cheker]Script v #
# #
#___c0ded by De-visible____________#
#___GreetZ to antichat.ru__________#
#___ICQ: 22-3333-575_______________#
#___special for antichat's users___#
#___(c)2008________________________#
####################################
\n\n"""

def check_socks5(target, ptype=None):
ip, port = target.split(':')
curl = pycurl.Curl()
io = StringIO()
curl.setopt(pycurl.URL, 'http://ya.ru/')# сайт для коннекта(проверка сокса)
#curl.setopt(pycurl.VERBOSE, 1)
curl.setopt(pycurl.CONNECTTIMEOUT, 5)
curl.setopt(pycurl.TIMEOUT, 100)# таймаут
curl.setopt(pycurl.USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11')
curl.setopt(pycurl.WRITEFUNCTION, io.write)
curl.setopt(pycurl.NOSIGNAL, 1)
if ptype:
if ptype == 'socks5':
curl.setopt(pycurl.PROXYTYPE, pycurl.PROXYTYPE_SOCKS5)
elif ptype == 'socks4':
curl.setopt(pycurl.PROXYTYPE, pycurl.PROXYTYPE_SOCKS4)
elif ptype == 'http':
curl.setopt(pycurl.PROXYTYPE, pycurl.PROXYTYPE_HTTP)
curl.setopt(pycurl.PROXY, ip)
curl.setopt(pycurl.PROXYPORT,int(port) )
try:
curl.perform()
except pycurl.error, msg:
pass
else:
res = ':'.join((ip, port.strip()))
good_prox.append(res)
finally:
curl.close()
io.close()

def chek_sock(ptype=None):
global q
while True:
try:
item = q.get_nowait()
except Queue.Empty:
break
check_socks5(item, ptype)

def check_proxy(servers, ptype):
global q
global good_prox
for item in servers:
q.put(item)

for i in xrange(WORKERS):
t = threading.Thread(target=chek_sock, args=(ptype,))
t.setDaemon(False)
t.start()
while threading.activeCount() != 1:
time.sleep(5)
else:
return good_prox

AboutScript()
if __name__ == '__main__':
#import sys #после подключения модуля можно получать путь к файлу через
#командную строку
f = open('sock.txt', 'r')#список sock's, здесь можно использовать
#получение пути к файлу через командную строку, модуль sys
good = check_proxy(f.readlines(), ptype='socks5')
for p in good :
print p

P.S. задание....

BlackSun
17.12.2008, 23:13
Теперь все релизы будем в закрытом разделе публиковать? на приват не тянет, никак.

.Slip
17.12.2008, 23:16
Переезд.

Spyder
17.12.2008, 23:17
как бы раздел то не для привата. Приват вон удаляют только так. Раздел что бы свои знания показать. Разве шелл от d_x'a можно назвать приватом? шелл как шелл

De-visible
17.12.2008, 23:17
перемещайте)

alextoun
17.12.2008, 23:41
+ как почитателю питона......тока думаю, жто всё таки надо было кидать в паблик

Tigger
18.12.2008, 01:50
Молодец! Ждем еще релизов от тебя =))