python收集厂商ip信息小工具

这个工具主要用于在前期收集厂商 IP 段的时候,用了一个自己经常用的查询 IP 信息的网站(https://www.boip.net/),信息比较全,这里用工具集成了一下(代码比较简陋,就凑合着用),使用如果遇到 SSL 报错的问题,可以使用命令: pip install requests[security] ,来解决。

工具源码如下:

# -*- coding:utf-8 -*-
import re,requests,sys,threading
from Queue import Queue

def get_ip_info(q,find):
    global lock
    pattern = re.compile(u'(qihu|\u5947\u864e|qihoo)',re.I)
    while True:
        try:
            ip = q.get(timeout=1)
        except:
            break
        url = 'https://www.boip.net/ipv4/'+ip
        #print url
        
        try:
            res = requests.get(url,timeout=20)
            #print res.text[:10]
            
            r = pattern.search(res.text)

            if r:
                lock.acquire()
                print 'find '+ip+' >>'+r.group()
                lock.release()
                if ip not in find:
                    find.append(ip+'>>'+r.group())
                else:
                    pass
            else:
                pass
            
        except:
            pass
        


if __name__ == '__main__':
    iplist=[]
    iplist_pre=[]
    iplist_find=[]
    treadlist=[]
    file = sys.argv[1]
    threads = 50
    global lock
    q = Queue()
    
    lock = threading.Lock()

    f = open(file)
    line=f.readline()
    while line:
        ip=re.findall('(?<![\.\d])(?:\d{1,3}\.){3}\d{1,3}(?![\.\d])',line)
        #print ip
        try:
            ip_pre = re.findall('(\d+\.\d+\.)',ip[0])
            if ip_pre[0] not in iplist_pre:
                iplist_pre.append(ip_pre[0])
                for i in range(0,256):
                    iplist.append(ip_pre[0]+str(i)+'.10')
            else:
                pass
        except:
            print 'not match'
        line = f.readline()

    for ip in iplist:
        q.put(ip)
    for i in xrange(threads):
        t = threading.Thread(target=get_ip_info,args=(q,iplist_find,))
        t.setDaemon(True)
        t.start()
        treadlist.append(t)
        
    for i in treadlist:
        i.join()
    #print iplist_find
    reload(sys)
    sys.setdefaultencoding( "utf-8" )
    f = open('find.txt','a')
    for ip_1 in iplist_find:
        f.write(ip_1+'\n')
    f.close()
    

使用效果:

 

posted on 2017-03-06 23:40  镱鍚  阅读(195)  评论(0)    收藏  举报

导航