@@ -403,19 +403,17 @@ function MediaUnlockTest_BBCiPLAYER() {
403403}
404404
405405function MediaUnlockTest_Netflix() {
406- local tmpresult1=$( curl $useNIC $usePROXY $xForward -${1} -fsL --max-time 10 " https://www.netflix.com/title/81280792" 2>&1 )
407- local tmpresult2=$( curl $useNIC $usePROXY $xForward -${1} -fsL --max-time 10 " https://www.netflix.com/title/70143836" 2>&1 )
408- local result1=$( echo $tmpresult1 | grep -oP ' "isPlayable":\K(true|false)' )
409- local result2=$( echo $tmpresult2 | grep -oP ' "isPlayable":\K(true|false)' )
406+ local result1=$( curl $useNIC $usePROXY $xForward -${1} -fsL --write-out %{http_code} --output /dev/null --max-time 10 " https://www.netflix.com/title/81280792" -H ' host: www.netflix.com' -H ' connection: keep-alive' -H ' sec-ch-ua: "Chromium";v="122", "Not(A:Brand";v="24", "Microsoft Edge";v="122"' -H ' sec-ch-ua-mobile: ?0' -H ' sec-ch-ua-platform: "Windows"' -H ' upgrade-insecure-requests: 1' -H ' user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0' -H ' accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7' -H ' sec-fetch-site: none' -H ' sec-fetch-mode: navigate' -H ' sec-fetch-user: ?1' -H ' sec-fetch-dest: document' -H ' accept-language: zh-CN,zh;q=0.9' 2>&1 )
407+ local result2=$( curl $useNIC $usePROXY $xForward -${1} -fsL --write-out %{http_code} --output /dev/null --max-time 10 " https://www.netflix.com/title/70143836" -H ' host: www.netflix.com' -H ' connection: keep-alive' -H ' sec-ch-ua: "Chromium";v="122", "Not(A:Brand";v="24", "Microsoft Edge";v="122"' -H ' sec-ch-ua-mobile: ?0' -H ' sec-ch-ua-platform: "Windows"' -H ' upgrade-insecure-requests: 1' -H ' user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0' -H ' accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7' -H ' sec-fetch-site: none' -H ' sec-fetch-mode: navigate' -H ' sec-fetch-user: ?1' -H ' sec-fetch-dest: document' -H ' accept-language: zh-CN,zh;q=0.9' 2>&1 )
410408
411- if [[ " $result1 " == " false " ]] && [[ " $result2 " == " false " ]]; then
409+ if [[ " $result1 " == " 404 " ]] && [[ " $result2 " == " 404 " ]]; then
412410 echo -n -e " \r Netflix:\t\t\t\t${Font_Yellow} Originals Only${Font_Suffix} \n"
413411 return
414- elif [ -z " $result1 " ] && [ -z " $result2 " ]; then
412+ elif [[ " $result1 " == " 403 " ]] && [[ " $result2 " == " 403 " ] ]; then
415413 echo -n -e " \r Netflix:\t\t\t\t${Font_Red} No${Font_Suffix} \n"
416414 return
417- elif [[ " $result1 " == " true " ]] || [[ " $result2 " == " true " ]]; then
418- local region=$( echo $tmpresult1 | grep -oP ' "requestCountry":{"id":"\K\w\w' | head -n 1)
415+ elif [[ " $result1 " == " 200 " ]] || [[ " $result2 " == " 200 " ]]; then
416+ local region=$( curl -fsL --max-time 10 " https://www.netflix.com/title/70143836 " 2>&1 | grep -oP ' "requestCountry":{"id":"\K\w\w' | head -n 1)
419417 echo -n -e " \r Netflix:\t\t\t\t${Font_Green} Yes (Region: ${region} )${Font_Suffix} \n"
420418 return
421419 else
@@ -725,7 +723,7 @@ function MediaUnlockTest_PlutoTV() {
725723}
726724
727725function MediaUnlockTest_HBOMax() {
728- local tmpresult=$( curl $useNIC $usePROXY $xForward -${1} ${ssll} -sS -o /dev/null -L --max-time 10 -w ' %{url_effective}\n' " https://www.hbomax .com/" 2>&1 )
726+ local tmpresult=$( curl $useNIC $usePROXY $xForward -${1} ${ssll} -sS -o /dev/null -L --max-time 10 -w ' %{url_effective}\n' " https://www.max .com/" 2>&1 )
729727 if [[ " $tmpresult " == " curl" * ]]; then
730728 echo -n -e " \r HBO Max:\t\t\t\t${Font_Red} Failed (Network Connection)${Font_Suffix} \n"
731729 return
@@ -1405,29 +1403,27 @@ function MediaUnlockTest_HBOGO_EUROPE() {
14051403}
14061404
14071405function MediaUnlockTest_EPIX() {
1408- tmpToken=$( curl $useNIC $usePROXY $xForward -${1} ${ssll} -s -X POST --max-time 10 " https://api.epix.com/v2/sessions" -H " Content-Type: application/json" -d ' {"device":{"guid":"e2add88e-2d92-4392-9724-326c2336013b","format":"console","os":"web","app_version":"1.0.2","model":"browser","manufacturer":"google"},"apikey":"f07debfcdf0f442bab197b517a5126ec","oauth":{"token":null}}' 2>&1 )
1406+ tmpToken=$(curl $useNIC $usePROXY $xForward -${1} ${ssll} -s -X POST --max-time 10 'https://api.epix.com/v2/sessions' -X POST -H 'host: api.epix.com' -H 'connection: keep-alive' -H 'sec-ch-ua: "Chromium";v="122", "Not(A:Brand";v="24", "Microsoft Edge";v="122"' -H 'traceparent: 00-000000000000000015b7efdb572b7bf2-4aefaea90903bd1f-01' -H 'sec-ch-ua-mobile: ?0' -H 'x-datadog-origin: rum' -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0' -H 'x-datadog-sampling-priority: 1' -H 'accept: application/json' -H 'x-datadog-trace-id: 1564983120873880562' -H 'x-datadog-parent-id: 5399726519264460063' -H 'sec-ch-ua-platform: "Windows"' -H 'origin: https://www.mgmplus.com' -H 'sec-fetch-site: cross-site' -H 'sec-fetch-mode: cors' -H 'sec-fetch-dest: empty' -H 'referer: https://www.mgmplus.com/' -H 'accept-language: zh-CN,zh;q=0.9' -H 'content-type: application/json' -d '{"device":{"guid":"7a0baaaf-384c-45cd-a21d-310ca5d3002a","format":"console","os":"web","display_width":1865,"display_height":942,"app_version":"1.0.2","model":"browser","manufacturer":"google"},"apikey":"53e208a9bbaee479903f43b39d7301f7"}' 2>&1)
14091407 if [ -z " $tmpToken " ]; then
1410- echo -n -e " \r Epix :\t\t\t\t\t${Font_Red} Failed (Network Connection)${Font_Suffix} \n"
1408+ echo -n -e " \r MGM+ :\t\t\t\t\t${Font_Red} Failed (Network Connection)${Font_Suffix} \n"
14111409 elif [[ " $tmpToken " == " error code" * ]]; then
1412- echo -n -e " \r Epix :\t\t\t\t\t${Font_Red} No${Font_Suffix} \n"
1410+ echo -n -e " \r MGM+ :\t\t\t\t\t${Font_Red} No${Font_Suffix} \n"
14131411 return
14141412 fi
14151413
14161414 EpixToken=$( echo $tmpToken | python -m json.tool 2> /dev/null | grep ' session_token' | cut -f4 -d' "' )
1417- local tmpresult=$( curl $useNIC $usePROXY $xForward -${1} ${ssll} -X POST -s --max-time 10 " https://api.epix.com/v2/movies/16921/play" -d ' {}' -H " X-Session-Token: $EpixToken " 2>&1 )
1415+ local tmpresult=$(curl $useNIC $usePROXY $xForward -${1} ${ssll} -X POST -s --max-time 10 'https://api.epix.com/graphql' -X POST -H 'host: api.epix.com' -H 'connection: keep-alive' -H 'sec-ch-ua: "Chromium";v="122", "Not(A:Brand";v="24", "Microsoft Edge";v="122"' -H 'traceparent: 00-0000000000000000603047c112148412-32d64f8c890631ef-01' -H 'sec-ch-ua-mobile: ?0' -H 'x-datadog-origin: rum' -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0' -H 'x-datadog-sampling-priority: 1' -H 'accept: application/json' -H "x-session-token: ${EpixToken}" -H 'x-datadog-trace-id: 6931118721080787986' -H 'x-datadog-parent-id: 3663202811925377519' -H 'sec-ch-ua-platform: "Windows"' -H 'origin: https://www.mgmplus.com' -H 'sec-fetch-site: cross-site' -H 'sec-fetch-mode: cors' -H 'sec-fetch-dest: empty' -H 'referer: https://www.mgmplus.com/' -H 'accept-language: zh-CN,zh;q=0.9' -H 'content-type: application/json' -d '{"operationName":"PlayFlow","variables":{"id":"c2VyaWVzOzEwMTc=","supportedActions":["open_url","show_notice","start_billing","play_content","log_in","noop","confirm_provider","unlinked_provider"],"streamTypes":[{"encryptionScheme":"CBCS","packagingSystem":"DASH"},{"encryptionScheme":"CENC","packagingSystem":"DASH"},{"encryptionScheme":"NONE","packagingSystem":"HLS"},{"encryptionScheme":"SAMPLE_AES","packagingSystem":"HLS"}]},"query":"fragment ShowNotice on ShowNotice {\n type\n actions {\n continuationContext\n text\n __typename\n }\n description\n title\n __typename\n}\n\nfragment OpenUrl on OpenUrl {\n type\n url\n __typename\n}\n\nfragment Content on Content {\n title\n __typename\n}\n\nfragment Movie on Movie {\n id\n shortName\n __typename\n}\n\nfragment Episode on Episode {\n id\n series {\n shortName\n __typename\n }\n seasonNumber\n number\n __typename\n}\n\nfragment Preroll on Preroll {\n id\n __typename\n}\n\nfragment ContentUnion on ContentUnion {\n ...Content\n ...Movie\n ...Episode\n ...Preroll\n __typename\n}\n\nfragment PlayContent on PlayContent {\n type\n continuationContext\n heartbeatToken\n currentItem {\n content {\n ...ContentUnion\n __typename\n }\n __typename\n }\n nextItem {\n content {\n ...ContentUnion\n __typename\n }\n showNotice {\n ...ShowNotice\n __typename\n }\n showNoticeAt\n __typename\n }\n amazonPlaybackData {\n pid\n playbackToken\n materialType\n __typename\n }\n playheadPosition\n vizbeeStreamInfo {\n customStreamInfo\n __typename\n }\n closedCaptions {\n ttml {\n location\n __typename\n }\n vtt {\n location\n __typename\n }\n xml {\n location\n __typename\n }\n __typename\n }\n hints {\n duration\n seekAllowed\n trackingEnabled\n trackingId\n __typename\n }\n streams(types: $streamTypes) {\n playlistUrl\n closedCaptionsEmbedded\n packagingSystem\n encryptionScheme\n videoQuality {\n height\n width\n __typename\n }\n widevine {\n authenticationToken\n licenseServerUrl\n __typename\n }\n playready {\n authenticationToken\n licenseServerUrl\n __typename\n }\n fairplay {\n authenticationToken\n certificateUrl\n licenseServerUrl\n __typename\n }\n __typename\n }\n __typename\n}\n\nfragment StartBilling on StartBilling {\n type\n __typename\n}\n\nfragment LogIn on LogIn {\n type\n __typename\n}\n\nfragment Noop on Noop {\n type\n __typename\n}\n\nfragment PreviewContent on PreviewContent {\n type\n title\n description\n stream {\n sources {\n hls {\n location\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n}\n\nfragment ConfirmProvider on ConfirmProvider {\n type\n __typename\n}\n\nfragment UnlinkedProvider on UnlinkedProvider {\n type\n __typename\n}\n\nquery PlayFlow($id: String!, $supportedActions: [PlayFlowActionEnum!]!, $context: String, $behavior: BehaviorEnum = DEFAULT, $streamTypes: [StreamDefinition!]) {\n playFlow(\n id: $id\n supportedActions: $supportedActions\n context: $context\n behavior: $behavior\n ) {\n ...ShowNotice\n ...OpenUrl\n ...PlayContent\n ...StartBilling\n ...LogIn\n ...Noop\n ...PreviewContent\n ...ConfirmProvider\n ...UnlinkedProvider\n __typename\n }\n}"}' 2>&1)
14181416
1419- local result=$( echo $tmpresult | python -m json.tool 2> /dev/null | grep status | cut -f4 -d' "' )
1420- if [[ " $result " == " PROXY_DETECTED" ]]; then
1421- echo -n -e " \r Epix:\t\t\t\t\t${Font_Red} No${Font_Suffix} \n"
1422- return
1423- elif [[ " $result " == " GEO_BLOCKED" ]]; then
1424- echo -n -e " \r Epix:\t\t\t\t\t${Font_Red} No${Font_Suffix} \n"
1417+ local isBlocked=$( echo $tmpresult | grep ' MGM+ is only available in the United States' )
1418+ local isOK=$( echo $tmpresult | grep StartBilling)
1419+ if [ -n " $isBlocked " ]; then
1420+ echo -n -e " \r MGM+:\t\t\t\t\t${Font_Red} No${Font_Suffix} \n"
14251421 return
1426- elif [[ " $result " == " NOT_SUBSCRIBED " ] ]; then
1427- echo -n -e " \r Epix :\t\t\t\t\t${Font_Green} Yes${Font_Suffix} \n"
1422+ elif [ -n " $isOK " ]; then
1423+ echo -n -e " \r MGM+ :\t\t\t\t\t${Font_Green} Yes${Font_Suffix} \n"
14281424 return
14291425 else
1430- echo -n -e " \r Epix :\t\t\t\t\t${Font_Red} Failed${Font_Suffix} \n"
1426+ echo -n -e " \r MGM+ :\t\t\t\t\t${Font_Red} Failed${Font_Suffix} \n"
14311427 return
14321428 fi
14331429
@@ -3321,7 +3317,7 @@ function NA_UnlockTest() {
33213317 MediaUnlockTest_HBOMax ${1} &
33223318 )
33233319 wait
3324- local array=(" FOX:" " Hulu:" " NFL+" " ESPN+:" " Epix :" " Starz:" " Philo:" " FXNOW:" )
3320+ local array=(" FOX:" " Hulu:" " NFL+" " ESPN+:" " MGM+ :" " Starz:" " Philo:" " FXNOW:" )
33253321 echo_Result ${result} ${array}
33263322 MediaUnlockTest_TLCGO ${1}
33273323 echo " $result " | grep " HBO Max:"
@@ -3354,12 +3350,12 @@ function NA_UnlockTest() {
33543350 MediaUnlockTest_Popcornflix ${1} &
33553351 MediaUnlockTest_Crunchyroll ${1} &
33563352 MediaUnlockTest_ATTNOW ${1} &
3357- MediaUnlockTest_KBSAmerican ${1} &
3353+ # MediaUnlockTest_KBSAmerican ${1} &
33583354 MediaUnlockTest_KOCOWA ${1} &
3359- MediaUnlockTest_MathsSpot ${1} &
3355+ # MediaUnlockTest_MathsSpot ${1} &
33603356 )
33613357 wait
3362- local array=(" Sling TV:" " Pluto TV:" " Acorn TV:" " SHOWTIME:" " encoreTVB:" " Funimation:" " Discovery" " Paramount+:" " Peacock TV:" " Popcornflix:" " Crunchyroll:" " Directv Stream:" " KBS American: " " KOCOWA: " " Maths Spot :" )
3358+ local array=(" Sling TV:" " Pluto TV:" " Acorn TV:" " SHOWTIME:" " encoreTVB:" " Funimation:" " Discovery" " Paramount+:" " Peacock TV:" " Popcornflix:" " Crunchyroll:" " Directv Stream:" " KOCOWA:" )
33633359 echo_Result ${result} ${array}
33643360 ShowRegion CA
33653361 local result=$(
@@ -3379,12 +3375,12 @@ function EU_UnlockTest() {
33793375 MediaUnlockTest_Funimation ${1} &
33803376 MediaUnlockTest_SkyShowTime ${1} &
33813377 MediaUnlockTest_HBOMax ${1} &
3382- MediaUnlockTest_MathsSpot ${1} &
3378+ # MediaUnlockTest_MathsSpot ${1} &
33833379 # MediaUnlockTest_HBO_Nordic ${1}
33843380 # MediaUnlockTest_HBOGO_EUROPE ${1}
33853381 )
33863382 wait
3387- local array=(" Rakuten TV:" " Funimation:" " SkyShowTime:" " HBO Max:" " Maths Spot: " )
3383+ local array=(" Rakuten TV:" " Funimation:" " SkyShowTime:" " HBO Max:" )
33883384 echo_Result ${result} ${array}
33893385 ShowRegion GB
33903386 local result=$(
@@ -3401,15 +3397,15 @@ function EU_UnlockTest() {
34013397 echo_Result ${result} ${array}
34023398 ShowRegion FR
34033399 local result=$(
3404- MediaUnlockTest_Salto ${1} &
3400+ # MediaUnlockTest_Salto ${1} &
34053401 MediaUnlockTest_CanalPlus ${1} &
34063402 MediaUnlockTest_Molotov ${1} &
34073403 MediaUnlockTest_Joyn ${1} &
34083404 MediaUnlockTest_SKY_DE ${1} &
34093405 MediaUnlockTest_ZDF ${1} &
34103406 )
34113407 wait
3412- local array=(" Salto: " " Canal+:" " Molotov:" )
3408+ local array=(" Canal+:" " Molotov:" )
34133409 echo_Result ${result} ${array}
34143410 ShowRegion DE
34153411 local array=(" Joyn:" " Sky:" " ZDF:" )
0 commit comments