From 90328e7bc80dbbf1c28206acc65e99c8b132c48b Mon Sep 17 00:00:00 2001 From: qydysky Date: Mon, 17 Apr 2023 02:50:14 +0800 Subject: [PATCH] =?utf8?q?Fix=20=E5=9C=A8=E6=9C=AA=E7=99=BB=E9=99=86?= =?utf8?q?=E7=9A=84=E6=83=85=E5=86=B5=E4=B8=8B=E8=B0=83=E7=94=A8api?= =?utf8?q?=E8=BF=94=E5=9B=9E412?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- F/api.go | 98 +++++++++++++++++++++++++------------------------------- 1 file changed, 44 insertions(+), 54 deletions(-) diff --git a/F/api.go b/F/api.go index fbc1507..968484a 100644 --- a/F/api.go +++ b/F/api.go @@ -2,6 +2,7 @@ package F import ( "encoding/json" + "errors" "fmt" "net/http" "net/url" @@ -1236,6 +1237,10 @@ func (c *GetFunc) Get_cookie() (missKey []string) { `bili_jct`, `DedeUserID`, }); len(miss) == 0 && c.IsLogin() { + + //获取其他Cookie + c.Get_other_cookie() + apilog.L(`I: `, `已登录`) return } @@ -1311,6 +1316,7 @@ func (c *GetFunc) Get_cookie() (missKey []string) { apilog.L(`E: `, `qr error`) return } + defer os.RemoveAll(`qr.png`) //启动web if scanPath, ok := c.K_v.LoadV("扫码登录路径").(string); ok && scanPath != "" { c.SerF.Store(scanPath, func(w http.ResponseWriter, _ *http.Request) { @@ -1339,7 +1345,6 @@ func (c *GetFunc) Get_cookie() (missKey []string) { return } - var cookie string { //循环查看是否通过 Cookie := make(map[string]string) c.Cookie.Range(func(k, v interface{}) bool { @@ -1390,60 +1395,48 @@ func (c *GetFunc) Get_cookie() (missKey []string) { } } else { apilog.L(`W: `, `登录,并保存了cookie`) - if v := r.Response.Cookies(); len(v) == 0 { - apilog.L(`E: `, `getLoginInfo cookies len == 0`) - return - } else { - cookie = reqf.Map_2_Cookies_String(reqf.Cookies_List_2_Map(v)) //cookie to string - } - if cookie == `` { - apilog.L(`E: `, `getLoginInfo cookies ""`) - return - } else { - break + if e := save_cookie(r.Response.Cookies()); e != nil { + apilog.L(`E: `, e) } + + //获取其他Cookie + c.Get_other_cookie() + break } } - if len(cookie) == 0 { - return - } } + return +} - //有新实例,退出 - if boot_Get_cookie.NeedExit(id) { - return - } +// 获取其他Cookie +func (c *GetFunc) Get_other_cookie() { + apilog := apilog.Base_add(`获取其他Cookie`) - { //写入cookie.txt - for k, v := range reqf.Cookies_String_2_Map(cookie) { - c.Cookie.Store(k, v) - } - //生成cookieString - cookieString := `` - { - c.Cookie.Range(func(k, v interface{}) bool { - cookieString += k.(string) + `=` + v.(string) + `; ` - return true - }) - t := []rune(cookieString) - cookieString = string(t[:len(t)-2]) - } + r := c.ReqPool.Get() + defer c.ReqPool.Put(r) - CookieSet([]byte(cookieString)) - } + Cookie := make(map[string]string) + c.Cookie.Range(func(k, v interface{}) bool { + Cookie[k.(string)] = v.(string) + return true + }) - //有新实例,退出 - if boot_Get_cookie.NeedExit(id) { + if e := r.Reqf(reqf.Rval{ + Url: `https://www.bilibili.com/`, + Header: map[string]string{ + `Cookie`: reqf.Map_2_Cookies_String(Cookie), + }, + Proxy: c.Proxy, + Timeout: 10 * 1000, + Retry: 2, + }); e != nil { + apilog.L(`E: `, e) return } - { //清理 - if p.Checkfile().IsExist(`qr.png`) { - os.RemoveAll(`qr.png`) - return - } + if e := save_cookie(r.Response.Cookies()); e != nil { + apilog.L(`E: `, e) } - return } // 短信登录 @@ -1839,9 +1832,9 @@ func (c *GetFunc) Get_LIVE_BUVID() (missKey []string) { } //cookie + save_cookie(req.Response.Cookies()) var has bool - for k, v := range reqf.Cookies_List_2_Map(req.Response.Cookies()) { - c.Cookie.Store(k, v) + for k := range reqf.Cookies_List_2_Map(req.Response.Cookies()) { if k == `LIVE_BUVID` { has = true } @@ -1855,14 +1848,6 @@ func (c *GetFunc) Get_LIVE_BUVID() (missKey []string) { } } - Cookie := make(map[string]string) - c.Cookie.Range(func(k, v interface{}) bool { - Cookie[k.(string)] = v.(string) - return true - }) - - CookieSet([]byte(reqf.Map_2_Cookies_String(Cookie))) - c.LiveBuvidUpdated = time.Now() return @@ -2139,7 +2124,11 @@ func (c *GetFunc) Silver_2_coin() (missKey []string) { return } -func save_cookie(Cookies []*http.Cookie) { +func save_cookie(Cookies []*http.Cookie) error { + if len(Cookies) == 0 { + return errors.New("no cookie") + } + for k, v := range reqf.Cookies_List_2_Map(Cookies) { c.C.Cookie.Store(k, v) } @@ -2150,6 +2139,7 @@ func save_cookie(Cookies []*http.Cookie) { return true }) CookieSet([]byte(reqf.Map_2_Cookies_String(Cookie))) + return nil } // 正在直播主播 -- 2.39.2