当前位置:网站首页>批量检测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()
边栏推荐
- Sword finger offer 62 The last remaining number in the circle
- flutter 中间一个元素,最右边一个元素
- How to use redis ordered collection
- JVM面试篇
- Email picture attachment
- RTL8189FS如何关闭Debug信息
- 【做题打卡】集成每日5题分享(第二期)
- SQL server calculates the daily average and annual average of the whole province
- If you want to rewind the video picture, what simple methods can you use?
- Spend a week painstakingly sorting out the interview questions and answers of high-frequency software testing / automated testing
猜你喜欢
MySQL constraints and multi table query example analysis
[learn C and fly] 4day Chapter 2 program in C language (exercise 2.5 generate power table and factorial table
LeetCode刷题(十)——顺序刷题46至50
What are the necessary things for students to start school? Ranking list of Bluetooth headsets with good sound quality
An analysis of circuit for quick understanding
CVPR 2022 | Dalian Institute of technology proposes a self calibration lighting framework for low light level image enhancement of real scenes
剑指 Offer 62. 圆圈中最后剩下的数字
LFM signal denoising, time-frequency analysis, filtering
golang---锁
MySQL operates the database through the CMD command line, and the image cannot be found during the real machine debugging of fluent
随机推荐
The wave of layoffs in big factories continues, but I, who was born in both non undergraduate schools, turned against the wind and entered Alibaba
Email picture attachment
Mathematics in Sinorgchem: computational geometry
What are the necessary things for students to start school? Ranking list of Bluetooth headsets with good sound quality
RTL8189FS如何关闭Debug信息
CVPR 2022 | 大连理工提出自校准照明框架,用于现实场景的微光图像增强
Open那啥的搭建文档
CoordinatorLayout + TabLayout + ViewPager2(里面再嵌套一个RecyclerView),RecyclerView的滑动冲突解决
附加:信息脱敏;
CVPR 2022 | Dalian Institute of technology proposes a self calibration lighting framework for low light level image enhancement of real scenes
Kibana controls es
剑指 Offer 42. 连续子数组的最大和
【带你学c带你飞】1day 第2章 (练习2.2 求华氏温度 100°F 对应的摄氏温度
2022 safety officer-c certificate examination questions and mock examination
Additional: information desensitization;
MySQL constraints and multi table query example analysis
How to execute an SQL in MySQL
[learn C and fly] 2day Chapter 8 pointer (practice 8.1 password unlocking)
leetcode2310. The one digit number is the sum of integers of K (medium, weekly)
Divorce for 3 years to discover the undivided joint property, or