Files
huangguo_server/common/tf/tf.go
T
rootandClaude Opus 5 8679200f41 Initial commit
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 13:57:10 +08:00

74 lines
2.5 KiB
Go

package tf
import (
"fmt"
"net/http"
"strings"
"91porn-server/common/log"
"github.com/PuerkitoBio/goquery"
)
// address: https://testflight.apple.com/join/whsnQnSb
func CheckTFValid(address string) (bool, string, error) {
req, err := http.NewRequest("GET", address, nil)
if err != nil {
log.Warn("CheckTFValid newRequest", log.Any("address", address), log.E(err))
return false, "", err
}
req.Header.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9")
req.Header.Add("Accept-Language", "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7,zh-TW;q=0.6")
req.Header.Add("Cache-Control", "no-cache")
req.Header.Add("Connection", "keep-alive")
req.Header.Add("Pragma", "no-cache")
req.Header.Add("Sec-Fetch-Dest", "document")
req.Header.Add("Sec-Fetch-Mode", "navigate")
req.Header.Add("Sec-Fetch-Site", "none")
req.Header.Add("Sec-Fetch-User", "?1")
req.Header.Add("Upgrade-Insecure-Requests", "1")
req.Header.Add("User-Agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Mobile/15E148 Safari/604.1")
req.Header.Add("Referer", "https://ipf.live/iosBeta")
res, err := http.DefaultClient.Do(req)
if err != nil {
log.Warn("CheckTFValid Client Do", log.Any("address", address), log.E(err))
return false, "", err
}
defer func() { _ = res.Body.Close() }()
//不为200 肯定出问题了
if res.StatusCode != http.StatusOK {
return false, fmt.Sprintf("HttpStatus:%d", res.StatusCode), nil
}
//状态为200,解析内容
doc, err := goquery.NewDocumentFromReader(res.Body)
if err != nil {
log.Warn("CheckTFValid NewDocumentFromReader err", log.Any("address", address), log.E(err))
return false, "", err
}
foundStartTesting := false
doc.Find("a").EachWithBreak(func(i int, s *goquery.Selection) bool {
text := strings.TrimSpace(s.Text())
if text == "Start Testing" || text == "开始测试" {
foundStartTesting = true
return false
}
return true
})
if foundStartTesting {
return true, "", nil //TF包有效
}
betaStatus := ""
doc.Find(".beta-status").EachWithBreak(func(i int, s *goquery.Selection) bool {
betaStatus = strings.TrimSpace(s.Text())
return false
})
if betaStatus == "" {
return true, "", nil
}
if strings.Contains(betaStatus, "install TestFlight") || strings.Contains(betaStatus, "安装 TestFlight") {
return true, "", nil
}
//TODO: 这里还需要测试,目前来看,出现betaStatus就是无效的
return false, betaStatus, nil
}