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()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章