From 6e381b1a65c03dbc3d3183717e2be965540cf2b8 Mon Sep 17 00:00:00 2001 From: Mmx <1624045573@qq.com> Date: Sun, 19 Sep 2021 22:24:21 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=8D=A2http=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/login.go | 101 ++++++++++++++++++++++--------------------- go.mod | 5 +++ go.sum | 14 ++++++ request/request.go | 44 ------------------- 4 files changed, 71 insertions(+), 93 deletions(-) create mode 100644 go.sum delete mode 100644 request/request.go diff --git a/controllers/login.go b/controllers/login.go index 9372a64..6921209 100644 --- a/controllers/login.go +++ b/controllers/login.go @@ -2,11 +2,10 @@ package controllers import ( "autoLogin/global" - "autoLogin/request" "autoLogin/util" "encoding/json" "errors" - "fmt" + "github.com/Mmx233/tool" "time" ) @@ -22,41 +21,42 @@ func Login(output bool) error { util.Log.Println("Step1: 正在获取客户端ip") { - body, err := request.Get(G.UrlLoginPage, nil) - if err != nil { - return err - } - G.Ip, err = util.GetIp(body) - if err != nil { - return err + if _, body, e := tool.HTTP.GetString(&tool.GetRequest{ + Url: G.UrlLoginPage, + Redirect: true, + }); e != nil { + return e + } else if G.Ip, e = util.GetIp(body); e != nil { + return e } } util.Log.Println("Step2: 正在获取Token") { - data, err := request.Get(G.UrlGetChallengeApi, map[string]string{ - "callback": "jsonp1583251661367", - "username": G.Form.UserName, - "ip": G.Ip, - }) - if err != nil { - return err - } - G.Token, err = util.GetToken(data) - if err != nil { - return err + if _, data, e := tool.HTTP.GetString(&tool.GetRequest{ + Url: G.UrlGetChallengeApi, + Query: map[string]interface{}{ + "callback": "jsonp1583251661367", + "username": G.Form.UserName, + "ip": G.Ip, + }, + Redirect: true, + }); e != nil { + return e + } else if G.Token, e = util.GetToken(data); e != nil { + return e } } util.Log.Println("Step3: 执行登录…") { - info, err := json.Marshal(map[string]string{ + info, e := json.Marshal(map[string]string{ "username": G.Form.UserName, "password": G.Form.PassWord, "ip": G.Ip, "acid": G.Meta.Acid, "enc_ver": G.Meta.Enc, }) - if err != nil { - return err + if e != nil { + return e } G.EncryptedInfo = "{SRBX1}" + util.Base64(util.XEncode(string(info), G.Token)) G.Md5 = util.Md5(G.Token) @@ -68,33 +68,36 @@ func Login(output bool) error { chkstr += G.Token + G.EncryptedInfo G.EncryptedChkstr = util.Sha1(chkstr) - res, err := request.Get(G.UrlLoginApi, map[string]string{ - "callback": "jQuery112401157665", - "action": "login", - "username": G.Form.UserName, - "password": G.EncryptedMd5, - "ac_id": G.Meta.Acid, - "ip": G.Ip, - "info": G.EncryptedInfo, - "chksum": G.EncryptedChkstr, - "n": G.Meta.N, - "type": G.Meta.Type, - "os": "Windows 10", - "name": "windows", - "double_stack": "0", - "_": fmt.Sprint(time.Now().UnixNano()), - }) - if err != nil { - return err - } - G.LoginResult, err = util.GetResult(res) - if err != nil { - return err - } - util.Log.Println("登录结果: " + G.LoginResult) - if global.Config.Settings.DemoMode { - util.Log.Println(res) + if _, res, e := tool.HTTP.GetString(&tool.GetRequest{ + Url: G.UrlLoginApi, + Query: map[string]interface{}{ + "callback": "jQuery112401157665", + "action": "login", + "username": G.Form.UserName, + "password": G.EncryptedMd5, + "ac_id": G.Meta.Acid, + "ip": G.Ip, + "info": G.EncryptedInfo, + "chksum": G.EncryptedChkstr, + "n": G.Meta.N, + "type": G.Meta.Type, + "os": "Windows 10", + "name": "windows", + "double_stack": 0, + "_": time.Now().UnixNano(), + }, + Redirect: true, + }); e != nil { + return e + } else if G.LoginResult, e = util.GetResult(res); e != nil { + return e + } else { + util.Log.Println("登录结果: " + G.LoginResult) + if global.Config.Settings.DemoMode { + util.Log.Println(res) + } } + if G.LoginResult != "ok" { return errors.New(G.LoginResult) } diff --git a/go.mod b/go.mod index 4e4dd98..7dd05d0 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,8 @@ module autoLogin go 1.16 + +require ( + github.com/Mmx233/tool v0.2.2 + github.com/PuerkitoBio/goquery v1.7.1 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..37e90a1 --- /dev/null +++ b/go.sum @@ -0,0 +1,14 @@ +github.com/Mmx233/tool v0.2.2 h1:1Sa/f0a4dZoXiCa12W1O3pItsRgl+qLOhItoGNBO8Do= +github.com/Mmx233/tool v0.2.2/go.mod h1:un5MCoI21lH40fFI5S9++aja8nJb+2sjATak7PnGMZ0= +github.com/PuerkitoBio/goquery v1.7.1 h1:oE+T06D+1T7LNrn91B4aERsRIeCLJ/oPSa6xB9FPnz4= +github.com/PuerkitoBio/goquery v1.7.1/go.mod h1:XY0pP4kfraEmmV1O7Uf6XyjoslwsneBbgeDjLYuN8xY= +github.com/andybalholm/cascadia v1.2.0 h1:vuRCkM5Ozh/BfmsaTm26kbjm0mIOM3yS5Ek/F5h18aE= +github.com/andybalholm/cascadia v1.2.0/go.mod h1:YCyR8vOZT9aZ1CHEd8ap0gMVm2aFgxBp0T0eFw1RUQY= +golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20210614182718-04defd469f4e h1:XpT3nA5TvE525Ne3hInMh6+GETgn27Zfm9dxsThnX2Q= +golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/request/request.go b/request/request.go deleted file mode 100644 index c75e29e..0000000 --- a/request/request.go +++ /dev/null @@ -1,44 +0,0 @@ -package request - -import ( - "autoLogin/util" - "io/ioutil" - "log" - "net" - "net/http" - "time" -) - -func Get(Url string, Query map[string]string) (string, error) { - req, err := http.NewRequest("GET", Url, nil) - if err != nil { - log.Println(err) - return "", err - } - req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36") - if Query != nil { - q := req.URL.Query() - for k, v := range Query { - q.Add(k, v) - } - req.URL.RawQuery = q.Encode() - } - resp, err := (&http.Client{ - Transport: &http.Transport{ - DialContext: (&net.Dialer{ - Timeout: 5 * time.Second, - Resolver: &net.Resolver{ - PreferGo: true, - Dial: util.NetDailEr(), - }, - }).DialContext, - }, - }).Do(req) - if err != nil { - log.Println(err) - return "", err - } - defer resp.Body.Close() - body, err := ioutil.ReadAll(resp.Body) - return string(body), err -}