Advertisement
Guest User

Untitled

a guest
Jan 29th, 2011
967
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.42 KB | None | 0 0
  1.  
  2. import mechanize
  3. import Queue
  4. import sys
  5. import socks
  6. import socket
  7. import urllib2
  8. import threading
  9. import time
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18. class Worker(threading.Thread):
  19.   FLAG_STOP,FLAG_RUN = range(2)
  20.  
  21.   def __init__(self, requestsQueue, resultsQueue, **kwds):
  22.     threading.Thread.__init__(self, **kwds)
  23.     self.setDaemon(True)
  24.     self.workRequestQueue = requestsQueue
  25.     self.resultQueue = resultsQueue
  26.     self.threadRunning = Worker.FLAG_RUN
  27.     self.start()
  28.  
  29.   def run(self):
  30.     while self.threadRunning == Worker.FLAG_RUN:
  31.       try:
  32.         callable, args, kwds = self.workRequestQueue.get_nowait( )
  33.         self.resultQueue.put((callable(*args, **kwds)),block=True)
  34.       except Queue.Empty:
  35.         pass
  36.       except Queue.Full:
  37.         pass
  38.  
  39.   def tryStop(self):
  40.     self.threadRunning = Worker.FLAG_STOP
  41.  
  42.  
  43.  
  44.  
  45. class ThreadPool:
  46.  
  47.   STATUS_CHECK_INTERVAL = 1
  48.  
  49.   def __init__(self, numThread=5):
  50.     self.threadPool = []
  51.     self.requestQueue = Queue.Queue( )
  52.     self.resultQueue = Queue.Queue( )
  53.     self.numThread = numThread
  54.  
  55.     for i in range(self.numThread):
  56.       self.threadPool.append(Worker(self.requestQueue, self.resultQueue))
  57.  
  58.   def reinit(self):
  59.     for aThread in self.threadPool:
  60.       if not aThread.isAlive( ):
  61.         self.threadPool.remove(aThread)
  62.     numCurrent = len(self.threadPool)
  63.     for i in range(self.numThread - numCurrent):
  64.       self.threadPool.append(Worker(requestQueue, requltQueue))
  65.  
  66.   def addTask(self, callable, *args, **kwds):
  67.     self.requestQueue.put((callable, args, kwds))
  68.  
  69.   def getResult(self):
  70.     ret = []
  71.     for i in range(self.resultQueue.qsize( )):
  72.       try:
  73.         ret.append(self.resultQueue.get_nowait( ))
  74.       except Queue.Empty:
  75.         break
  76.     return ret
  77.  
  78.   def waitComplete(self):
  79.     while not self.requestQueue.empty( ):
  80.       time.sleep(ThreadPool.STATUS_CHECK_INTERVAL)
  81.     self.waitStop( )
  82.  
  83.   def waitStop(self):
  84.     for aThread in self.threadPool:
  85.       aThread.tryStop( )
  86.     while len(self.threadPool):
  87.       aThread = self.threadPool.pop( )
  88.       if not aThread.isAlive( ):
  89.         continue
  90.       self.threadPool.append(aThread)
  91.       aThread.join( )
  92.        
  93.   def bindMode(self):
  94.     while True:
  95.       self.reinit( )
  96.       time.sleep(ThreadPool.STATUS_CHECK_INTERVAL)
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107. def testcall(sockks):
  108.         lsocks = []
  109.         try:
  110.            
  111.             if len(sockks.split(':'))>=2:
  112.                 ip_socks = sockks.split(':')[0]
  113.                 port_socks = int(sockks.split(':')[1])
  114.             else:
  115.                 pass
  116.         except Exception ,msg :
  117.             print msg
  118.             #~ break
  119.        
  120.  
  121.            
  122.         try :
  123.             socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5,ip_socks,port_socks)
  124.             temp = socket.socket
  125.             #~ socket.socket = socks.socksocket
  126.             #~ timeouts = socket.setdefaulttimeout(5)
  127.            
  128.            
  129.            
  130.            
  131.         except(socks.Socks5Error):
  132.             socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS4,ip_socks,port_socks)
  133.             temp = socket.socket
  134.             #~ socket.socket = socks.socksocket
  135.             #~ timeouts = socket.setdefaulttimeout(5)
  136.                
  137.        
  138.            
  139.         except Exception ,msg :
  140.             print msg
  141.         #~ ss= socks.socksocket()  
  142.         #~ timeouts = ss.setdefaulttimeout(5) +++++++> sai
  143.        
  144.         socket.socket = socks.socksocket
  145.         timeouts = socket.setdefaulttimeout(5.0)
  146.         try:
  147.            
  148.            
  149.             handler_classes = [mechanize.ProxyHandler,
  150.             mechanize.UnknownHandler,
  151.             mechanize.HTTPHandler,
  152.             mechanize.HTTPDefaultErrorHandler,
  153.             mechanize.HTTPRedirectHandler,
  154.             mechanize.HTTPErrorProcessor,
  155.             mechanize.HTTPRefreshProcessor
  156.             ]
  157.            
  158.            
  159.  
  160.             #h = HTTPRefreshProcessor(max_time=1, honor_time=False)
  161.             opener = mechanize.OpenerDirector()
  162.  
  163.             for handler_class in handler_classes:
  164.                 opener.add_handler(handler_class())
  165.  
  166.                 urlopen = opener.open
  167.  
  168.                 #~ cookies = mechanize.CookieJar()
  169.                 #~ opener = mechanize.build_opener(mechanize.HTTPCookieProcessor(cookies))
  170.                
  171.                 opener.addheaders = [("User-agent", "Mozilla/5.0 (compatible; MyProgram/0.1)"),
  172.                                 ("From", "responsible.vndark@elvilc0der.com")]
  173.  
  174.  
  175.                 mechanize.install_opener(opener)
  176.                        
  177.            
  178.  
  179.  
  180.             r = mechanize.urlopen("http://www.whatismyip.com/automation/n09230945.asp")
  181.             source =  r.read()
  182.             print "ip: " +sockks +"#### whatismyip.com: "+ source
  183.  
  184.            
  185.         except Exception ,msg :
  186.             print sockks , '--->'+  str(msg)
  187.             pass
  188.            
  189.            
  190. mypool = ThreadPool(5)
  191.  
  192. def testcall2(sockks):
  193.  
  194.       print sockks
  195.      
  196.      
  197.  
  198.  
  199.  
  200. 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']
  201.  
  202.  
  203.  
  204. for i in losckss:
  205.  
  206.  
  207.     mypool.addTask(testcall, i)
  208.  
  209. print 'wait complete'
  210. #~ mypool.bindMode()
  211. mypool.waitComplete( )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement