流媒体解锁检测脚本—增加DNS/原生解锁检测机制

技术交流 无标签
1 49
xiaofei
xiaofei 普通会员 2024-03-28 10:57:43
用户等级:2级

前言

  • 非常感谢@lmc999(Github)大神的原创脚本,为大家提供了极大的便利

  • 本脚本(Github项目地址)基于@lmc999的脚本改编而来,有感兴趣的小伙伴可以去Star一下

本脚本初衷在于很多小伙伴在意机器的解锁质量,大家都知道,DNS解锁是一个万人骑且随时切换的东西,可能会对车位的稳定程度存在一定的影响(未证实)
而我们常用的流媒体解锁检测脚本并不能分辨出机器具体的解锁方式,这就会让解锁质量无法直观的体现出来
所以在大家晒出评测的时候,很多MJJ还要多嘴问一句“请问是原生解锁还是DNS解锁?”
分享者可能还要看一下resolv,相当的麻烦,而且也分辨不出DNS具体劫持了哪些流媒体
因此我在原作基础上,增改了大约10%的代码,通过添加DNS解锁检测机制解决了这一问题,让分享变得一目了然

一键检测脚本

拷贝黏贴下述命令即可执行检测:

bash <(curl -L -s media.ispvps.com)

Hits

效果预览

搬瓦工HK_CMIWAP_SG2丽萨主机_9929BestVM_SG(ipv6)
搬瓦工HK_CMIWAP_SG2丽萨主机_9929BestVM_SG_Lite(ipv6)

脚本原理

检测原理其实相对简单,就是针对各家流媒体关键域名进行DNS检测

  • 若发现域名解析结果与DNS服务器地址一致,则判定为DNS解锁

  • 若发现域名解析结果指向非DNS服务器地址,则判定为原生解锁

  • 【更新】增加多种检测机制,确保判断结果精准无误

当然,这样的判定方式可能存在被服务商欺骗的漏洞,但是目前99%的结果应该还是准确的,人也没必要这么做
后续如果有时间,也可以增加针对IP对应ASN的检测,以杜绝相关漏洞,当然目前没有这个必要,所以暂时就不费那个劲了,等有了report再说

脚本变更片段

其实,申明上述原理以后,写脚本就变得非常简单了,以奈飞为例,在对应function加入如下代码即可实现

    local resultdns=$(nslookup netflix.com)
    local resultinlines=(${resultdns//$'\n'/ })
    for i in ${resultinlines[*]}
    do
        if [[ $i == "netflix.com" ]]; then
            local resultdnsindex=$(( $resultindex + 2 ))
        fi
        local resultindex=$(( $resultindex + 1 ))
    done
    if [[ ${resultinlines[1]} == ${resultinlines[$resultdnsindex]} ]]; then
        local resultunlocktype="${Font_Yellow}DNS 解锁${Font_Suffix}"
    else
        local resultunlocktype="${Font_Green}原生解锁${Font_Suffix}"
    fi

当然,其他流媒体只要变更一下关键域名即可,此外在制表输出部分也要简单改动一下,非常简单,这里就不再赘述


楼主签名:
回帖
回复列表