扫描网站服务器真实IP的小脚本

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

1#!/usr/bin/env python2#-*- coding: gbk -*-3#-*- coding: utf_8 -*-4#Date: 2015年9月11日5#Author:蔚蓝行6#博客 http://www.cnblogs.com/duanv/78importrequests9importthreading10importLevenshtein11importre1213defscan(original_r,cip,ip_begin,original_match,header):14ip=cip+str(ip_begin)15try:16r=requests.get('http://'+ip,headers=header,timeout=1)17exceptException:18pass19else:20if(r.status_code==original_r.status_code):21ifr.content==original_r.content:22PRint'---everything is match!---\n'+ip+'\n--------------------------\n\n\n',23else:24ifLevenshtein.ratio(r.text,original_r.text)>0.8:25match=re.search(r"<title>(.*?)</title>",r.content)26try:27ifmatch==original_matchormatch.group()==original_match.group():28print'--matches>0.8-same title--\n'+ip+'\n--------------------------\n\n\n',29else:30print'--matches>0.8-diff title--\n'+ip+'\n--------------------------\n\n\n',31exceptException:32ifmatch==None:33#扫描网页无标题34print'-matches>0.8-none title-s-\n'+ip+'\n--------------------------\n\n\n',35else:36#原始网页无标题37print'-matches>0.8-none title-o-\n'+ip+'\n--------------------------\n\n\n',3839defloop(original_r,cip,original_match,header):40globalip_begin,ip_end,mutex41while1:42mutex.acquire()43ifip_begin >ip_end:44mutex.release()45

break46ip=ip_begin47ip_begin += 148mutex.release()49scan(original_r,cip,ip,original_match,header)5051defstart():52globalip_begin,ip_end,mutex5354ip_begin=155ip_end=25456mutex=threading.Lock()5758cip='180.97.33.'59address='www.baidu.com'6061#cip='220.181.136.'62#address='www.219.me'6364header={"host":address,"Accept-Encoding":"identity","User-Agent":""}65r=requests.get('http://'+address,headers=header)6667original_match=re.search(r"<title>(.*?)</title>",r.content)6869threads=[]70foriinrange(254):71threads.append(threading.Thread(target=loop,args=(r,cip,original_match,header)))72fortinthreads:73t.start()7475if__name__=='__main__':76start()

1,由于是多线程,输出时如果用print xxx会出现因线程抢占而造成的输出乱序,改用print xxx+‘\n’,可以不用线程锁并解决这个问题

2,扫描网段时请求头加上host:domain_name,可以解决单一IP对应多域名的问题

3,发送请求时将UA头置空,可以防止某些网站服务器返回内容过大和不完全相同的问题,提高效率。比如请求百度,有UA头情况下返回的页面内容相当大,而且不同IP返回内容有细微差别,脚本就会进行相似度比较,耗时巨大,如果置空UA头,请求响应内容就比较小,而且不同IP返回内容相同

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航