n4e/\@
10.05.2009, 17:30
Достаточно долго искал прокси чекер под linux, сегодня совершенно случайно наткнулся на питоновский скрипт. К сожалению он был с небольшой ошибкой, погуглив основы питона смог ее исправить.
Стало интересно решил попробовать дописать многопоточность.
Вот что получилось:
#!/usr/bin/python
import urllib2, socket
import threading, sys
# proxycheck [file] [result] [timeout] [flows]"
proxyList = []
f2 = open(sys.argv[2], "w")
socket.setdefaulttimeout(int(sys.argv[3]))
for line in file(sys.argv[1]):
proxyList.append(line)
def is_bad_proxy(pip):
try:
proxy_handler = urllib2.ProxyHandler({'http': pip})
opener = urllib2.build_opener(proxy_handler)
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
urllib2.install_opener(opener)
req=urllib2.Request('http://www.ya.ru')
sock=urllib2.urlopen(req)
except urllib2.HTTPError, e:
#print 'Error code: ', e.code
return e.code
except Exception, detail:
#print "ERROR:", detail
return 1
return 0
def checkPrint(item):
if is_bad_proxy(item):
print "Bad Proxy", item
else:
print "Is working", item
f2.write(item)
p = []
x = 0
for item in proxyList:
i = 0
while i<int(sys.argv[4]):
p.append(i)
item = proxyList[x]
p[i] = threading.Thread(target=checkPrint, args=[proxyList[x]])
p[i].start()
i,x = i+1,x+1
f2.close
С подсветкой синтаксиса (http://paste.org.ru/?pv5bjc)
Запускать:
programm [файл с проксями(прокся:порт)] [файл для работающих проксей] [таймаут] [порт]
Вот собственно может кому будет полезно.
P.S. Еще сегодня утром я вообще не имел представление о питоне.
Стало интересно решил попробовать дописать многопоточность.
Вот что получилось:
#!/usr/bin/python
import urllib2, socket
import threading, sys
# proxycheck [file] [result] [timeout] [flows]"
proxyList = []
f2 = open(sys.argv[2], "w")
socket.setdefaulttimeout(int(sys.argv[3]))
for line in file(sys.argv[1]):
proxyList.append(line)
def is_bad_proxy(pip):
try:
proxy_handler = urllib2.ProxyHandler({'http': pip})
opener = urllib2.build_opener(proxy_handler)
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
urllib2.install_opener(opener)
req=urllib2.Request('http://www.ya.ru')
sock=urllib2.urlopen(req)
except urllib2.HTTPError, e:
#print 'Error code: ', e.code
return e.code
except Exception, detail:
#print "ERROR:", detail
return 1
return 0
def checkPrint(item):
if is_bad_proxy(item):
print "Bad Proxy", item
else:
print "Is working", item
f2.write(item)
p = []
x = 0
for item in proxyList:
i = 0
while i<int(sys.argv[4]):
p.append(i)
item = proxyList[x]
p[i] = threading.Thread(target=checkPrint, args=[proxyList[x]])
p[i].start()
i,x = i+1,x+1
f2.close
С подсветкой синтаксиса (http://paste.org.ru/?pv5bjc)
Запускать:
programm [файл с проксями(прокся:порт)] [файл для работающих проксей] [таймаут] [порт]
Вот собственно может кому будет полезно.
P.S. Еще сегодня утром я вообще не имел представление о питоне.