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()
使用效果:

浙公网安备 33010602011771号