起因是不同的解锁检测脚本在同一台澳大利亚悉尼VPS上的检测结果出现偏差,于是研究下误检测产生的原因
最常用的 bash <(curl -L -s media.ispvps.com)
============[ Multination ]============
Dazn: 原生解锁 Yes (Region: AU)
TikTok: 原生解锁 Yes (Region: AU)
HotStar: No
Disney+: 原生解锁 Yes (Region: AU)
Netflix: 原生解锁 Originals Only
YouTube Premium: 原生解锁 No (Region: CN)
Amazon Prime Video: 原生解锁 Yes (Region: AU)
TVBAnywhere+: 原生解锁 Yes
iQyi Oversea Region: 原生解锁 AU
Viu.com: No
YouTube CDN: Sydney, N.S.W.
Netflix Preferred CDN: Sydney, N.S.W.
Spotify Registration: 原生解锁 Yes (Region: AU)
Steam Currency: AUD
ChatGPT: 原生解锁 Yes (Region: AU)
Bing Region: AU
Instagram Licensed Audio: Yes
=======================================
另一个 bash <(curl -L -s https://netflix.dad/detect-script)
============[ Multination ]============
Dazn: Yes (Region: AU)
HotStar: No
Disney+: Yes (Region: AU)
Netflix: Yes (Region: AU)
YouTube Premium: No (Region: CN)
Amazon Prime Video: Yes (Region: AU)
TVBAnywhere+: Yes (Region: AU)
iQyi Oversea: Yes (Region: AU)
Bilibili Anime: No (Country: 澳大利亚)
Viu.com: No
Tiktok: Yes (Region: AU)
YouTube CDN: Sydney, N.S.W.
Google Location: China
Netflix Preferred CDN: Sydney,AU (ipv4-c054-syd002-ix)
Spotify Region: AU
Steam Currency: AUD
=======================================
可以看到两者一个检测结果是解锁,一个是不解锁。 经检验发现 https://netflix.dad/detect-script 的结果是准确的 ,实际上vps可以完整解锁。于是扒一下两个脚本代码检测的逻辑区别
先是 bash <(curl -L -s media.ispvps.com)
function MediaUnlockTest_Netflix() {
local checkunlockurl="netflix.com"
local result1=`Check_DNS_1 ${checkunlockurl}`
local result2=`Check_DNS_2 ${checkunlockurl}`
local result3=`Check_DNS_3 ${checkunlockurl}`
local resultunlocktype=`Get_Unlock_Type ${resultP} ${result1} ${result2} ${result3}`
local result1=$(curl $useNIC $usePROXY $xForward -${1} --user-agent "${UA_Browser}" -fsL --max-time 10 "https://www.netflix.com/title/70143836" | sed -n 's/.*"isPlayable":\([^,}]*\).*/\1/p')
local result2=$(curl $useNIC $usePROXY $xForward -${1} --user-agent "${UA_Browser}" -fsL --max-time 10 "https://www.netflix.com/title/80018499" | sed -n 's/.*"isPlayable":\([^,}]*\).*/\1/p')
if [[ "$result1" == "true" ]]; then
local region=$(curl $useNIC $usePROXY $xForward -${1} --user-agent "${UA_Browser}" -fs --max-time 10 --write-out %{redirect_url} --output /dev/null "https://www.netflix.com/login" 2>&1 | cut -d '/' -f4 | cut -d '-' -f1 | tr [:lower:] [:upper:])
if [[ ! -n "$region" ]]; then
region="US"
fi
echo -n -e "\r Netflix:\t\t${resultunlocktype}\t${Font_Green}Yes (Region: ${region})${Font_Suffix}\n"
return
elif [[ "$result2" == "true" ]]; then
echo -n -e "\r Netflix:\t\t${resultunlocktype}\t${Font_Yellow}Originals Only${Font_Suffix}\n"
return
elif [[ "$result2" == "false" ]]; then
echo -n -e "\r Netflix:\t\t\t\t${Font_Red}No${Font_Suffix}\n"
return
else
echo -n -e "\r Netflix:\t\t\t\t${Font_Red}Failed (Network Connection)${Font_Suffix}\n"
return
fi
}
可以看到其逻辑是先检测绝命毒师 https://www.netflix.com/title/70143836 的解锁情况,如果解锁则返回YES,不解锁则检测无论如何都能打开的测试图案 https://www.netflix.com/au/title/80018499 ,可以打开便是Originals Only,不能就是No。
也就是说,此脚本只检测了《绝命毒师》的解锁情况。因此对澳大利亚等绝命毒师本身不可用的国家地区就会出现错误检测
之后是 bash <(curl -L -s https://netflix.dad/detect-script)
function MediaUnlockTest_Netflix() {
local result1=$(curl $curlArgs -${1} --user-agent "${UA_Browser}" -fsLI -X GET --write-out %{http_code} --output /dev/null --max-time 10 --tlsv1.3 "https://www.netflix.com/title/81280792" 2>&1)
local result2=$(curl $curlArgs -${1} --user-agent "${UA_Browser}" -fsLI -X GET --write-out %{http_code} --output /dev/null --max-time 10 --tlsv1.3 "https://www.netflix.com/title/70143836" 2>&1)
local regiontmp=$(curl $curlArgs -${1} -fSsI -X GET --max-time 10 --write-out %{redirect_url} --output /dev/null --tlsv1.3 "https://www.netflix.com/login" 2>&1 )
if [[ "$regiontmp" == "curl"* ]]; then
echo -n -e "\r Netflix:\t\t\t\t${Font_Red}Failed (Network Connection)${Font_Suffix}\n"
return
fi
local region=$(echo $regiontmp | cut -d '/' -f4 | cut -d '-' -f1 | tr [:lower:] [:upper:])
if [[ ! -n "$region" ]]; then
region="US"
fi
if [[ "$result1" == "404" ]] && [[ "$result2" == "404" ]]; then
echo -n -e "\r Netflix:\t\t\t\t${Font_Yellow}Originals Only (Region: ${region})${Font_Suffix}\n"
return
elif [[ "$result1" == "403" ]] && [[ "$result2" == "403" ]]; then
echo -n -e "\r Netflix:\t\t\t\t${Font_Red}No${Font_Suffix}\n"
return
elif [[ "$result1" == "200" ]] || [[ "$result2" == "200" ]]; then
echo -n -e "\r Netflix:\t\t\t\t${Font_Green}Yes (Region: ${region})${Font_Suffix}\n"
return
elif [[ "$result1" == "000" ]]; then
echo -n -e "\r Netflix:\t\t\t\t${Font_Red}Failed (Network Connection)${Font_Suffix}\n"
return
fi
echo -n -e "\r Netflix:\t\t\t\t${Font_Red}Failed${Font_Suffix}\n"
}
相比之下,netflix.dad/detect-script 的逻辑是分别检查绝命毒师 https://www.netflix.com/title/70143836 和LEGO Ninjago https://www.netflix.com/title/81280792 的解锁情况,只要其中一项正确解锁,就是YES。只有当两项都返回404时输出Originals Only。因此对于绝命毒师本身就不提供的地区也能够正确检测解锁情况
希望解锁脚本能够更加准确和完善。当然对mjj来说最好的解锁检查方式还是自己试一下 
给腿
牛逼
(curl -L -s https://netflix.dad/detect-script) GitHub地址在哪里。
@埃隆马克斯 #3 https://github.com/1-stream/RegionRestrictionCheck
@xy 大佬快来修复一下你的脚本
对比一下这个
@YakaMiraris #0 感谢分享,稍晚更新一下
@fscarmen #6 这个是正确的,但不能正确获取解锁的地区。
猜可能检索检测用了两个,但只用了绝命毒师的链接去看地区?回去看一眼
@xy #7
@YakaMiraris #8
项目地址: https://github.com/lmc999/RegionRestrictionCheck/
通过两个节目,只要任意一个解锁 ,即判定为解锁
LEGO Ninjago: https://www.netflix.com/title/81280792
絕命毒師: https://www.netflix.com/title/70143836
如果解锁,再通过《絕命毒師》来判断归属