IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 批量检测url是否存在cdn—高准确率 -> 正文阅读

[系统运维]批量检测url是否存在cdn—高准确率

看了网上对url批量检测cdn的脚本没有多少也不准确,这里写一下

一般判断cdn的方法如下

全球ping

显示的ip地址超过一个则使用了cdn,这是最靠谱的方法

nslookup

1. nslookup默认解析

使用 "nslookup 域名",如果目标有CDN服务的话,那么“非权威应答”中的“addresses”中的IP数 >=2个,但是也会有误报

2.?不同DNS域名解析

不同DNS域名解析情况对比,判断其是否使用了CDN。不同DNS解析结果若不一样,很有可能存在CDN服务

所以我们可以根据这两点来判断是否使用了cdn

批量检测脚本

如果引用全球ping的api接口进行检测,那检测效率会受限于服务器网速以及可能遇到被封ip的风险。这里使用nslookup进行多次检测,以确认是否使用cdn,准确率99%

cdn.py

from subprocess import PIPE, Popen
import re
import os
from colorama import init,Fore
init(autoreset=True)
import argparse
def args():
    parser = argparse.ArgumentParser(description='cdn批量检测脚本')
    parser.add_argument('-f',type=str,help='批量检测,请将url放在txt文档中,一个一行')
    args = parser.parse_args()
    ssrc = """
                                    
      ______  _____________   ____  
     /  ___/ /  ___/\_  __ \_/ ___\ 
     \___ \  \___ \  |  | \/\  \___ 
    /____  >/____  > |__|    \___  >
         \/      \/              \/ 
    Author: 山山而川
    """
    print(ssrc)
    if args.f:
        filename = args.f
        if os.path.exists(filename):
            check_cdn(filename)
        else:
            print("输入的文件名不存在!")
def check_cdn(filename):
    result_list = []
    for url in open(filename,'r'):
        url = url.replace("\n","")
        ip = url.replace("http://","").replace("https://","").replace("/","").replace("\n","")
        proc = Popen('nslookup %s' %(ip),stdin=None,stdout=PIPE,stderr=PIPE,shell=True)
        outinfo, errinfo = proc.communicate()
        info = outinfo.decode('gbk')
        ip_list = re.findall(r"\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}",info,re.S)
        if len(ip_list) >= 3:
            print(Fore.RED+"[-]",url," 存在cdn")
            continue
        if len(ip_list) == 1:
            print(Fore.BLUE+"[-]",url," 请求超时")
            continue
        if len(ip_list) == 2:
            #二次判断,提高准确率
            proc = Popen('nslookup %s 223.5.5.5' %(ip),stdin=None,stdout=PIPE,stderr=PIPE,shell=True)
            outinfo, errinfo = proc.communicate()
            info1 = outinfo.decode('gbk')
            ip_list1 = re.findall(r"\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}",info1,re.S)
            if len(ip_list1) >= 3:
                print(Fore.RED+"[-]",url," 存在cdn")
                continue
            if len(ip_list1) ==2:
                name1 = re.findall(r'名称:.*Address:.*?(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})',info,re.S)[0]
                name2 = re.findall(r'名称:.*Address:.*?(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})',info1,re.S)[0]
                if name1 != name2:
                    print(Fore.RED+"[-]",url," 存在cdn")
                    continue
                if name1 == name2:
                    print(Fore.GREEN+"[+] %s 不存在cdn \t真实ip: %s" %(url,name2))
                    result_list.append(name2)
    lis = list(set(result_list))
    if len(lis):
        for r in lis:
            with open("result.txt",'a') as f:
                            f.write(r+"\n")
        print("检测完毕,不存在cdn的url ip保存在当前路径'result.txt'")
    if not len(lis):
        print("检测完毕!")

if __name__ == '__main__':
    args()
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-07-03 11:10:24  更:2022-07-03 11:13:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 21:38:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码