From d7cdfb1544aac7963bd3b7183946915ca0bf95f1 Mon Sep 17 00:00:00 2001 From: himawari <54976075+guohuiyuan@users.noreply.github.com> Date: Fri, 5 Apr 2024 13:03:17 +0800 Subject: [PATCH] Fix bilibilipush 20240404 (#884) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ✨ 添加cookie * ✨ 添加签名 * 🐛 修改嵌套错误 * 🐛 优化infoURL * ✨ 添加cookie --- plugin/bilibili/bilibilipush.go | 37 +++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/plugin/bilibili/bilibilipush.go b/plugin/bilibili/bilibilipush.go index f114d78e..8a944305 100644 --- a/plugin/bilibili/bilibilipush.go +++ b/plugin/bilibili/bilibilipush.go @@ -24,7 +24,7 @@ import ( const ( ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36" referer = "https://space.bilibili.com/%v" - infoURL = "https://api.bilibili.com/x/space/wbi/acc/info?mid=%v&token=&platform=web&web_location=1550101" + infoURL = "https://api.bilibili.com/x/space/wbi/acc/info?mid=%v" ) // bdb bilibili推送数据库 @@ -77,7 +77,7 @@ func init() { en.OnRegex(`^添加[B|b]站订阅\s?(.{1,25})$`, zero.UserOrGrpAdmin, getPara).SetBlock(true).Handle(func(ctx *zero.Ctx) { buid, _ := strconv.ParseInt(ctx.State["uid"].(string), 10, 64) - name, err := getName(buid) + name, err := getName(buid, cfg) if err != nil || name == "" { ctx.SendChain(message.Text("ERROR: ", err)) return @@ -95,7 +95,7 @@ func init() { en.OnRegex(`^取消[B|b]站订阅\s?(.{1,25})$`, zero.UserOrGrpAdmin, getPara).SetBlock(true).Handle(func(ctx *zero.Ctx) { buid, _ := strconv.ParseInt(ctx.State["uid"].(string), 10, 64) - name, err := getName(buid) + name, err := getName(buid, cfg) if err != nil { ctx.SendChain(message.Text("ERROR: ", err)) return @@ -112,7 +112,7 @@ func init() { }) en.OnRegex(`^取消[B|b]站动态订阅\s?(.{1,25})$`, zero.UserOrGrpAdmin, getPara).SetBlock(true).Handle(func(ctx *zero.Ctx) { buid, _ := strconv.ParseInt(ctx.State["uid"].(string), 10, 64) - name, err := getName(buid) + name, err := getName(buid, cfg) if err != nil { ctx.SendChain(message.Text("ERROR: ", err)) return @@ -133,7 +133,7 @@ func init() { if gid == 0 { gid = -ctx.Event.UserID } - name, err := getName(buid) + name, err := getName(buid, cfg) if err != nil { ctx.SendChain(message.Text("ERROR: ", err)) return @@ -200,10 +200,18 @@ func changeAtAll(gid int64, b int) (err error) { } // 取得uid的名字 -func getName(buid int64) (name string, err error) { +func getName(buid int64, cookiecfg *bz.CookieConfig) (name string, err error) { var ok bool if name, ok = upMap[buid]; !ok { data, err := web.RequestDataWithHeaders(web.NewDefaultClient(), bz.SignURL(fmt.Sprintf(infoURL, buid)), "GET", func(r *http.Request) error { + if cookiecfg != nil { + cookie := "" + cookie, err = cookiecfg.Load() + if err != nil { + return err + } + r.Header.Add("Cookie", cookie) + } r.Header.Set("User-Agent", ua) return nil }, nil) @@ -262,8 +270,19 @@ func unsubscribeLive(buid, groupid int64) (err error) { return bdb.insertOrUpdateLiveAndDynamic(bpMap) } -func getUserDynamicCard(buid int64) (cardList []gjson.Result, err error) { - data, err := web.RequestDataWith(web.NewDefaultClient(), fmt.Sprintf(bz.SpaceHistoryURL, buid, 0), "GET", referer, ua, nil) +func getUserDynamicCard(buid int64, cookiecfg *bz.CookieConfig) (cardList []gjson.Result, err error) { + data, err := web.RequestDataWithHeaders(web.NewDefaultClient(), fmt.Sprintf(bz.SpaceHistoryURL, buid, 0), "GET", func(req *http.Request) error { + if cookiecfg != nil { + cookie := "" + cookie, err = cookiecfg.Load() + if err != nil { + return err + } + req.Header.Add("Cookie", cookie) + } + req.Header.Add("User-Agent", ua) + return nil + }, nil) if err != nil { return } @@ -289,7 +308,7 @@ func sendDynamic(ctx *zero.Ctx) error { uids := bdb.getAllBuidByDynamic() for _, buid := range uids { time.Sleep(2 * time.Second) - cardList, err := getUserDynamicCard(buid) + cardList, err := getUserDynamicCard(buid, cfg) if err != nil { return err }