From 6c3a7a82803b1ac6fbf94d769df926d746e124ff Mon Sep 17 00:00:00 2001 From: qydysky <32743305+qydysky@users.noreply.github.com> Date: Mon, 6 Mar 2023 20:41:01 +0800 Subject: [PATCH] =?utf8?q?Add=20=E6=B7=BB=E5=8A=A0=E5=BC=B9=E5=B9=95?= =?utf8?q?=E5=8E=8B=E7=BC=A9=E6=96=B9=E5=BC=8F=20BROTLI?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- CV/Const.go | 8 ++------ Reply/Reply.go | 17 ++++++++++++++++- go.mod | 2 +- go.sum | 2 ++ 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/CV/Const.go b/CV/Const.go index 23a21f0..f86f524 100644 --- a/CV/Const.go +++ b/CV/Const.go @@ -1,6 +1,5 @@ package cv -//from source/player-loader-2.0.11.min.js const ( WS_OP_HEARTBEAT = 2 WS_OP_HEARTBEAT_REPLY = 3 @@ -15,6 +14,7 @@ const ( WS_SEQUENCE_OFFSET = 12 WS_BODY_PROTOCOL_VERSION_NORMAL = 0 WS_BODY_PROTOCOL_VERSION_DEFLATE = 2 + WS_BODY_PROTOCOL_VERSION_BROTLI = 3 WS_HEADER_DEFAULT_VERSION = 1 WS_HEADER_DEFAULT_OPERATION = 1 WS_HEADER_DEFAULT_SEQUENCE = 1 @@ -22,12 +22,8 @@ const ( WS_AUTH_TOKEN_ERROR = -101 ) -//from player-loader-2.0.11.min.js -/* - customAuthParam -*/ const ( - Protover = 2 + Protover = 3 Platform = "web" Type = 2 ) diff --git a/Reply/Reply.go b/Reply/Reply.go index c8c7ba8..8a3aaf0 100644 --- a/Reply/Reply.go +++ b/Reply/Reply.go @@ -9,6 +9,7 @@ import ( "strings" "time" + brotli "github.com/andybalholm/brotli" c "github.com/qydysky/bili_danmu/CV" F "github.com/qydysky/bili_danmu/F" ws_msg "github.com/qydysky/bili_danmu/Reply/ws_msg" @@ -37,7 +38,10 @@ func Reply(b []byte) { return } - if head.BodyV == c.WS_BODY_PROTOCOL_VERSION_DEFLATE { + switch head.BodyV { + case 1: // 心跳 + case c.WS_BODY_PROTOCOL_VERSION_NORMAL: // 无加密 + case c.WS_BODY_PROTOCOL_VERSION_DEFLATE: // DEFLATE readc, err := zlib.NewReader(bytes.NewReader(b[16:])) if err != nil { reply_log.L(`E: `, "解压错误") @@ -51,6 +55,17 @@ func Reply(b []byte) { return } b = buf.Bytes() + case c.WS_BODY_PROTOCOL_VERSION_BROTLI: // BROTLI + readc := brotli.NewReader(bytes.NewReader(b[16:])) + + buf := bytes.NewBuffer(nil) + if _, err := buf.ReadFrom(readc); err != nil { + reply_log.L(`E: `, "解压错误") + return + } + b = buf.Bytes() + default: + reply_log.L(`E: `, "未知的编码方式", head.BodyV) } for len(b) != 0 { diff --git a/go.mod b/go.mod index 7037183..c35e4f3 100644 --- a/go.mod +++ b/go.mod @@ -13,7 +13,7 @@ require ( ) require ( - github.com/andybalholm/brotli v1.0.4 // indirect + github.com/andybalholm/brotli v1.0.5 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/dustin/go-humanize v1.0.1 github.com/go-ole/go-ole v1.2.6 // indirect diff --git a/go.sum b/go.sum index 51c2f26..363957a 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,7 @@ github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY= github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= +github.com/andybalholm/brotli v1.0.5 h1:8uQZIdzKmjc/iuPu7O2ioW48L81FgatrcpfFmiq/cCs= +github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= -- 2.39.2