diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 8271114..fd05332 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -24,7 +24,7 @@ jobs: run: | git config --global user.name 'github-actions' git config --global user.email 'github-actions@github.com' - TAG="v0.0.7-$(date +'%Y%m%d%H%M%S')" + TAG="v0.0.8-$(date +'%Y%m%d%H%M%S')" git tag $TAG git push origin $TAG env: diff --git a/jp/J_COM_ON_DEMAND.go b/jp/J_COM_ON_DEMAND.go index c53284d..c20364b 100644 --- a/jp/J_COM_ON_DEMAND.go +++ b/jp/J_COM_ON_DEMAND.go @@ -2,20 +2,21 @@ package jp import ( "fmt" + "net/http" + "github.com/oneclickvirt/UnlockTests/model" "github.com/oneclickvirt/UnlockTests/utils" - "net/http" ) // J_COM_ON_DEMAND // linkvod.myjcom.jp 仅 ipv4 且 get 请求 func J_COM_ON_DEMAND(c *http.Client) model.Result { name := "J:com On Demand" - hostname := "myjcom.jp" + hostname := "id2.zaq.ne.jp" if c == nil { return model.Result{Name: name} } - url := "https://linkvod.myjcom.jp/auth/login" + url := "https://auth.id2.zaq.ne.jp/login" client := utils.Req(c) resp, err := client.R().Get(url) if err != nil { @@ -28,9 +29,9 @@ func J_COM_ON_DEMAND(c *http.Client) model.Result { //} //body := string(b) //fmt.Println(body) - if resp.StatusCode == 403 || resp.StatusCode == 404 || resp.StatusCode == 451 { + if resp.StatusCode == 400 || resp.StatusCode == 403 || resp.StatusCode == 404 || resp.StatusCode == 451 { return model.Result{Name: name, Status: model.StatusNo} - } else if resp.StatusCode == 502 { + } else if resp.StatusCode == 200 { result1, result2, result3 := utils.CheckDNS(hostname) unlockType := utils.GetUnlockType(result1, result2, result3) return model.Result{Name: name, Status: model.StatusYes, UnlockType: unlockType} diff --git a/us/FuboTV.go b/us/FuboTV.go index 9650dfc..56f7423 100644 --- a/us/FuboTV.go +++ b/us/FuboTV.go @@ -2,13 +2,12 @@ package us import ( "fmt" - "github.com/oneclickvirt/UnlockTests/model" - "github.com/oneclickvirt/UnlockTests/utils" "io" - "math/rand" "net/http" - "strconv" - "strings" + "regexp" + + "github.com/oneclickvirt/UnlockTests/model" + "github.com/oneclickvirt/UnlockTests/utils" ) // FuboTV @@ -19,8 +18,9 @@ func FuboTV(c *http.Client) model.Result { if c == nil { return model.Result{Name: name} } - randNum := strconv.Itoa(rand.Intn(2)) - url := "https://api.fubo.tv/appconfig/v1/homepage?platform=web&client_version=R20230310." + randNum + "&nav=v0" + // randNum := strconv.Itoa(rand.Intn(2)) + // url := "https://api.fubo.tv/appconfig/v1/homepage?platform=web&client_version=R20230310." + randNum + "&nav=v0" + url := "https://api.fubo.tv/v3/location" client := utils.Req(c) resp, err := client.R().Get(url) if err != nil { @@ -32,13 +32,38 @@ func FuboTV(c *http.Client) model.Result { return model.Result{Name: name, Status: model.StatusNetworkErr, Err: fmt.Errorf("can not parse body")} } body := string(b) - if strings.Contains(body, "No Subscription") { + // if strings.Contains(body, "No Subscription") { + // result1, result2, result3 := utils.CheckDNS(hostname) + // unlockType := utils.GetUnlockType(result1, result2, result3) + // return model.Result{Name: name, Status: model.StatusYes, UnlockType: unlockType} + // } else if strings.Contains(body, "Forbidden IP") { + // return model.Result{Name: name, Status: model.StatusNo, Info: "IP Forbidden"} + // } else { + // return model.Result{Name: name, Status: model.StatusNo} + // } + // 定义正则表达式 + noServiceRegex := regexp.MustCompile(`(?i)NO_SERVICE_IN_COUNTRY`) + isAllowedRegex := regexp.MustCompile(`"network_allowed":true`) + isBlockedRegex := regexp.MustCompile(`"network_allowed":false`) + countryCodeRegex := regexp.MustCompile(`"country_code2":"([^"]+)"`) + // 检查noService + noService := noServiceRegex.FindString(body) + // 检查isAllowed + isAllowed := isAllowedRegex.FindString(body) + // 检查isBlocked + isBlocked := isBlockedRegex.FindString(body) + // 提取countryCode + countryCodeMatch := countryCodeRegex.FindStringSubmatch(body) + if isAllowed != "" && len(countryCodeMatch) > 1 { + countryCode := countryCodeMatch[1] result1, result2, result3 := utils.CheckDNS(hostname) unlockType := utils.GetUnlockType(result1, result2, result3) - return model.Result{Name: name, Status: model.StatusYes, UnlockType: unlockType} - } else if strings.Contains(body, "Forbidden IP") { + return model.Result{Name: name, Status: model.StatusYes, Region: countryCode, UnlockType: unlockType} + } else if isBlocked != "" { return model.Result{Name: name, Status: model.StatusNo, Info: "IP Forbidden"} - } else { + } else if noService != "" { return model.Result{Name: name, Status: model.StatusNo} + } else { + return model.Result{Name: name, Status: model.StatusUnexpected} } } diff --git a/us/us_test.go b/us/us_test.go index fcdc330..bced177 100644 --- a/us/us_test.go +++ b/us/us_test.go @@ -2,8 +2,9 @@ package us import ( "fmt" - "github.com/oneclickvirt/UnlockTests/utils" "testing" + + "github.com/oneclickvirt/UnlockTests/utils" ) func Test(t *testing.T) { diff --git a/uts/version.go b/uts/version.go index 4313184..3f85461 100644 --- a/uts/version.go +++ b/uts/version.go @@ -1,3 +1,3 @@ package uts -const UnlockTestsVersion = "v0.0.7" +const UnlockTestsVersion = "v0.0.8"