#!/usr/bin/env python
# -*- coding: gbk -*-
# -*- coding: utf_8 -*-
# Date: 2015年9月11日
# Author:蔚蓝行
# 博客 http://www.cnblogs.com/duanv/ import requests
import threading
import Levenshtein
import re def scan(original_r,cip,ip_begin,original_match,header):
ip=cip+str(ip_begin)
try:
r=requests.get('http://'+ip,headers=header,timeout=1)
except Exception:
pass
else:
if(r.status_code==original_r.status_code):
if r.content==original_r.content:
print '---everything is match!---\n'+ip+'\n--------------------------\n\n\n',
else:
if Levenshtein.ratio(r.text,original_r.text)>0.8:
match=re.search(r"<title>(.*?)</title>",r.content)
try:
if match==original_match or match.group()==original_match.group():
print '--matches>0.8-same title--\n'+ip+'\n--------------------------\n\n\n',
else:
print '--matches>0.8-diff title--\n'+ip+'\n--------------------------\n\n\n',
except Exception:
if match==None:
#扫描网页无标题
print '-matches>0.8-none title-s-\n'+ip+'\n--------------------------\n\n\n',
else:
#原始网页无标题
print '-matches>0.8-none title-o-\n'+ip+'\n--------------------------\n\n\n', def loop(original_r,cip,original_match,header):
global ip_begin,ip_end,mutex
while 1:
mutex.acquire()
if ip_begin > ip_end:
mutex.release()
break
ip=ip_begin
ip_begin += 1
mutex.release()
scan(original_r,cip,ip,original_match,header) def start():
global ip_begin,ip_end,mutex ip_begin=1
ip_end=254
mutex=threading.Lock() cip='180.97.33.'
address='www.baidu.com' #cip='220.181.136.'
#address='www.219.me' header={"host":address,"Accept-Encoding":"identity","User-Agent":""}
r=requests.get('http://'+address,headers=header) original_match=re.search(r"<title>(.*?)</title>",r.content) threads=[]
for i in range(254):
threads.append(threading.Thread(target=loop,args=(r,cip,original_match,header)))
for t in threads:
t.start() if __name__ == '__main__':
start()

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

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

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

扫描网站服务器真实IP的小脚本的更多相关文章

  1. 域名做CDN来通过隐藏服务器真实IP的方法来防止DDoS攻击(转)

    隐藏服务器真实IP是解决问题最好和最快的方法,但只针对小流量,大流量同样会扛不住. 服务器前端加CDN中转,比如阿里云.百度云加速.360网站卫士.加速乐.安全宝等,如果资金充裕的话,可以购买高防的盾 ...

  2. 隐藏服务器真实IP的方法来防止DDOS攻击

    2017-08-22 作者:小唐 点击: 10,500次 在无盘系统的环境下,服务器软件存在漏洞,就容易受到DDOS攻击,隐藏服务器真实IP是解决问题最好的方法,下面小编与大家分享一下隐藏服务器真实I ...

  3. 防止DDOS攻击有效方法:隐藏服务器真实IP

    如今,网站服务器的安全受到越来越多的重视,但是难免会遇到黑客使用DDoS攻击网站,为了网站的安全通常都会做好防御,其中防止DDoS攻击有效方法:隐藏服务器真实IP ,该技术能够有效地保护网站的安全. ...

  4. 云盾正常扫描云服务器的IP是什么

    问题:云盾正常扫描云服务器的IP是什么?   解答:云盾扫描云服务器的的IP段固定为    42.120.145.0/24 110.75.105.0/24 110.75.185.0/24 110.75 ...

  5. 绕过CDN获取服务器真实IP地址

    相关视频链接:(https://blog.sechelper.com/20220914/penetration-testing-guide/cdn-bypass) CDN(Content Delive ...

  6. 绕过CDN查找网站真实IP方法收集

    方法1很简单,使用各种多地 ping 的服务,查看对应 IP 地址是否唯一,如果不唯一多半是使用了CDN, 多地 Ping 网站有: http://ping.chinaz.com/ http://pi ...

  7. 绕过CDN查找网站真实ip

    在渗透测试过程中,经常会碰到网站有CDN的情况.CDN即内容分发网络,主要解决因传输距离和不同运营商节点造成的网络速度性能低下的问题.说的简单点,就是一组在不同运营商之间的对接点上的高速缓存服务器,把 ...

  8. 查找“CDN、负载均衡、反向代理”等大型网络真实IP地址的方法

    首先,CDN.负载均衡.反向代理还分为很多层,有时查出来的是最外层的 CDN 服务器群,真实的机器是不对外开放的,类似这样的: 用户 → CDN 网络 → 一台或多台真实机器 ↗ CDN Server ...

  9. 绕过CDN查找真实 IP 姿势总结

    返回域名解析对应多个 IP 地址,网站可能部署CDN业务,我们就需要bypass CDN,去查找真正的服务器ip地址 0x01.域名搜集 由于成本问题,可能某些厂商并不会将所有的子域名都部署 CDN, ...

随机推荐

  1. Global.asax和HttpModule的执行顺序

    Application_Start-->用户自定义的HttpModule-->Application_BeginRequest   (注册->调用) 看到Init方法(在用户自定义的 ...

  2. [C#学习笔记]lock锁的解释与用法

    写在前面 前几时在写业务代码的时候,看到有用到lock这个方法的,而我竟然并不知道是做什么用的,所以查找了许多博客文章,弄懂了百分之七八十,在此做下笔记. 感谢博客 http://www.cnblog ...

  3. 推荐算法之 slope one 算法

    1.示例引入 多个吃货在某美团的某家饭馆点餐,如下两道菜: 可乐鸡翅: 红烧肉: 顾客吃过后,会有相关的星级评分.假设评分如下: 评分 可乐鸡翅 红烧肉 小明 4 5 小红 4 3 小伟 2 3 小芳 ...

  4. 频繁项集挖掘之Aprior和FPGrowth算法

    频繁项集挖掘的应用多出现于购物篮分析,现介绍两种频繁项集的挖掘算法Aprior和FPGrowth,用以发现购物篮中出现频率较高的购物组合. 基础知识 项:“属性-值”对.比如啤酒2罐.  项集:项的集 ...

  5. Java CAS ABA问题发生的场景分析

    提到了CAS操作存在问题,就是在CAS之前A变成B又变回A,CAS还是能够设置成功的,什么场景下会出现这个问题呢?查了一些资料,发现在下面的两种情况下会出现ABA问题. 1.A最开始的内存地址是X,然 ...

  6. day 64 crm项目(1) admin组件的初识别以及应用

    前情提要: 今天进入项目学习阶段,crm 一个又老又土又实用的入门项目 一:django回顾 二:事前准备 1:首先创建django项目 2:在model中创建数据 from django.db im ...

  7. 【xsy1237】 字符转换 矩阵快速幂

    题目大意:给你两个长度都为n,字符集为{a,b,c}的字符串S和T. 对于字符串S的任意一个字符,我们可以用cost[0]的代价,把字符a变成字符b.用cost[1]的代价,把字符b变成c,用cost ...

  8. (转)防止人为误操作MySQL数据库技巧一例

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://oldboy.blog.51cto.com/2561410/1321061 防止人 ...

  9. (转) Rabbitmq学习笔记

    详见原文: http://blog.csdn.net/shatty/article/details/9529463 Rabbitmq学习笔记

  10. seek()方法的使用

    seek()方法用于移动文件读取指针到指定位置. file.seek()方法标准格式是:file.seek(offset,whence) offset:开始的偏移量,也就是代表需要移动偏移的字节数 w ...