diff --git a/models/available.go b/models/available.go index 25c8d77..c154fcf 100644 --- a/models/available.go +++ b/models/available.go @@ -183,9 +183,9 @@ func updateCookie() { xx++ nck.InPool(ck.PtKey) nck.Update(Available, True) - msg := fmt.Sprintf("定时更新账号,%s", ck.PtPin) - //不再发送成功提醒 - (&JdCookie{}).Push(msg) + //msg := fmt.Sprintf("定时更新账号,%s", ck.PtPin) + ////不再发送成功提醒 + //(&JdCookie{}).Push(msg) //logs.Info(msg) } else { yy++ diff --git a/models/command.go b/models/command.go index 4db22fe..420c4b6 100644 --- a/models/command.go +++ b/models/command.go @@ -720,7 +720,10 @@ var codeSignals = []CodeSignal{ sender.handleJdCookies(func(ck *JdCookie) { if len(ck.WsKey) > 0 { var pinky = fmt.Sprintf("pin=%s;wskey=%s;", ck.PtPin, ck.WsKey) - rsp := cmd(fmt.Sprintf(`python3 test.py "%s"`, pinky), &Sender{}) + rsp, err := getKey(pinky) + if err != nil { + logs.Error(err) + } if len(rsp) > 0 { ptKey := FetchJdCookieValue("pt_key", rsp) ptPin := FetchJdCookieValue("pt_pin", rsp) diff --git a/models/wck.go b/models/wck.go new file mode 100644 index 0000000..7f4307d --- /dev/null +++ b/models/wck.go @@ -0,0 +1,88 @@ +package models + +import ( + "encoding/json" + "github.com/beego/beego/v2/client/httplib" + "github.com/beego/beego/v2/core/logs" + "github.com/buger/jsonparser" + "net/http" + "net/url" + "strings" +) + +var ua2 = `okhttp/3.12.1;jdmall;android;version/10.1.2;build/89743;screen/1440x3007;os/11;network/wifi;` + +type AutoGenerated struct { + ClientVersion string `json:"clientVersion"` + Client string `json:"client"` + Sv string `json:"sv"` + St string `json:"st"` + UUID string `json:"uuid"` + Sign string `json:"sign"` + FunctionID string `json:"functionId"` +} + +func getSign() *AutoGenerated { + data, _ := httplib.Get("https://pan.smxy.xyz/sign").Bytes() + t := &AutoGenerated{} + json.Unmarshal(data, t) + logs.Info(t.Sign) + if t != nil { + t.FunctionID = "genToken" + } + return t +} + +func getKey(WSCK string) (string, error) { + v := url.Values{} + s := getSign() + v.Add("functionId", s.FunctionID) + v.Add("clientVersion", s.ClientVersion) + v.Add("client", s.Client) + v.Add("uuid", s.UUID) + v.Add("st", s.St) + v.Add("sign", s.Sign) + v.Add("sv", s.Sv) + req := httplib.Post(`https://api.m.jd.com/client.action?` + v.Encode()) + req.Header("cookie", WSCK) + req.Header("User-Agent", ua2) + req.Header("content-type", `application/x-www-form-urlencoded; charset=UTF-8`) + req.Header("charset", `UTF-8`) + req.Header("accept-encoding", `br,gzip,deflate`) + req.Body(`body=%7B%22action%22%3A%22to%22%2C%22to%22%3A%22https%253A%252F%252Fplogin.m.jd.com%252Fcgi-bin%252Fm%252Fthirdapp_auth_page%253Ftoken%253DAAEAIEijIw6wxF2s3bNKF0bmGsI8xfw6hkQT6Ui2QVP7z1Xg%2526client_type%253Dandroid%2526appid%253D879%2526appup_type%253D1%22%7D&`) + data, err := req.Bytes() + if err != nil { + return "", err + } + logs.Info(string(data)) + logs.Info("获取token正常") + tokenKey, _ := jsonparser.GetString(data, "tokenKey") + pt_key, err := appjmp(tokenKey) + logs.Info(pt_key) + if err != nil { + return "", err + } + return pt_key, nil +} + +func appjmp(tokenKey string) (string, error) { + v := url.Values{} + v.Add("tokenKey", tokenKey) + v.Add("to", ``) + v.Add("client_type", "android") + v.Add("appid", "879") + v.Add("appup_type", "1") + req := httplib.Get(`https://un.m.jd.com/cgi-bin/app/appjmp?` + v.Encode()) + req.Header("User-Agent", ua2) + req.Header("accept", `text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3`) + req.SetCheckRedirect(func(req *http.Request, via []*http.Request) error { + return http.ErrUseLastResponse + }) + rsp, err := req.Response() + if err != nil { + return "", err + } + cookies := strings.Join(rsp.Header.Values("Set-Cookie"), " ") + //ptKey := FetchJdCookieValue("pt_key", cookies) + return cookies, nil +}