Python3 爬虫-判断 url 是否使用了CDN

原理:

已知请求 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()

 

你可能感兴趣的:(Python3 爬虫-判断 url 是否使用了CDN)