From ea7d66c2330d713fed56360282bb849ca99a67a9 Mon Sep 17 00:00:00 2001 From: qydysky <32743305+qydysky@users.noreply.github.com> Date: Fri, 20 Jan 2023 09:34:50 +0800 Subject: [PATCH] =?utf8?q?Fix=20=E9=95=BF=E6=9C=9Fcookie=E6=A3=80=E6=9F=A5?= =?utf8?q?=E6=98=AF=E5=90=A6=E6=9C=89=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- F/api.go | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++--- Json/nav.go | 10 ++++++++ cmd/cmd.go | 5 ---- 3 files changed, 80 insertions(+), 9 deletions(-) create mode 100644 Json/nav.go diff --git a/F/api.go b/F/api.go index 5afaad0..567f8dd 100644 --- a/F/api.go +++ b/F/api.go @@ -1310,12 +1310,72 @@ func Info(UpUid int) (info J.Info) { // 调用记录 var boot_Get_cookie funcCtrl.FlashFunc //新的替代旧的 -// 扫码登录 -func (c *GetFunc) Get_cookie() (missKey []string) { - if v, ok := c.K_v.LoadV(`扫码登录`).(bool); !ok || !v { +// 是否登录 +func (c *GetFunc) IsLogin() (isLogin bool) { + apilog := apilog.Base_add(`是否登录`) + //验证cookie + if missKey := CookieCheck([]string{ + `bili_jct`, + `DedeUserID`, + `LIVE_BUVID`, + }); len(missKey) != 0 { + apilog.L(`T: `, `Cookie无Key:`, missKey) return } + if api_limit.TO() { + apilog.L(`E: `, `超时!`) + return + } //超额请求阻塞,超时将取消 + + Cookie := make(map[string]string) + c.Cookie.Range(func(k, v interface{}) bool { + Cookie[k.(string)] = v.(string) + return true + }) + reqi := c.ReqPool.Get() + defer c.ReqPool.Put(reqi) + req := reqi.Item.(*reqf.Req) + if err := req.Reqf(reqf.Rval{ + Url: `https://api.bilibili.com/x/web-interface/nav`, + Header: map[string]string{ + `Host`: `api.bilibili.com`, + `User-Agent`: `Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:103.0) Gecko/20100101 Firefox/103.0`, + `Accept`: `application/json, text/plain, */*`, + `Accept-Language`: `zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2`, + `Accept-Encoding`: `gzip, deflate, br`, + `Origin`: `https://t.bilibili.com`, + `Connection`: `keep-alive`, + `Pragma`: `no-cache`, + `Cache-Control`: `no-cache`, + `Referer`: `https://t.bilibili.com/pages/nav/index_new`, + `Cookie`: reqf.Map_2_Cookies_String(Cookie), + }, + Proxy: c.Proxy, + Timeout: 3 * 1000, + Retry: 2, + }); err != nil { + apilog.L(`E: `, err) + return + } + + var res J.Nav + + if e := json.Unmarshal(req.Respon, &res); e != nil { + apilog.L(`E: `, e) + return + } + + if res.Code != 0 { + apilog.L(`E: `, res.Message) + return + } + + return res.Data.IsLogin +} + +// 扫码登录 +func (c *GetFunc) Get_cookie() (missKey []string) { apilog := apilog.Base_add(`获取Cookie`) if p.Checkfile().IsExist("cookie.txt") { //读取cookie文件 @@ -1326,12 +1386,18 @@ func (c *GetFunc) Get_cookie() (missKey []string) { if miss := CookieCheck([]string{ `bili_jct`, `DedeUserID`, - }); len(miss) == 0 { + }); len(miss) == 0 && c.IsLogin() { + apilog.L(`I: `, `已登录`) return } } } + if v, ok := c.K_v.LoadV(`扫码登录`).(bool); !ok || !v { + apilog.L(`W: `, `配置文件已禁止扫码登录`) + return + } + //获取id id := boot_Get_cookie.Flash() defer boot_Get_cookie.UnFlash() diff --git a/Json/nav.go b/Json/nav.go new file mode 100644 index 0000000..81deb92 --- /dev/null +++ b/Json/nav.go @@ -0,0 +1,10 @@ +package part + +type Nav struct { + Code int `json:"code"` + Message string `json:"message"` + TTL int `json:"ttl"` + Data struct { + IsLogin bool `json:"isLogin"` + } `json:"data"` +} diff --git a/cmd/cmd.go b/cmd/cmd.go index 3f1933a..7cfcb13 100644 --- a/cmd/cmd.go +++ b/cmd/cmd.go @@ -129,13 +129,8 @@ func Cmd() { } //登陆 if strings.Contains(inputs, ` login`) { - if _, ok := c.C.Cookie.LoadV(`bili_jct`).(string); ok { - cmdlog.L(`W: `, "已登陆") - continue - } //获取cookie F.Get(&c.C).Get(`Cookie`) - continue } //搜索主播 -- 2.39.2