в начале файла настройки PROXY_LIST - страница с проксями в виде xxx.xxx.xxx.xxx:xxxx TEST_URL - что загружать CHECKERS - кол во поисковых потоков TEST_COUNT - сколько делать запросов через про…

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/usr/bin/python
PROXY_LIST="http://webanet.ucoz.ru/publ/23-1"
TEST_URL="http://img0.gmodules.com/ig/images/gmaillogo.gif"
CHECKERS=16
TEST_COUNT=10
import urllib2, re, Queue, threading, socket, datetime
r_proxy = re.compile(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,5}')
proxy_list = r_proxy.findall( urllib2.urlopen(PROXY_LIST).read() )
print 'Finding %s proxies' % len(proxy_list)
socket.setdefaulttimeout(2)
def proxy_tester():
while True:
proxy = q.get()
proxy_handler = urllib2.ProxyHandler( { 'http': 'http://%s/' % proxy } )
opener = urllib2.build_opener(proxy_handler)
try:
timings=[]
for i in range(TEST_COUNT):
time = datetime.datetime.now()
s = opener.open(TEST_URL).read()
time = datetime.datetime.now()-time
timings.append(len(s)/1024.0/ (time.seconds+time.microseconds/1000000.0))
speed = sum(timings)/len(timings)
if speed>2: print 'found', proxy, speed
except Exception,e:
pass
del proxy_handler, opener
q.task_done()
q = Queue.Queue()
for i in range(CHECKERS):
t = threading.Thread(target=proxy_tester)
t.setDaemon(True)
t.start()
for i in proxy_list:
q.put(i)
q.join()