信息收集篇—用python判断目标地址是否使用CDN

信息收集篇—用python判断目标地址是否使用CDN,第1张

文章目录
  • 前言

  • 一、利用nslookup判断是否存在cdn


  • 二、使用socket.getaddrinfo(host,port)获取网站的IP


  • 三、其他方法


前言

CDN(内容分发网络)原理:就是将内容缓存在终端用户附近。



具体来说,CDN就是采用更多的缓存服务器(CDN边缘节点),布放在用户访问相对集中的地区或网络中。


当用户访问网站时,利用全局负载技术,将用户的访问指向距离最近的缓存服务器上,由缓存服务器响应用户请求。




一、利用nslookup判断是否存在cdn

def isCDN(domain):  # 判断目标是否存在CDN
    parm = 'nslookup ' + domain
    result = os.popen(parm).read()
    if result.count(".") > 8:   # nslookup [ip]的返回结果中,多于8个.代表返回多于1一个ip,即存在cdn
        print(domain + " 存在CDN")
    else:
        print(domain + " 不存在CDN")

if __name__ == '__main__':
    isCDN("jd.com")

返回结果:

原理:通过nslookup方法查询DNS的记录,若存在多条不同IP,则使用了CDN加速。



二、使用socket.getaddrinfo(host,port)获取网站的IP

def get_CDNlist(domain):  # 获取域名解析出的IP列表
    ip_list = []
    number = 0
    try:
        addrs = socket.getaddrinfo(domain, 'http')
        for item in addrs:
            # print(item)
            if item[4][0] not in ip_list:
                ip_list.append(item[4][0])
                number += 1
    except Exception as e:
        print(str(e))

    if number > 1:  # getaddrinfo的返回结果中,多于一个ip,即存在cdn
        print('存在cdn')
    return ip_list

if __name__ == '__main__':
    print(get_CDNlist("jd.com"))

返回结果:

原理:使用socket.getaddrinfo(host,port)这种方式去获取网站的IP,如果目标站点使用了CDN的话,那么getaddrinfo就会返回多个IP。


利用返回的IP数量来进行判断。



三、其他方法

站长之家多地ping : 若异地ping出相同IP,则未使用CDN;否则使用。



同时本地ping出不同IP:

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/579214.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-11
下一篇 2022-04-11

发表评论

登录后才能评论

评论列表(0条)

保存