logo NodeSeekbeta

【技术】关于常用脚本NetFlix解锁检测不准的问题

起因是不同的解锁检测脚本在同一台澳大利亚悉尼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来说最好的解锁检查方式还是自己试一下 xhj015

12
12

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有61574位seeker

🎉欢迎新用户🎉