原理:
已知请求 url,获取域名,使用命令 :nslookup 域名
然后从得到的结果中去找是否有 Addresses 字段,有且该字段下 ip 地址要大于等于 2 个,即说明使用了 CDN
import re
from urllib.parse import urlparse
import subprocess
url = "http://www.hahah.com.cn/?file=54565f4s5f4d456d4g5df4gdf4"
res = urlparse(self.url)
demain = res.netloc
fw = open('D:\\..\\..\\demon.txt', 'w+')
pi = subprocess.Popen('nslookup {}'.format(netloc), shell=True, stdout=subprocess.PIPE)
out = pi.stdout.read().decode('gb18030') # 编码根据实际结果调整
# 判断返回值中是否有 Addresses 字段,且该字段下 ip 地址要大于等于 2 个,即说明使用了 CDN
strs = re.findall(r'Addresses:(\s*(((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\s*)*)', out, re.S)
# print(strs)
if strs == []:
pass
else:
l = strs[0][0].split('\r\n\t')
# print(l)
addersses = []
for address in l:
addersses.append(address.strip())
# print(addersses)
if len(addersses) > 1:
fw.write(self.url + '\n')
fw.close()