前言
- 非常感谢@lmc999(Github)大神的原创脚本,为大家提供了极大的便利
- 本脚本(Github项目地址)基于@lmc999的脚本改编而来,有感兴趣的小伙伴可以去Star一下
本脚本初衷在于很多小伙伴在意机器的解锁质量,大家都知道,DNS解锁是一个万人骑且随时切换的东西,可能会对车位的稳定程度存在一定的影响(未证实)
而我们常用的流媒体解锁检测脚本并不能分辨出机器具体的解锁方式,这就会让解锁质量无法直观的体现出来
所以在大家晒出评测的时候,很多MJJ还要多嘴问一句“请问是原生解锁还是DNS解锁?”
分享者可能还要看一下resolv,相当的麻烦,而且也分辨不出DNS具体劫持了哪些流媒体
因此我在原作基础上,增改了大约10%的代码,通过添加DNS解锁检测机制解决了这一问题,让分享变得一目了然
一键检测脚本
拷贝黏贴下述命令即可执行检测:
bash <(curl -L -s media.ispvps.com)

效果预览
搬瓦工HK_CMI | WAP_SG2 | 丽萨主机_9929 | BestVM_SG(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
当然,其他流媒体只要变更一下关键域名即可,此外在制表输出部分也要简单改动一下,非常简单,这里就不再赘述
脚本更新日志
- 2024/01/01 21:00 增加DNS/原生解锁检测机制
- 2024/01/02 03:00 改进检测机制,杜绝了部分误判
- 2024/01/02 23:00 增加双重DNS检测机制,修正原版日本流媒体检测报错,原版自带广告前置
- 2024/01/03 23:27 进一步增加DNS检测机制,增加代理服务器解锁检测,修正纯ipv6机器无法检测的bug

- 2024/01/07 21:55 增加对动画疯、MyTVSuper、4GTV的DNS解锁检测
- 2024/01/08 13:01 增加TikTok解锁检测