From 8180f4bdbb671f35ca194ace5981da7ac31774dd Mon Sep 17 00:00:00 2001 From: ZJY <764763903@qq.com> Date: Mon, 11 Oct 2021 17:21:41 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E5=B1=80=E5=9F=9F=E7=BD=91=E6=89=AB?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/login.go | 64 +++++++++++++++++++++++++------------------- models/command.go | 52 +++++++++++++++++++++-------------- 2 files changed, 69 insertions(+), 47 deletions(-) diff --git a/controllers/login.go b/controllers/login.go index 33ba7b4..871fd0e 100644 --- a/controllers/login.go +++ b/controllers/login.go @@ -210,15 +210,13 @@ func init() { jd_token := k.(string) vv := v.([]interface{}) if len(vv) >= 2 { - //cookie := vv[0].(string) - //okl_token := vv[1].(string) + cookie := vv[0].(string) + okl_token := vv[1].(string) bot := vv[2].(string) uid := vv[3].(int) gid := vv[4].(int) // fmt.Println(jd_token, cookie, okl_token) - result, ck := CheckLogin(models.QQuery{ - Code: 0, - }, jd_token) + result, ck := CheckLogin(jd_token, cookie, okl_token) // fmt.Println(result) switch result { case "成功": @@ -301,28 +299,40 @@ func (c *LoginController) Query() { } } -func CheckLogin(q models.QQuery, token string) (string, *models.JdCookie) { - //state := time.Now().Unix() - req := httplib.Post("https://api.kukuqaq.com/jd/cookie") - req.Param("sig", q.Data.QqLoginQrcode.Sig) - req.Param("type", string(1)) +func CheckLogin(token, cookie, okl_token string) (string, *models.JdCookie) { + state := time.Now().Unix() + req := httplib.Post( + fmt.Sprintf(`https://plogin.m.jd.com/cgi-bin/m/tmauthchecktoken?&token=%s&ou_state=0&okl_token=%s`, + token, + okl_token, + ), + ) + req.Header("Referer", fmt.Sprintf(`https://plogin.m.jd.com/login/login?appid=300&returnurl=https://wqlogin2.jd.com/passport/LoginRedirect?state=%d&returnurl=//home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&/myJd/home.action&source=wq_passport`, + state), + ) + req.Header("Cookie", cookie) + req.Header("Connection", "Keep-Alive") + req.Header("Content-Type", "application/x-www-form-urlencoded; Charset=UTF-8") + req.Header("Accept", "application/json, text/plain, */*") + req.Header("User-Agent", jdua()) + req.Header("Host", "plogin.m.jd.com") - req.Param("redirectUrl", q.Data.RedirectURL) - req.Param("state", q.Data.State) - req.Param("tempCookie", q.Data.TempCookie) - req.Param("lSid", q.Data.LSid) + req.Param("lang", "chs") + req.Param("appid", "300") + req.Param("returnurl", fmt.Sprintf("https://wqlogin2.jd.com/passport/LoginRedirect?state=%d&returnurl=//home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&/myJd/home.action", state)) + req.Param("source", "wq_passport") rsp, err := req.Response() if err != nil { return "", nil //err.Error() } data, err := ioutil.ReadAll(rsp.Body) - sth := StepThree1{} + sth := StepThree{} err = json.Unmarshal(data, &sth) if err != nil { return "", nil //err.Error() } - switch sth.Code { + switch sth.Errcode { case 0: cookies := strings.Join(rsp.Header.Values("Set-Cookie"), " ") pt_key := FetchJdCookieValue("pt_key", cookies) @@ -355,19 +365,19 @@ func CheckLogin(q models.QQuery, token string) (string, *models.JdCookie) { }() JdCookieRunners.Store(token, []interface{}{pt_pin}) return "成功", &ck - case 500: //Token无效,请退出重试 + case 19: //Token无效,请退出重试 JdCookieRunners.Delete(token) return sth.Message, nil - //case 21: //Token不存在,请退出重试 - // JdCookieRunners.Delete(token) - // return sth.Message, nil - //case 176: //授权登录未确认 - // return sth.Message, nil - //case 258: //务异常,请稍后重试 - // return "", nil - //case 264: //出错了,请退出重试 - // // JdCookieRunners.Delete(token) - // // return sth.Message, nil + case 21: //Token不存在,请退出重试 + JdCookieRunners.Delete(token) + return sth.Message, nil + case 176: //授权登录未确认 + return sth.Message, nil + case 258: //务异常,请稍后重试 + return "", nil + case 264: //出错了,请退出重试 + // JdCookieRunners.Delete(token) + // return sth.Message, nil default: JdCookieRunners.Delete(token) // fmt.Println(sth) diff --git a/models/command.go b/models/command.go index 3734413..107dcd6 100644 --- a/models/command.go +++ b/models/command.go @@ -1,13 +1,11 @@ package models import ( - "encoding/base64" - "encoding/json" "errors" "fmt" "github.com/beego/beego/v2/client/httplib" "github.com/beego/beego/v2/core/logs" - "io/ioutil" + "github.com/beego/beego/v2/server/web" "regexp" "strings" "time" @@ -142,28 +140,42 @@ var codeSignals = []CodeSignal{ { Command: []string{"qrcode", "扫码", "二维码", "scan"}, Handle: func(sender *Sender) interface{} { - rsp, err := httplib.Post("https://api.kukuqaq.com/jd/qrcode").Response() + url := fmt.Sprintf("http://127.0.0.1:%d/api/login/qrcode.png?tp=%s&uid=%d&gid=%d", web.BConfig.Listen.HTTPPort, sender.Type, sender.UserID, sender.ChatID) + if sender.Type == "tgg" { + url += fmt.Sprintf("&mid=%v&unm=%v", sender.MessageID, sender.Username) + } + rsp, err := httplib.Get(url).Response() if err != nil { return nil } - body, err1 := ioutil.ReadAll(rsp.Body) - if err1 == nil { - fmt.Println(string(body)) - } - s := &QQuery{} - if len(body) > 0 { - json.Unmarshal(body, &s) - } - logs.Info(s.Data.QqLoginQrcode.Bytes) - ddd, _ := base64.StdEncoding.DecodeString(s.Data.QqLoginQrcode.Bytes) //成图片文件并把文件写入到buffer - err2 := ioutil.WriteFile("./output.jpg", ddd, 0666) //buffer输出到jpg文件中(不做处理,直接写到文件) - if err2 != nil { - logs.Error(err2) - } - //ddd, _ := base64.StdEncoding.DecodeString("data:image/png;base64,"+s.Data.QqLoginQrcode.Bytes) - return "data:image/png;base64," + s.Data.QqLoginQrcode.Bytes + return rsp }, }, + //{ + // Command: []string{"qrcode", "扫码", "二维码", "scan"}, + // Handle: func(sender *Sender) interface{} { + // rsp, err := httplib.Post("https://api.kukuqaq.com/jd/qrcode").Response() + // if err != nil { + // return nil + // } + // body, err1 := ioutil.ReadAll(rsp.Body) + // if err1 == nil { + // fmt.Println(string(body)) + // } + // s := &QQuery{} + // if len(body) > 0 { + // json.Unmarshal(body, &s) + // } + // logs.Info(s.Data.QqLoginQrcode.Bytes) + // ddd, _ := base64.StdEncoding.DecodeString(s.Data.QqLoginQrcode.Bytes) //成图片文件并把文件写入到buffer + // err2 := ioutil.WriteFile("./output.jpg", ddd, 0666) //buffer输出到jpg文件中(不做处理,直接写到文件) + // if err2 != nil { + // logs.Error(err2) + // } + // //ddd, _ := base64.StdEncoding.DecodeString("data:image/png;base64,"+s.Data.QqLoginQrcode.Bytes) + // return "data:image/png;base64," + s.Data.QqLoginQrcode.Bytes + // }, + //}, { Command: []string{"sign", "打卡", "签到"}, Handle: func(sender *Sender) interface{} {