fix 局域网扫码

This commit is contained in:
ZJY 2021-10-11 17:21:41 +08:00
parent dafaf32b00
commit 8180f4bdbb
2 changed files with 69 additions and 47 deletions

View File

@ -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)

View File

@ -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{} {