码迷,mamicode.com
首页 > 其他好文 > 详细

北极熊用着有点蛋疼

时间:2016-05-28 17:26:20      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:

import requests
import mechanize
import cookielib
import sys
import IPy
import threading
import Queue
import argparse
class findTitle(object):
    def __init__(self,host,port,threads):
        self.threads = threads
        self.lock = threading.Lock()
        self.queue = Queue.Queue()
        self.host = host
        self.findc()
        self.port = [80,8080]
        if port.strip():
            self.port = [80,8080]+port.split(,)
        self.into_queue()
    def findc(self):
        try:
            self.iplist = IPy.IP(self.host)
        except Exception,e:
            print e
        return
    def into_queue(self):
        for ip in self.iplist:
            for port in self.port:
                url = "http://%s:%s"%(str(ip),str(port))
                self.queue.put(url)
    def find_title(self,url):
        try:
            br = mechanize.Browser()
            br.set_cookiejar(cookielib.LWPCookieJar()) # Cookie jar
            br.set_handle_equiv(True) # Browser Option
            br.set_handle_redirect(True)
            br.set_handle_referer(True)
            br.set_handle_robots(False)
            br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
            br.addheaders = [(User-agent, Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1)]
            br.open(url)
            t = br.title().decode(utf-8).encode(gb2312)
            return t
        except Exception,e:
                return ‘‘
    def find_info(self,url):
        server = ‘‘
        powered = ‘‘
        try:
            r = requests.get(url,timeout=4)
            try:
                server = r.headers[Server]
            except Exception,e:
                #print e
                pass
            try:
                powered = r.headers[X-Powered-By]
            except Exception,e:
                #print e
                pass
        except Exception,e:
            #print e
            pass
        return server.strip()+"  "+powered.strip()
    def scan(self):
        while True:
            if self.queue.qsize() == 0:
                break
            url = self.queue.get()
            title = self.find_title(url)
            info = self.find_info(url)
            sum = title+"  "+info
            if sum.strip():
                self.lock.acquire()
                print url+"  "+sum
                self.lock.release()
            self.queue.task_done()
        return
    def start(self):
        thread=[]
        for i in range(self.threads):
            t = threading.Thread(target=self.scan)
            t.setDaemon(True)
            t.start()
            thread.append(t)
        for t in thread:
            t.join()

#a = findTitle(‘43.242.49.0/24‘,‘‘,200)
#a.start()
if __name__ == "__main__":
    if len(sys.argv) < 2:
        print "127.0.0.0/24 port(default 80 8080) threads(default=256)"
        sys.exit()
    host = sys.argv[1]
    port = ‘‘
    threads=256
    try:
        port = sys.argv[2]
    except:
        pass
    try:
        threads = sys.argv[3]
    except:
        pass
    
    a = findTitle(43.242.49.0/24,‘‘,200)
    a.start()







    
    
        

技术分享

北极熊用着有点蛋疼

标签:

原文地址:http://www.cnblogs.com/lly-001/p/5537565.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!