diff --git a/pkg/huashijie_api.go b/pkg/huashijie_api.go index 9346f0f..db1fc4f 100644 --- a/pkg/huashijie_api.go +++ b/pkg/huashijie_api.go @@ -1,12 +1,15 @@ package huashijie_api import ( + "crypto/md5" "fmt" "io" + "log" "math/rand" "net/http" "os" "strings" + "time" ) var XIAOMI_MODELS = []string{ @@ -23,6 +26,8 @@ var XIAOMI_MODELS = []string{ "MDE5", } +var Logger = log.New(os.Stdout, "[huashijie_api] ", log.Ldate|log.Ltime|log.Lmsgprefix) + func EnsureConnection(client http.Client) { // https://app.huashijie.art/api/update/checkUpdate req, err := http.NewRequest("GET", "https://app.huashijie.art/api/update/checkUpdate", nil) @@ -49,6 +54,9 @@ func EnsureConnection(client http.Client) { } } +var cur_fake_user_id = -1 +var cur_fake_user_left = time.Now() + func GetWorkDetailResponse(client http.Client, work_id string) ([]byte, int) { endpoint := "https://app.huashijie.art/" if os.Getenv("HSJ_ENDPOINT") == "pandapaint" { @@ -58,14 +66,36 @@ func GetWorkDetailResponse(client http.Client, work_id string) ([]byte, int) { if err != nil { panic(err) } + + visitorId := "-1" + token := "" + if os.Getenv("HSJ_USERID") != "" { + visitorId = os.Getenv("HSJ_USERID") + if visitorId == "random" { + if cur_fake_user_left.Before(time.Now()) { // rotate [1, 15] minutes + cur_fake_user_left = time.Now().Add(time.Duration(rand.Intn(15)) * time.Minute) + // random [30000000, 40000000] + cur_fake_user_id = rand.Intn(40000000-30000000) + 30000000 + } + visitorId = fmt.Sprintf("%d", cur_fake_user_id) + } + + // fake token = md5(visitorId + "huashijie") + md5hash := md5.New() + md5hash.Write([]byte(visitorId + "huashijie")) + token = fmt.Sprintf("%x", md5hash.Sum(nil)) + + Logger.Println("USERID:", visitorId, "token:", token, "left", time.Until(cur_fake_user_left)) + } + // q := req.URL.Query() p := "" // q.Add("visitorId", "-1") - p += "visitorId=-1" + p += "visitorId=" + visitorId // q.Add("workId", work_id) p += "&workId=" + work_id // q.Add("cur_user_id", "-1") - p += "&cur_user_id=-1" + p += "&cur_user_id=" + visitorId // q.Add("platform", "android") p += "&platform=android" os_version := rand.Intn(34-28) + 28 @@ -86,7 +116,7 @@ func GetWorkDetailResponse(client http.Client, work_id string) ([]byte, int) { // q.Add("device_model", device_model) p += "&device_model=" + device_model // q.Add("token", "") - p += "&token=" + p += "&token=" + token if os.Getenv("HSJ_ENDPOINT") == "pandapaint" { // q.Add("channel", "Panda.main")