当前位置:网站首页>批量检测url是否存在cdn—高准确率
批量检测url是否存在cdn—高准确率
2022-07-02 02:28:00 【山山而川'】
看了网上对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()边栏推荐
- Decipher the AI black technology behind sports: figure skating action recognition, multi-mode video classification and wonderful clip editing
- Which is a good Bluetooth headset of about 300? 2022 high cost performance Bluetooth headset inventory
- Learning notes of software testing -- theoretical knowledge of software testing
- Software testing learning notes - network knowledge
- Email picture attachment
- What style of Bluetooth headset is easy to use? High quality Bluetooth headset ranking
- Vsocde has cli every time it is opened js
- 剑指 Offer II 031. 最近最少使用缓存
- 超图iServer rest服务之feature查询
- STM32F103 - two circuit PWM control motor
猜你喜欢

【带你学c带你飞】1day 第2章 (练习2.2 求华氏温度 100°F 对应的摄氏温度

Cesium dynamic diffusion point effect

软件开发生命周期 --瀑布模型

Webgpu (I): basic concepts

Golang lock

MySQL约束与多表查询实例分析

Opencascade7.6 compilation

Pytest testing framework

Decipher the AI black technology behind sports: figure skating action recognition, multi-mode video classification and wonderful clip editing

CVPR 2022 | 大连理工提出自校准照明框架,用于现实场景的微光图像增强
随机推荐
Pytest testing framework
Deployment practice and problem solving of dash application development environment based on jupyter Lab
AR增强现实可应用的场景
2022 safety officer-c certificate examination questions and mock examination
A quick understanding of digital electricity
The middle element and the rightmost element of the shutter
DNS domain name resolution
Quality means doing it right when no one is looking
How to build and use redis environment
Is bone conduction earphone better than traditional earphones? The sound production principle of bone conduction earphones is popular science
Bash bounce shell encoding
【liuyubobobo-玩转Leetcode算法面试】【00】课程概述
2022低压电工考试题模拟考试题库模拟考试平台操作
Comparative analysis of MVC, MVP and MVVM, source code analysis
leetcode373. 查找和最小的 K 对数字(中等)
Pat a-1165 block reversing (25 points)
How to turn off debug information in rtl8189fs
【毕业季】研究生学长分享怎样让本科更有意义
Sword finger offer 29 Print matrix clockwise
花一个星期时间呕心沥血整理出高频软件测试/自动化测试面试题和答案