Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import mechanize
- import Queue
- import sys
- import socks
- import socket
- import urllib2
- import threading
- import time
- class Worker(threading.Thread):
- FLAG_STOP,FLAG_RUN = range(2)
- def __init__(self, requestsQueue, resultsQueue, **kwds):
- threading.Thread.__init__(self, **kwds)
- self.setDaemon(True)
- self.workRequestQueue = requestsQueue
- self.resultQueue = resultsQueue
- self.threadRunning = Worker.FLAG_RUN
- self.start()
- def run(self):
- while self.threadRunning == Worker.FLAG_RUN:
- try:
- callable, args, kwds = self.workRequestQueue.get_nowait( )
- self.resultQueue.put((callable(*args, **kwds)),block=True)
- except Queue.Empty:
- pass
- except Queue.Full:
- pass
- def tryStop(self):
- self.threadRunning = Worker.FLAG_STOP
- class ThreadPool:
- STATUS_CHECK_INTERVAL = 1
- def __init__(self, numThread=5):
- self.threadPool = []
- self.requestQueue = Queue.Queue( )
- self.resultQueue = Queue.Queue( )
- self.numThread = numThread
- for i in range(self.numThread):
- self.threadPool.append(Worker(self.requestQueue, self.resultQueue))
- def reinit(self):
- for aThread in self.threadPool:
- if not aThread.isAlive( ):
- self.threadPool.remove(aThread)
- numCurrent = len(self.threadPool)
- for i in range(self.numThread - numCurrent):
- self.threadPool.append(Worker(requestQueue, requltQueue))
- def addTask(self, callable, *args, **kwds):
- self.requestQueue.put((callable, args, kwds))
- def getResult(self):
- ret = []
- for i in range(self.resultQueue.qsize( )):
- try:
- ret.append(self.resultQueue.get_nowait( ))
- except Queue.Empty:
- break
- return ret
- def waitComplete(self):
- while not self.requestQueue.empty( ):
- time.sleep(ThreadPool.STATUS_CHECK_INTERVAL)
- self.waitStop( )
- def waitStop(self):
- for aThread in self.threadPool:
- aThread.tryStop( )
- while len(self.threadPool):
- aThread = self.threadPool.pop( )
- if not aThread.isAlive( ):
- continue
- self.threadPool.append(aThread)
- aThread.join( )
- def bindMode(self):
- while True:
- self.reinit( )
- time.sleep(ThreadPool.STATUS_CHECK_INTERVAL)
- def testcall(sockks):
- lsocks = []
- try:
- if len(sockks.split(':'))>=2:
- ip_socks = sockks.split(':')[0]
- port_socks = int(sockks.split(':')[1])
- else:
- pass
- except Exception ,msg :
- print msg
- #~ break
- try :
- socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5,ip_socks,port_socks)
- temp = socket.socket
- #~ socket.socket = socks.socksocket
- #~ timeouts = socket.setdefaulttimeout(5)
- except(socks.Socks5Error):
- socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS4,ip_socks,port_socks)
- temp = socket.socket
- #~ socket.socket = socks.socksocket
- #~ timeouts = socket.setdefaulttimeout(5)
- except Exception ,msg :
- print msg
- #~ ss= socks.socksocket()
- #~ timeouts = ss.setdefaulttimeout(5) +++++++> sai
- socket.socket = socks.socksocket
- timeouts = socket.setdefaulttimeout(5.0)
- try:
- handler_classes = [mechanize.ProxyHandler,
- mechanize.UnknownHandler,
- mechanize.HTTPHandler,
- mechanize.HTTPDefaultErrorHandler,
- mechanize.HTTPRedirectHandler,
- mechanize.HTTPErrorProcessor,
- mechanize.HTTPRefreshProcessor
- ]
- #h = HTTPRefreshProcessor(max_time=1, honor_time=False)
- opener = mechanize.OpenerDirector()
- for handler_class in handler_classes:
- opener.add_handler(handler_class())
- urlopen = opener.open
- #~ cookies = mechanize.CookieJar()
- #~ opener = mechanize.build_opener(mechanize.HTTPCookieProcessor(cookies))
- opener.addheaders = [("User-agent", "Mozilla/5.0 (compatible; MyProgram/0.1)"),
- ("From", "responsible.vndark@elvilc0der.com")]
- mechanize.install_opener(opener)
- r = mechanize.urlopen("http://www.whatismyip.com/automation/n09230945.asp")
- source = r.read()
- print "ip: " +sockks +"#### whatismyip.com: "+ source
- except Exception ,msg :
- print sockks , '--->'+ str(msg)
- pass
- mypool = ThreadPool(5)
- def testcall2(sockks):
- print sockks
- losckss = ['69.120.210.254:22619', '98.15.184.74:41829', '71.194.91.161:4475', '70.189.8.63:7981', '67.240.128.141:35417', '75.60.198.184:3312', '98.159.22.208:5746', '71.72.228.123:2887', '75.118.118.226:12328', '76.188.107.99:11311', '75.60.226.211:10044', '208.102.164.181:5197', '67.177.48.184:2872', '64.188.232.102:4701', '74.193.138.11:3461', '70.126.42.102:6566', '71.246.114.246:21899', '67.165.49.84:9566', '75.187.95.39:6463', '71.11.169.103:4052', '24.12.68.114:8124', '173.19.241.26:7538', '74.197.150.163:9907', '75.142.204.42:6937', '68.111.213.155:3207', '71.89.86.31:9714', '75.108.23.9:10016', '76.185.112.151:11708', '98.168.191.233:12753', '70.120.187.72:12280', '173.171.232.224:12863', '173.20.27.32:10376', '70.122.85.234:12319', '72.188.240.88:13062', '98.251.196.186:6510', '24.3.134.101:11691', '76.175.218.141:10860', '67.167.18.253:11688', '76.122.228.124:10987', '80.88.218.204:4298', '76.117.56.113:42559', '75.64.56.207:25865', '70.162.155.226:21413']
- for i in losckss:
- mypool.addTask(testcall, i)
- print 'wait complete'
- #~ mypool.bindMode()
- mypool.waitComplete( )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement