xdd-plus/models/wck.go
2021-09-22 14:38:06 +08:00

89 lines
2.6 KiB
Go

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")
ptKey, err := appjmp(tokenKey)
logs.Info(ptKey)
if err != nil {
return "", err
}
return ptKey, 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
}