From d2d9b79b652bd946a3e852cf143532c1f04e4048 Mon Sep 17 00:00:00 2001 From: qydysky Date: Sun, 31 Jan 2021 21:58:02 +0800 Subject: [PATCH] =?utf8?q?=E5=B0=8F=E5=BF=83=E5=BF=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- CV/Var.go | 12 + F/api.go | 242 +++++- F/xinxin.go | 193 +++++ Reply/0Init.go | 11 - Reply/F.go | 2 +- Reply/Reply.go | 18 +- Reply/gtk.go | 6 +- bili_danmu.go | 2 + demo/config/config_K_v.json | 5 +- demo/html/27.02768ee66953cfc6d097.js | 755 ++++++++++++++++++ demo/html/bili.js | 189 +++++ ...1556706f88d88b4846a61a583b31db007f83d.wasm | Bin 0 -> 239236 bytes demo/html/index.html | 71 ++ 13 files changed, 1466 insertions(+), 40 deletions(-) create mode 100644 F/xinxin.go create mode 100644 demo/html/27.02768ee66953cfc6d097.js create mode 100644 demo/html/bili.js create mode 100644 demo/html/e791556706f88d88b4846a61a583b31db007f83d.wasm create mode 100644 demo/html/index.html diff --git a/CV/Var.go b/CV/Var.go index 739097c..71b7e44 100644 --- a/CV/Var.go +++ b/CV/Var.go @@ -3,6 +3,7 @@ package cv import ( "time" mq "github.com/qydysky/part/msgq" + s "github.com/qydysky/part/buf" log "github.com/qydysky/part/log" ) @@ -45,6 +46,17 @@ var Log = log.New(log.Config{ }, }) +//k-v +var K_v =make(map[string]interface{}) + +func init() { + buf := s.New() + buf.Load("config/config_K_v.json") + for k,v := range buf.B { + K_v[k] = v + } +} + //from player-loader-2.0.11.min.js /* customAuthParam diff --git a/F/api.go b/F/api.go index 973aa95..69ca35a 100644 --- a/F/api.go +++ b/F/api.go @@ -16,6 +16,7 @@ import ( c "github.com/qydysky/bili_danmu/CV" g "github.com/qydysky/part/get" p "github.com/qydysky/part" + uuid "github.com/gofrs/uuid" ) type api struct { @@ -27,6 +28,7 @@ type api struct { Locked bool Token string Parent_area_id int + Area_id int } var apilog = c.Log.Base(`api`) @@ -36,8 +38,9 @@ func New_api(Roomid int) (o *api) { apilog.Base_add(`新建`).L(`T: `,"ok") o = new(api) o.Roomid = Roomid - o.Get_info() o.Parent_area_id = -1 + o.Area_id = -1 + o.Get_info() return } @@ -52,7 +55,7 @@ func (i *api) Get_info() (o *api) { if api_limit.TO() {return}//超额请求阻塞,超时将取消 o.Get_LIVE_BUVID() - + Roomid := strconv.Itoa(o.Roomid) r := g.Get(p.Rval{ @@ -80,6 +83,11 @@ func (i *api) Get_info() (o *api) { apilog.L(`E: `,"parent_area_id", e) } else {o.Parent_area_id = tmp} } + if e := r.S(`"area_id":`, `,`, 0, 0).Err;e == nil { + if tmp,e := strconv.Atoi(r.RS[0]);e != nil{ + apilog.L(`E: `,"area_id", e) + } else {o.Area_id = tmp} + } //roomid if tmp := r.S(`"room_id":`, `,`, 0, 0);tmp.Err != nil { // apilog.L(`E: `,"room_id", tmp.Err) @@ -89,7 +97,11 @@ func (i *api) Get_info() (o *api) { o.Roomid = i } - if o.Parent_area_id != -1&&o.Roomid != 0 && o.Uid != 0 && c.Title != ``{return} + if o.Area_id != -1 && + o.Parent_area_id != -1 && + o.Roomid != 0 && + o.Uid != 0 && + c.Title != ``{return} {//使用其他api req := p.Req() @@ -114,6 +126,7 @@ func (i *api) Get_info() (o *api) { Room_id int `json:"room_id"` Title string `json:"title"` Lock_status int `json:"lock_status"` + Area_id int `json:"area_id"` Parent_area_id int `json:"parent_area_id"` } `json:"room_info"` Anchor_info struct{ @@ -154,6 +167,12 @@ func (i *api) Get_info() (o *api) { apilog.L(`E: `,"data.room_info.parent_area_id = 0") return } + if tmp.Data.Room_info.Area_id != 0{ + o.Area_id = tmp.Data.Room_info.Area_id + } else { + apilog.L(`E: `,"data.room_info.Area_id = 0") + return + } //房间id if tmp.Data.Room_info.Room_id != 0{ @@ -1073,22 +1092,51 @@ type E_json struct{ } `json:"data"` } -func F_x25Kn() { - apilog := apilog.Base_add(`LIVE_BUVID`).L(`T: `,`获取LIVE_BUVID`) +func (i *api) F_x25Kn() (o *api) { + o = i + apilog := apilog.Base_add(`小心心`).L(`T: `,`获取小心心`) if len(c.Cookie) == 0 {apilog.L(`E: `,`失败!无cookie`);return} if c.Cookie[`LIVE_BUVID`] == `` {apilog.L(`E: `,`失败!无LIVE_BUVID`);return} + if o.Parent_area_id == -1 {apilog.L(`E: `,`失败!未获取Parent_area_id`);return} + if o.Area_id == -1 {apilog.L(`E: `,`失败!未获取Area_id`);return} if api_limit.TO() {apilog.L(`E: `,`超时!`);return}//超额请求阻塞,超时将取消 - var res E_json + //查看今天小心心数量 + for _,v := range Gift_list() { + if v.Gift_id == 30607 && v.Expire_at - int(p.Sys().GetSTime()) > 6 * 86400 { + if v.Gift_num == 24 { + apilog.L(`I: `,`今天小心心已满!`);return + } else { + apilog.L(`I: `,`今天已有`,v.Gift_num,`个小心心`) + } + } + } + + var ( + res E_json + loop_num = 0 + ) - {//初始化 + csrf := c.Cookie[`bili_jct`] + if csrf == `` {apilog.L(`E: `,"Cookie错误,无bili_jct");return} - csrf := c.Cookie[`bili_jct`] - if csrf == `` {apilog.L(`E: `,"Cookie错误,无bili_jct=");return} + LIVE_BUVID := c.Cookie[`LIVE_BUVID`] + if LIVE_BUVID == `` {apilog.L(`E: `,"Cookie错误,无LIVE_BUVID");return} - PostStr := `id=` - PostStr += `&device=` - PostStr += `&ts=` + var new_uuid string + { + if tmp_uuid,e := uuid.NewV4();e == nil { + new_uuid = tmp_uuid.String() + } else { + apilog.L(`E: `,e) + return + } + } + + {//初始化 + PostStr := `id=[`+strconv.Itoa(o.Parent_area_id)+`,`+strconv.Itoa(o.Area_id)+`,`+strconv.Itoa(loop_num)+`,`+strconv.Itoa(o.Roomid)+`]&` + PostStr += `device=["`+LIVE_BUVID+`","`+new_uuid+`"]&` + PostStr += `ts=`+strconv.Itoa(int(p.Sys().GetMTime())) PostStr += `&is_patch=0&` PostStr += `heart_beat=[]&` PostStr += `ua=Mozilla/5.0 (X11; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0&` @@ -1109,10 +1157,10 @@ func F_x25Kn() { `Connection`: `keep-alive`, `Pragma`: `no-cache`, `Cache-Control`: `no-cache`, - `Referer`:"https://live.bilibili.com/"+strconv.Itoa(c.Roomid), + `Referer`:"https://live.bilibili.com/"+strconv.Itoa(o.Roomid), `Cookie`:p.Map_2_Cookies_String(c.Cookie), }, - PostStr:url.QueryEscape(PostStr), + PostStr:url.PathEscape(PostStr), Timeout:3, Retry:2, });err != nil { @@ -1130,5 +1178,169 @@ func F_x25Kn() { return } } + + {//loop + var cancle = make(chan struct{},1) + //使用带tag的消息队列在功能间传递消息 + c.Danmu_Main_mq.Pull_tag(map[string]func(interface{})(bool){ + `change_room`:func(data interface{})(bool){//换房时退出当前房间 + close(cancle) + return true + }, + }) + + defer apilog.L(`I: `,`退出`) + + for loop_num < 24*5 { + select{ + case <- time.After(time.Second*time.Duration(res.Data.Heartbeat_interval)): + case <- cancle: + return + } + + loop_num += 1 + + var rt_obj = RT{ + R:R{ + Id:`[`+strconv.Itoa(o.Parent_area_id)+`,`+strconv.Itoa(o.Area_id)+`,`+strconv.Itoa(loop_num)+`,`+strconv.Itoa(o.Roomid)+`]`, + Device:`["`+LIVE_BUVID+`","`+new_uuid+`"]`, + Ets:res.Data.Timestamp, + Benchmark:res.Data.Secret_key, + Time:res.Data.Heartbeat_interval, + Ts:int(p.Sys().GetMTime()), + }, + T:res.Data.Secret_rule, + } + + PostStr := `id=`+rt_obj.R.Id+`&` + PostStr += `device=["`+LIVE_BUVID+`","`+new_uuid+`"]&` + PostStr += `ets=`+strconv.Itoa(res.Data.Timestamp) + PostStr += `&benchmark=`+res.Data.Secret_key + PostStr += `&time=`+strconv.Itoa(res.Data.Heartbeat_interval) + PostStr += `&ts=`+strconv.Itoa(rt_obj.R.Ts) + PostStr += `&is_patch=0&` + PostStr += `heart_beat=[]&` + PostStr += `ua=Mozilla/5.0 (X11; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0&` + PostStr += `csrf_token=`+csrf+`&csrf=`+csrf+`&` + PostStr += `visit_id=` + + if wasm := Wasm(rt_obj);wasm == `` { + apilog.L(`E: `,`发生错误`) + return + } else { + PostStr = `s=`+wasm+`&`+PostStr + } + + req := p.Req() + if err := req.Reqf(p.Rval{ + Url:`https://live-trace.bilibili.com/xlive/data-interface/v1/x25Kn/X`, + Header:map[string]string{ + `Host`: `api.live.bilibili.com`, + `User-Agent`: `Mozilla/5.0 (X11; Linux x86_64; rv:83.0) Gecko/20100101 Firefox/83.0`, + `Accept`: `application/json, text/plain, */*`, + `Content-Type`: `application/x-www-form-urlencoded`, + `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://live.bilibili.com`, + `Connection`: `keep-alive`, + `Pragma`: `no-cache`, + `Cache-Control`: `no-cache`, + `Referer`:"https://live.bilibili.com/"+strconv.Itoa(o.Roomid), + `Cookie`:p.Map_2_Cookies_String(c.Cookie), + }, + PostStr:url.PathEscape(PostStr), + Timeout:3, + Retry:2, + });err != nil { + apilog.L(`E: `,err) + return + } + + if e := json.Unmarshal(req.Respon,&res);e != nil { + apilog.L(`E: `,e) + return + } -} \ No newline at end of file + if res.Code != 0{ + apilog.L(`E: `,res.Message) + return + } + + //查看今天小心心数量 + if loop_num%5 == 0 {//每5min + for _,v := range Gift_list() { + if v.Gift_id == 30607 && v.Expire_at - int(p.Sys().GetSTime()) > 6 * 86400 { + if v.Gift_num == 24 { + apilog.L(`I: `,`今天小心心已满!`);return + } else { + apilog.L(`I: `,`获取到第`,v.Gift_num,`个小心心`) + } + } + } + } + } + } + return +} + +//礼物列表 +type Gift_list_type struct { + Code int `json:"code"` + Message string `json:"message"` + Data Gift_list_type_Data `json:"data"` +} + +type Gift_list_type_Data struct { + List []Gift_list_type_Data_List `json:"list"` +} + +type Gift_list_type_Data_List struct{ + Gift_id int `json:"gift_id"` + Gift_num int `json:"gift_num"` + Expire_at int `json:"expire_at"` +} + +func Gift_list() (list []Gift_list_type_Data_List) { + apilog := apilog.Base_add(`小心心`).L(`T: `,`获取礼物列表`) + if len(c.Cookie) == 0 {apilog.L(`E: `,`失败!无cookie`);return} + if c.Roomid == 0 {apilog.L(`E: `,`失败!无Roomid`);return} + if api_limit.TO() {apilog.L(`E: `,`超时!`);return}//超额请求阻塞,超时将取消 + + req := p.Req() + if err := req.Reqf(p.Rval{ + Url:`https://api.live.bilibili.com/xlive/web-room/v1/gift/bag_list?t=`+strconv.Itoa(int(p.Sys().GetMTime()))+`&room_id=`+strconv.Itoa(c.Roomid), + Header:map[string]string{ + `Host`: `api.live.bilibili.com`, + `User-Agent`: `Mozilla/5.0 (X11; Linux x86_64; rv:83.0) Gecko/20100101 Firefox/83.0`, + `Accept`: `application/json, text/plain, */*`, + `Content-Type`: `application/x-www-form-urlencoded`, + `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://live.bilibili.com`, + `Connection`: `keep-alive`, + `Pragma`: `no-cache`, + `Cache-Control`: `no-cache`, + `Referer`:"https://live.bilibili.com/"+strconv.Itoa(c.Roomid), + `Cookie`:p.Map_2_Cookies_String(c.Cookie), + }, + Timeout:3, + Retry:2, + });err != nil { + apilog.L(`E: `,err) + return + } + + var res Gift_list_type + + 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.List +} diff --git a/F/xinxin.go b/F/xinxin.go new file mode 100644 index 0000000..62d7069 --- /dev/null +++ b/F/xinxin.go @@ -0,0 +1,193 @@ +package F + +import ( + "net/http" + "encoding/json" + "time" + "context" + "strconv" + "github.com/gorilla/websocket" + "github.com/skratchdot/open-golang/open" + p "github.com/qydysky/part" + c "github.com/qydysky/bili_danmu/CV" +) + +/* + 小心心加密golang-ws-js-webassembly工具 +*/ + +//需要加密的数据 +type R struct { + Id string `json:"id"` + Device string `json:"device"` + Ets int `json:"ets"` + Benchmark string `json:"benchmark"` + Time int `json:"time"` + Ts int `json:"ts"` +} + +//发送的原始对象 +type RT struct { + R R `json:"r"` + T []int `json:"t"` //加密方法 +} + +//返回的加密对象 +type S struct { + S string `json:"s"` //加密字符串 +} + +//全局对象 +var ( + xinxinboot = make(chan struct{},1) //调用标记,仅调用一次 + wslog = c.Log.Base(`api`).Base_add(`小心心加密`) //日志 + send_chan = make(chan RT,1)//发通道 + rec_chan = make(chan S,1)//收通道 + port = p.Sys().GetFreePort()//随机端口 +) + +func init() { + go func() { + for { + v,ok := c.K_v["get_xiao_xinxin"] + if !ok { + time.Sleep(time.Second) + continue + } + if t,ok := v.(bool);!ok || !t {return} + break + } + + wslog.L(`T: `,`被调用`) + + select{ + case xinxinboot <- struct{}{}: //没有启动实例 + wslog.L(`I: `,`启动`) + web() + <- xinxinboot + default: //有启动实例 + wslog.L(`I: `,`已启动`) + } + }() +} + +func web() { + web := http.NewServeMux() + + var ( + server *http.Server + upgrader = websocket.Upgrader{} + ) + + web.HandleFunc("/exit", func(w http.ResponseWriter, r *http.Request) { + server.Shutdown(context.Background()) + }) + + web.HandleFunc("/ws", func(w http.ResponseWriter, r *http.Request) { + ws, err := upgrader.Upgrade(w, r, nil) + if err != nil { + wslog.L(`E: `,"upgrade:", err) + return + } + defer ws.Close() + + //测试 提示 + go func(){ + time.Sleep(time.Second*time.Duration(3)) + if s := Wasm(RT{ + R:R{ + Id: "[9,371,1,22613059]", + Device: "[\"AUTO8216117272375373\",\"77bee604-b591-4664-845b-b69603f8c71c\"]", + Ets: 1611836581, + Benchmark: "seacasdgyijfhofiuxoannn", + Time: 60, + Ts: 1611836642190, + }, + T: []int{2, 5, 1, 4}, + });s == `e4249b7657c2d4a44955548eb814797d41ddd99bfdfa5974462b8c387d701b8c83898f6d7dde1772c67fad6a113d20c20e454be1d1627e7ea99617a8a1f99bd0` { + wslog.L(`I: `,`测试通过`) + } else { + wslog.L(`E: `,`测试未通过`,s) + } + }() + + var close_chan = make(chan struct{}) + //发送 + go func(){ + for { + select { + case <-close_chan: + return + case tmp := <- send_chan: + b, e := json.Marshal(tmp) + if e != nil { + wslog.L(`E: `,e) + } + + if e := ws.WriteMessage(websocket.TextMessage,b);e != nil { + wslog.L(`E: `,e) + return + } + } + } + }() + + //接收 + for { + ws.SetReadDeadline(time.Now().Add(time.Second*time.Duration(300))) + if _, message, e := ws.ReadMessage();e != nil { + if websocket.IsCloseError(e,websocket.CloseGoingAway) { + wslog.L(`I: `,e) + } else { + wslog.L(`E: `,e) + } + close(close_chan) + break + } else { + var s S + e := json.Unmarshal(message, &s) + if e != nil { + wslog.L(`E: `, e, string(message)) + } + rec_chan <- s + } + } + }) + + //html js + web.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { + var path string = r.URL.Path[1:] + if path == `` {path = `index.html`} + http.ServeFile(w, r, "html/"+path) + }) + + server = &http.Server{ + Addr: "127.0.0.1:"+strconv.Itoa(port), + WriteTimeout: time.Second * time.Duration(10), + Handler: web, + } + + //测试 提示 + go func(){ + time.Sleep(time.Second*time.Duration(3)) + open.Run("http://127.0.0.1:"+strconv.Itoa(port)) + wslog.L(`I: `,`保持浏览器打开`,"http://127.0.0.1:"+strconv.Itoa(port),`以正常运行`) + }() + + server.ListenAndServe() +} + +func Wasm(s RT) (o string) { + select{ + case send_chan <- s: + select { + case r :=<- rec_chan: + return r.S + case <- time.After(time.Second): + wslog.L(`E: `,`超时!响应>1s,确认保持`,"http://127.0.0.1:"+strconv.Itoa(port),`开启`) + return + } + default: + return + } +} \ No newline at end of file diff --git a/Reply/0Init.go b/Reply/0Init.go index f3af669..039ec6d 100644 --- a/Reply/0Init.go +++ b/Reply/0Init.go @@ -12,14 +12,3 @@ func init(){ AllF[k] = v.(bool) } } - -//k-v -var K_v =make(map[string]interface{}) - -func init() { - buf := s.New() - buf.Load("config/config_K_v.json") - for k,v := range buf.B { - K_v[k] = v - } -} diff --git a/Reply/F.go b/Reply/F.go index 38e50b5..bb3068b 100644 --- a/Reply/F.go +++ b/Reply/F.go @@ -734,7 +734,7 @@ func init(){ } func Save_to_json(Loc int,Context []interface{}) { - if path,ok := K_v[`save_to_json`].(string);ok && path != ``{ + if path,ok := c.K_v[`save_to_json`].(string);ok && path != ``{ p.File().FileWR(p.Filel{ File:path, Write:true, diff --git a/Reply/Reply.go b/Reply/Reply.go index cf8a9c6..0a60e14 100644 --- a/Reply/Reply.go +++ b/Reply/Reply.go @@ -185,13 +185,13 @@ func (replyF) user_toast_msg(s string){ if uid != 0 { c.Danmu_Main_mq.Push_tag(`pm`,send.Pm_item{ Uid:int(uid.(float64)), - Msg:K_v[`上舰私信`].(string), + Msg:c.K_v[`上舰私信`].(string), })//上舰私信 } - if K_v[`额外私信对象`].(float64) != 0 { + if c.K_v[`额外私信对象`].(float64) != 0 { c.Danmu_Main_mq.Push_tag(`pm`,send.Pm_item{ - Uid:int(K_v[`额外私信对象`].(float64)), - Msg:K_v[`上舰私信(额外)`].(string), + Uid:int(c.K_v[`额外私信对象`].(float64)), + Msg:c.K_v[`上舰私信(额外)`].(string), })//上舰私信-对额外 } } @@ -369,7 +369,7 @@ func (replyF) send_gift(s string){ //小于设定 { var tmp = 20.0 - if v,ok := K_v[`弹幕_礼物金额显示阈值`];ok { + if v,ok := c.K_v[`弹幕_礼物金额显示阈值`];ok { tmp = v.(float64) } if allprice < tmp {msglog.L(`T: `, sh_log...);return} @@ -719,13 +719,13 @@ func Msg_showdanmu(auth interface{}, m ...string) { if i,e := strconv.Atoi(m[1]);e == nil { c.Danmu_Main_mq.Push_tag(`pm`,send.Pm_item{ Uid:i, - Msg:K_v[`弹幕私信`].(string), + Msg:c.K_v[`弹幕私信`].(string), })//上舰私信 } - if K_v[`额外私信对象`].(float64) != 0 { + if c.K_v[`额外私信对象`].(float64) != 0 { c.Danmu_Main_mq.Push_tag(`pm`,send.Pm_item{ - Uid:int(K_v[`额外私信对象`].(float64)), - Msg:K_v[`弹幕私信(额外)`].(string), + Uid:int(c.K_v[`额外私信对象`].(float64)), + Msg:c.K_v[`弹幕私信(额外)`].(string), })//上舰私信-对额外 } } diff --git a/Reply/gtk.go b/Reply/gtk.go index 5e90058..30caf38 100644 --- a/Reply/gtk.go +++ b/Reply/gtk.go @@ -366,7 +366,7 @@ func Gtk_danmu() { } else { in_smooth_roll = false tmp.SetValue(max) - if v,ok := K_v[`gtk_保留弹幕数量`].(float64);ok { + if v,ok := c.K_v[`gtk_保留弹幕数量`].(float64);ok { loc -= int(v) } else { loc -= 25 @@ -511,7 +511,7 @@ func load_face(uid string) (loc string) { loc = Gtk_img_path + `/` + uid return } - if v,ok := K_v[`gtk_头像获取等待最大数量`].(float64);ok && len(gtkGetList) > int(v) {return} + if v,ok := c.K_v[`gtk_头像获取等待最大数量`].(float64);ok && len(gtkGetList) > int(v) {return} select{ case gtkGetList <- uid: default: @@ -564,7 +564,7 @@ func show(s,img_src string,to_grid ...int){ pixbuf,e = gdk.PixbufNewFromFileAtSize(img_src, 40, 40); if e == nil { imgbuf.Lock() - if v,ok := K_v[`gtk_内存头像数量`].(float64);ok && len(imgbuf.b) > int(v) + 10 { + if v,ok := c.K_v[`gtk_内存头像数量`].(float64);ok && len(imgbuf.b) > int(v) + 10 { for k,_ := range imgbuf.b { delete(imgbuf.b,k) if len(imgbuf.b) <= int(v) {break} diff --git a/bili_danmu.go b/bili_danmu.go index da12bad..5b56074 100644 --- a/bili_danmu.go +++ b/bili_danmu.go @@ -148,6 +148,8 @@ func Demo(roomid ...int) { api.Get_Version() //获取热门榜 api.Get_HotRank() + //小心心 + go api.F_x25Kn() //切换粉丝牌,只在cookie存在时启用 api.Switch_FansMedal() if len(api.Url) == 0 || api.Roomid == 0 || api.Token == "" || api.Uid == 0 || api.Locked { diff --git a/demo/config/config_K_v.json b/demo/config/config_K_v.json index bb29f8c..c2c81c8 100644 --- a/demo/config/config_K_v.json +++ b/demo/config/config_K_v.json @@ -20,5 +20,8 @@ "gtk_头像获取等待最大数量":30, "save_to_json-help":"保存消息设置,将所有消息保存为json文件,输入文件名(带后缀)", - "save_to_json":"" + "save_to_json":"", + + "get_xiao_xinxin-help":"获取小心心", + "get_xiao_xinxin":true } \ No newline at end of file diff --git a/demo/html/27.02768ee66953cfc6d097.js b/demo/html/27.02768ee66953cfc6d097.js new file mode 100644 index 0000000..26f64ab --- /dev/null +++ b/demo/html/27.02768ee66953cfc6d097.js @@ -0,0 +1,755 @@ +(window.webpackJsonp = window.webpackJsonp || []).push([ + [27], + { + 1439: function (e, r, t) { + t(431)("WeakMap"); + }, + 1440: function (e, r, t) { + t(432)("WeakMap"); + }, + 1441: function (e, r, t) { + "use strict"; + var n = t(361), + _ = t(228).getWeak, + a = t(94), + o = t(73), + c = t(362), + E = t(197), + i = t(545), + u = t(134), + f = t(356), + T = i(5), + s = i(6), + A = 0, + P = function (e) { + return e._l || (e._l = new l()); + }, + l = function () { + this.a = []; + }, + d = function (e, r) { + return T(e.a, function (e) { + return e[0] === r; + }); + }; + (l.prototype = { + get: function (e) { + var r = d(this, e); + if (r) return r[1]; + }, + has: function (e) { + return !!d(this, e); + }, + set: function (e, r) { + var t = d(this, e); + t ? (t[1] = r) : this.a.push([e, r]); + }, + delete: function (e) { + var r = s(this.a, function (r) { + return r[0] === e; + }); + return ~r && this.a.splice(r, 1), !!~r; + }, + }), + (e.exports = { + getConstructor: function (e, r, t, a) { + var i = e(function (e, n) { + c(e, i, r, "_i"), + (e._t = r), + (e._i = A++), + (e._l = void 0), + void 0 != n && E(n, t, e[a], e); + }); + return ( + n(i.prototype, { + delete: function (e) { + if (!o(e)) return !1; + var t = _(e); + return !0 === t + ? P(f(this, r)).delete(e) + : t && u(t, this._i) && delete t[this._i]; + }, + has: function (e) { + if (!o(e)) return !1; + var t = _(e); + return !0 === t ? P(f(this, r)).has(e) : t && u(t, this._i); + }, + }), + i + ); + }, + def: function (e, r, t) { + var n = _(a(r), !0); + return !0 === n ? P(e).set(r, t) : (n[e._i] = t), e; + }, + ufstore: P, + }); + }, + 1442: function (e, r, t) { + "use strict"; + var n, + _ = t(59), + a = t(545)(0), + o = t(440), + c = t(228), + E = t(547), + i = t(1441), + u = t(73), + f = t(356), + T = t(356), + s = !_.ActiveXObject && "ActiveXObject" in _, + A = c.getWeak, + P = Object.isExtensible, + l = i.ufstore, + d = function (e) { + return function () { + return e(this, arguments.length > 0 ? arguments[0] : void 0); + }; + }, + p = { + get: function (e) { + if (u(e)) { + var r = A(e); + return !0 === r + ? l(f(this, "WeakMap")).get(e) + : r + ? r[this._i] + : void 0; + } + }, + set: function (e, r) { + return i.def(f(this, "WeakMap"), e, r); + }, + }, + W = (e.exports = t(433)("WeakMap", d, p, i, !0, !0)); + T && + s && + (E((n = i.getConstructor(d, "WeakMap")).prototype, p), + (c.NEED = !0), + a(["delete", "has", "get", "set"], function (e) { + var r = W.prototype, + t = r[e]; + o(r, e, function (r, _) { + if (u(r) && !P(r)) { + this._f || (this._f = new n()); + var a = this._f[e](r, _); + return "set" == e ? this : a; + } + return t.call(this, r, _); + }); + })); + }, + 1443: function (e, r, t) { + t(233), t(198), t(1442), t(1440), t(1439), (e.exports = t(43).WeakMap); + }, + 1444: function (e, r, t) { + e.exports = { default: t(1443), __esModule: !0 }; + }, + 2222: function (e, r, t) { + "use strict"; + t.r(r); + var n = t(200), + _ = t.n(n), //new _.a() = new Map() + a = t(1444), + o = t.n(a), //new o.a() = new WeakMap() + c = t(12), + E = t.n(c), //E()(util) = typeof util + i = t(15), + u = t.n(i); //u()(t) = Object.keys(t) + r.default = function () { + var e = { STDWEB_PRIVATE: {} }; + (e.STDWEB_PRIVATE.to_utf8 = function (r, t) { + for (var n = e.HEAPU8, _ = 0; _ < r.length; ++_) { + var a = r.charCodeAt(_); + a >= 55296 && + a <= 57343 && + (a = (65536 + ((1023 & a) << 10)) | (1023 & r.charCodeAt(++_))), + a <= 127 + ? (n[t++] = a) + : a <= 2047 + ? ((n[t++] = 192 | (a >> 6)), (n[t++] = 128 | (63 & a))) + : a <= 65535 + ? ((n[t++] = 224 | (a >> 12)), + (n[t++] = 128 | ((a >> 6) & 63)), + (n[t++] = 128 | (63 & a))) + : a <= 2097151 + ? ((n[t++] = 240 | (a >> 18)), + (n[t++] = 128 | ((a >> 12) & 63)), + (n[t++] = 128 | ((a >> 6) & 63)), + (n[t++] = 128 | (63 & a))) + : a <= 67108863 + ? ((n[t++] = 248 | (a >> 24)), + (n[t++] = 128 | ((a >> 18) & 63)), + (n[t++] = 128 | ((a >> 12) & 63)), + (n[t++] = 128 | ((a >> 6) & 63)), + (n[t++] = 128 | (63 & a))) + : ((n[t++] = 252 | (a >> 30)), + (n[t++] = 128 | ((a >> 24) & 63)), + (n[t++] = 128 | ((a >> 18) & 63)), + (n[t++] = 128 | ((a >> 12) & 63)), + (n[t++] = 128 | ((a >> 6) & 63)), + (n[t++] = 128 | (63 & a))); + } + }), + (e.STDWEB_PRIVATE.noop = function () {}), + (e.STDWEB_PRIVATE.to_js = function (r) { + var t = e.HEAPU8[r + 12]; + if (0 !== t) { + if (1 === t) return null; + if (2 === t) return e.HEAP32[r / 4]; + if (3 === t) return e.HEAPF64[r / 8]; + if (4 === t) { + var n = e.HEAPU32[r / 4], + _ = e.HEAPU32[(r + 4) / 4]; + return e.STDWEB_PRIVATE.to_js_string(n, _); + } + if (5 === t) return !1; + if (6 === t) return !0; + if (7 === t) { + (n = e.STDWEB_PRIVATE.arena + e.HEAPU32[r / 4]), + (_ = e.HEAPU32[(r + 4) / 4]); + for (var a = [], o = 0; o < _; ++o) + a.push(e.STDWEB_PRIVATE.to_js(n + 16 * o)); + return a; + } + if (8 === t) { + var c = e.STDWEB_PRIVATE.arena, + E = c + e.HEAPU32[r / 4], + i = ((_ = e.HEAPU32[(r + 4) / 4]), c + e.HEAPU32[(r + 8) / 4]); + for (a = {}, o = 0; o < _; ++o) { + var u = e.HEAPU32[(i + 8 * o) / 4], + f = e.HEAPU32[(i + 4 + 8 * o) / 4], + T = e.STDWEB_PRIVATE.to_js_string(u, f), + s = e.STDWEB_PRIVATE.to_js(E + 16 * o); + a[T] = s; + } + return a; + } + if (9 === t) + return e.STDWEB_PRIVATE.acquire_js_reference(e.HEAP32[r / 4]); + if (10 === t || 12 === t || 13 === t) { + var A = e.HEAPU32[r / 4], + P = ((n = e.HEAPU32[(r + 4) / 4]), e.HEAPU32[(r + 8) / 4]), + l = 0, + d = !1; + return ( + ((a = function r() { + if (0 === n || !0 === d) + throw 10 === t + ? new ReferenceError("Already dropped Rust function called!") + : 12 === t + ? new ReferenceError("Already dropped FnMut function called!") + : new ReferenceError( + "Already called or dropped FnOnce function called!" + ); + var _ = n; + if ( + (13 === t && ((r.drop = e.STDWEB_PRIVATE.noop), (n = 0)), + 0 !== l && (12 === t || 13 === t)) + ) + throw new ReferenceError( + "FnMut function called multiple times concurrently!" + ); + var a = e.STDWEB_PRIVATE.alloc(16); + e.STDWEB_PRIVATE.serialize_array(a, arguments); + try { + (l += 1), e.STDWEB_PRIVATE.dyncall("vii", A, [_, a]); + var o = e.STDWEB_PRIVATE.tmp; + e.STDWEB_PRIVATE.tmp = null; + } finally { + l -= 1; + } + return !0 === d && 0 === l && r.drop(), o; + }).drop = function () { + if (0 === l) { + a.drop = e.STDWEB_PRIVATE.noop; + var r = n; + (n = 0), 0 != r && e.STDWEB_PRIVATE.dyncall("vi", P, [r]); + } else d = !0; + }), + a + ); + } + if (14 === t) { + (n = e.HEAPU32[r / 4]), (_ = e.HEAPU32[(r + 4) / 4]); + var p = e.HEAPU32[(r + 8) / 4], + W = n + _; + switch (p) { + case 0: + return e.HEAPU8.subarray(n, W); + case 1: + return e.HEAP8.subarray(n, W); + case 2: + return e.HEAPU16.subarray(n, W); + case 3: + return e.HEAP16.subarray(n, W); + case 4: + return e.HEAPU32.subarray(n, W); + case 5: + return e.HEAP32.subarray(n, W); + case 6: + return e.HEAPF32.subarray(n, W); + case 7: + return e.HEAPF64.subarray(n, W); + } + } else if (15 === t) + return e.STDWEB_PRIVATE.get_raw_value(e.HEAPU32[r / 4]); + } + }), + (e.STDWEB_PRIVATE.serialize_object = function (r, t) { + var n = u()(t), + _ = n.length, + a = e.STDWEB_PRIVATE.alloc(8 * _), + o = e.STDWEB_PRIVATE.alloc(16 * _); + (e.HEAPU8[r + 12] = 8), + (e.HEAPU32[r / 4] = o), + (e.HEAPU32[(r + 4) / 4] = _), + (e.HEAPU32[(r + 8) / 4] = a); + for (var c = 0; c < _; ++c) { + var E = n[c], + i = a + 8 * c; + e.STDWEB_PRIVATE.to_utf8_string(i, E), + e.STDWEB_PRIVATE.from_js(o + 16 * c, t[E]); + } + }), + (e.STDWEB_PRIVATE.serialize_array = function (r, t) { + var n = t.length, + _ = e.STDWEB_PRIVATE.alloc(16 * n); + (e.HEAPU8[r + 12] = 7), + (e.HEAPU32[r / 4] = _), + (e.HEAPU32[(r + 4) / 4] = n); + for (var a = 0; a < n; ++a) e.STDWEB_PRIVATE.from_js(_ + 16 * a, t[a]); + }); + var r = + "function" == typeof TextEncoder + ? new TextEncoder("utf-8") + : "object" === ("undefined" == typeof util ? "undefined" : E()(util)) && + util && + "function" == typeof util.TextEncoder + ? new util.TextEncoder("utf-8") + : null; + (e.STDWEB_PRIVATE.to_utf8_string = + null != r + ? function (t, n) { + var _ = r.encode(n), + a = _.length, + o = 0; + a > 0 && ((o = e.STDWEB_PRIVATE.alloc(a)), e.HEAPU8.set(_, o)), + (e.HEAPU32[t / 4] = o), + (e.HEAPU32[(t + 4) / 4] = a); + } + : function (r, t) { + var n = e.STDWEB_PRIVATE.utf8_len(t), + _ = 0; + n > 0 && + ((_ = e.STDWEB_PRIVATE.alloc(n)), e.STDWEB_PRIVATE.to_utf8(t, _)), + (e.HEAPU32[r / 4] = _), + (e.HEAPU32[(r + 4) / 4] = n); + }), + (e.STDWEB_PRIVATE.from_js = function (r, t) { + var n = Object.prototype.toString.call(t); + if ("[object String]" === n) + (e.HEAPU8[r + 12] = 4), e.STDWEB_PRIVATE.to_utf8_string(r, t); + else if ("[object Number]" === n) + t === (0 | t) + ? ((e.HEAPU8[r + 12] = 2), (e.HEAP32[r / 4] = t)) + : ((e.HEAPU8[r + 12] = 3), (e.HEAPF64[r / 8] = t)); + else if (null === t) e.HEAPU8[r + 12] = 1; + else if (void 0 === t) e.HEAPU8[r + 12] = 0; + else if (!1 === t) e.HEAPU8[r + 12] = 5; + else if (!0 === t) e.HEAPU8[r + 12] = 6; + else if ("[object Symbol]" === n) { + var _ = e.STDWEB_PRIVATE.register_raw_value(t); + (e.HEAPU8[r + 12] = 15), (e.HEAP32[r / 4] = _); + } else { + var a = e.STDWEB_PRIVATE.acquire_rust_reference(t); + (e.HEAPU8[r + 12] = 9), (e.HEAP32[r / 4] = a); + } + }); + var t = + "function" == typeof TextDecoder + ? new TextDecoder("utf-8") + : "object" === ("undefined" == typeof util ? "undefined" : E()(util)) && + util && + "function" == typeof util.TextDecoder + ? new util.TextDecoder("utf-8") + : null; + (e.STDWEB_PRIVATE.to_js_string = + null != t + ? function (r, n) { + return t.decode(e.HEAPU8.subarray(r, r + n)); + } + : function (r, t) { + for ( + var n = e.HEAPU8, _ = (0 | (r |= 0)) + (0 | (t |= 0)), a = ""; + r < _; + + ) { + var o = n[r++]; + if (o < 128) a += String.fromCharCode(o); + else { + var c = 31 & o, + E = 0; + r < _ && (E = n[r++]); + var i = (c << 6) | (63 & E); + if (o >= 224) { + var u = 0; + r < _ && (u = n[r++]); + var f = ((63 & E) << 6) | (63 & u); + if (((i = (c << 12) | f), o >= 240)) { + var T = 0; + r < _ && (T = n[r++]), + (i = ((7 & c) << 18) | (f << 6) | (63 & T)), + (a += String.fromCharCode(55232 + (i >> 10))), + (i = 56320 + (1023 & i)); + } + } + a += String.fromCharCode(i); + } + } + return a; + }), + (e.STDWEB_PRIVATE.id_to_ref_map = {}), + (e.STDWEB_PRIVATE.id_to_refcount_map = {}), + (e.STDWEB_PRIVATE.ref_to_id_map = new o.a()), + (e.STDWEB_PRIVATE.ref_to_id_map_fallback = new _.a()), + (e.STDWEB_PRIVATE.last_refid = 1), + (e.STDWEB_PRIVATE.id_to_raw_value_map = {}), + (e.STDWEB_PRIVATE.last_raw_value_id = 1), + (e.STDWEB_PRIVATE.acquire_rust_reference = function (r) { + if (void 0 === r || null === r) return 0; + var t = e.STDWEB_PRIVATE.id_to_refcount_map, + n = e.STDWEB_PRIVATE.id_to_ref_map, + _ = e.STDWEB_PRIVATE.ref_to_id_map, + a = e.STDWEB_PRIVATE.ref_to_id_map_fallback, + o = _.get(r); + if ((void 0 === o && (o = a.get(r)), void 0 === o)) { + o = e.STDWEB_PRIVATE.last_refid++; + try { + _.set(r, o); + } catch (e) { + a.set(r, o); + } + } + return o in n ? t[o]++ : ((n[o] = r), (t[o] = 1)), o; + }), + (e.STDWEB_PRIVATE.acquire_js_reference = function (r) { + return e.STDWEB_PRIVATE.id_to_ref_map[r]; + }), + (e.STDWEB_PRIVATE.increment_refcount = function (r) { + e.STDWEB_PRIVATE.id_to_refcount_map[r]++; + }), + (e.STDWEB_PRIVATE.decrement_refcount = function (r) { + var t = e.STDWEB_PRIVATE.id_to_refcount_map; + if (0 == --t[r]) { + var n = e.STDWEB_PRIVATE.id_to_ref_map, + _ = e.STDWEB_PRIVATE.ref_to_id_map_fallback, + a = n[r]; + delete n[r], delete t[r], _.delete(a); + } + }), + (e.STDWEB_PRIVATE.register_raw_value = function (r) { + var t = e.STDWEB_PRIVATE.last_raw_value_id++; + return (e.STDWEB_PRIVATE.id_to_raw_value_map[t] = r), t; + }), + (e.STDWEB_PRIVATE.unregister_raw_value = function (r) { + delete e.STDWEB_PRIVATE.id_to_raw_value_map[r]; + }), + (e.STDWEB_PRIVATE.get_raw_value = function (r) { + return e.STDWEB_PRIVATE.id_to_raw_value_map[r]; + }), + (e.STDWEB_PRIVATE.alloc = function (r) { + return e.web_malloc(r); + }), + (e.STDWEB_PRIVATE.dyncall = function (r, t, n) { + return e.web_table.get(t).apply(null, n); + }), + (e.STDWEB_PRIVATE.utf8_len = function (e) { + for (var r = 0, t = 0; t < e.length; ++t) { + var n = e.charCodeAt(t); + n >= 55296 && + n <= 57343 && + (n = (65536 + ((1023 & n) << 10)) | (1023 & e.charCodeAt(++t))), + n <= 127 + ? ++r + : (r += + n <= 2047 + ? 2 + : n <= 65535 + ? 3 + : n <= 2097151 + ? 4 + : n <= 67108863 + ? 5 + : 6); + } + return r; + }), + (e.STDWEB_PRIVATE.prepare_any_arg = function (r) { + var t = e.STDWEB_PRIVATE.alloc(16); + return e.STDWEB_PRIVATE.from_js(t, r), t; + }), + (e.STDWEB_PRIVATE.acquire_tmp = function (r) { + var t = e.STDWEB_PRIVATE.tmp; + return (e.STDWEB_PRIVATE.tmp = null), t; + }); + var n = null, + a = null, + c = null, + i = null, + f = null, + T = null, + s = null, + A = null; + function P() { + var r = e.instance.exports.memory.buffer; + (n = new Int8Array(r)), + (a = new Int16Array(r)), + (c = new Int32Array(r)), + (i = new Uint8Array(r)), + (f = new Uint16Array(r)), + (T = new Uint32Array(r)), + (s = new Float32Array(r)), + (A = new Float64Array(r)), + (e.HEAP8 = n), + (e.HEAP16 = a), + (e.HEAP32 = c), + (e.HEAPU8 = i), + (e.HEAPU16 = f), + (e.HEAPU32 = T), + (e.HEAPF32 = s), + (e.HEAPF64 = A); + } + return ( + Object.defineProperty(e, "exports", { value: {} }), + { + imports: { + env: { + __cargo_web_snippet_0d39c013e2144171d64e2fac849140a7e54c939a: function ( + r, + t + ) { + (t = e.STDWEB_PRIVATE.to_js(t)), + e.STDWEB_PRIVATE.from_js(r, t.location); + }, + __cargo_web_snippet_0f503de1d61309643e0e13a7871406891e3691c9: function ( + r + ) { + e.STDWEB_PRIVATE.from_js(r, window); + }, + __cargo_web_snippet_10f5aa3985855124ab83b21d4e9f7297eb496508: function ( + r + ) { + return ( + (e.STDWEB_PRIVATE.acquire_js_reference(r) instanceof Array) | 0 + ); + }, + __cargo_web_snippet_2b0b92aee0d0de6a955f8e5540d7923636d951ae: function ( + r, + t + ) { + (t = e.STDWEB_PRIVATE.to_js(t)), + e.STDWEB_PRIVATE.from_js( + r, + (function () { + try { + return { value: t.origin, success: !0 }; + } catch (e) { + return { error: e, success: !1 }; + } + })() + ); + }, + __cargo_web_snippet_461d4581925d5b0bf583a3b445ed676af8701ca6: function ( + r, + t + ) { + (t = e.STDWEB_PRIVATE.to_js(t)), + e.STDWEB_PRIVATE.from_js( + r, + (function () { + try { + return { value: t.host, success: !0 }; + } catch (e) { + return { error: e, success: !1 }; + } + })() + ); + }, + __cargo_web_snippet_4c895ac2b754e5559c1415b6546d672c58e29da6: function ( + r, + t + ) { + (t = e.STDWEB_PRIVATE.to_js(t)), + e.STDWEB_PRIVATE.from_js( + r, + (function () { + try { + return { value: t.protocol, success: !0 }; + } catch (e) { + return { error: e, success: !1 }; + } + })() + ); + }, + __cargo_web_snippet_614a3dd2adb7e9eac4a0ec6e59d37f87e0521c3b: function ( + r, + t + ) { + (t = e.STDWEB_PRIVATE.to_js(t)), + e.STDWEB_PRIVATE.from_js(r, t.error); + }, + __cargo_web_snippet_62ef43cf95b12a9b5cdec1639439c972d6373280: function ( + r, + t + ) { + (t = e.STDWEB_PRIVATE.to_js(t)), + e.STDWEB_PRIVATE.from_js(r, t.childNodes); + }, + __cargo_web_snippet_6fcce0aae651e2d748e085ff1f800f87625ff8c8: function ( + r + ) { + e.STDWEB_PRIVATE.from_js(r, document); + }, + __cargo_web_snippet_7ba9f102925446c90affc984f921f414615e07dd: function ( + r, + t + ) { + (t = e.STDWEB_PRIVATE.to_js(t)), + e.STDWEB_PRIVATE.from_js(r, t.body); + }, + __cargo_web_snippet_80d6d56760c65e49b7be8b6b01c1ea861b046bf0: function ( + r + ) { + e.STDWEB_PRIVATE.decrement_refcount(r); + }, + __cargo_web_snippet_897ff2d0160606ea98961935acb125d1ddbf4688: function ( + r + ) { + var t = e.STDWEB_PRIVATE.acquire_js_reference(r); + return t instanceof DOMException && "SecurityError" === t.name; + }, + __cargo_web_snippet_8c32019649bb581b1b742eeedfc410e2bedd56a6: function ( + r, + t + ) { + var n = e.STDWEB_PRIVATE.acquire_js_reference(r); + e.STDWEB_PRIVATE.serialize_array(t, n); + }, + __cargo_web_snippet_a466a2ab96cd77e1a77dcdb39f4f031701c195fc: function ( + r, + t + ) { + (t = e.STDWEB_PRIVATE.to_js(t)), + e.STDWEB_PRIVATE.from_js( + r, + (function () { + try { + return { value: t.pathname, success: !0 }; + } catch (e) { + return { error: e, success: !1 }; + } + })() + ); + }, + __cargo_web_snippet_ab05f53189dacccf2d365ad26daa407d4f7abea9: function ( + r, + t + ) { + (t = e.STDWEB_PRIVATE.to_js(t)), + e.STDWEB_PRIVATE.from_js(r, t.value); + }, + __cargo_web_snippet_b06dde4acf09433b5190a4b001259fe5d4abcbc2: function ( + r, + t + ) { + (t = e.STDWEB_PRIVATE.to_js(t)), + e.STDWEB_PRIVATE.from_js(r, t.success); + }, + __cargo_web_snippet_b33a39de4ca954888e26fe9caa277138e808eeba: function ( + r, + t + ) { + (t = e.STDWEB_PRIVATE.to_js(t)), + e.STDWEB_PRIVATE.from_js(r, t.length); + }, + __cargo_web_snippet_cdf2859151791ce4cad80688b200564fb08a8613: function ( + r, + t + ) { + (t = e.STDWEB_PRIVATE.to_js(t)), + e.STDWEB_PRIVATE.from_js( + r, + (function () { + try { + return { value: t.href, success: !0 }; + } catch (e) { + return { error: e, success: !1 }; + } + })() + ); + }, + __cargo_web_snippet_e8ef87c41ded1c10f8de3c70dea31a053e19747c: function ( + r, + t + ) { + (t = e.STDWEB_PRIVATE.to_js(t)), + e.STDWEB_PRIVATE.from_js( + r, + (function () { + try { + return { value: t.hostname, success: !0 }; + } catch (e) { + return { error: e, success: !1 }; + } + })() + ); + }, + __cargo_web_snippet_e9638d6405ab65f78daf4a5af9c9de14ecf1e2ec: function ( + r + ) { + (r = e.STDWEB_PRIVATE.to_js(r)), + console.log(t), + e.STDWEB_PRIVATE.unregister_raw_value(r); + }, + __cargo_web_snippet_ff5103e6cc179d13b4c7a785bdce2708fd559fc0: function ( + r + ) { + e.STDWEB_PRIVATE.tmp = e.STDWEB_PRIVATE.to_js(r); + }, + __web_on_grow: P, + }, + }, + initialize: function (r) { + return ( + Object.defineProperty(e, "instance", { value: r }), + Object.defineProperty(e, "web_malloc", { + value: e.instance.exports.__web_malloc, + }), + Object.defineProperty(e, "web_free", { + value: e.instance.exports.__web_free, + }), + Object.defineProperty(e, "web_table", { + value: e.instance.exports.__indirect_function_table, + }), + (e.exports.spyder = function (r, t) { + return e.STDWEB_PRIVATE.acquire_tmp( + e.instance.exports.spyder( + e.STDWEB_PRIVATE.prepare_any_arg(r), + e.STDWEB_PRIVATE.prepare_any_arg(t) + ) + ); + }), + (e.exports.from_js = (r, t) => {//export fromjs + return e.STDWEB_PRIVATE.from_js(r, t) + }), + P(), + e.exports + ); + }, + } + ); + }; + }, + }, +]); diff --git a/demo/html/bili.js b/demo/html/bili.js new file mode 100644 index 0000000..ed5a177 --- /dev/null +++ b/demo/html/bili.js @@ -0,0 +1,189 @@ +/** + * 获取wasm并返回instance + * @param {string} url wasm文件位置 + * @param {{}} importObject new t_func()得到的对象 + */ +function fetchAndInstantiate(url, importObject) { + return fetch(url) + .then((response) => response.arrayBuffer()) + .then((bytes) => WebAssembly.instantiate(bytes, importObject)) + .then((results) => results.instance); +} + +/** + * 根据 + * https://github.com/lkeme/bilibili-pcheartbeat 及 + * 27.02768ee66953cfc6d097.js(改自bilibili) + * 编写 + */ +function t_func() { + var tmp = {}; + tmp = (arg) => { + if (arg == 200) { + return { a: Map }; + } + if (arg == 1444) { + return { a: WeakMap }; + } + if (arg == 12) { + return () => { + return (argc) => { + return typeof argc; + }; + }; + } + if (arg == 15) { + return () => { + return (argc) => { + return Object.keys(argc); + }; + }; + } + }; + tmp.n = (arg) => { + return arg; + }; + tmp.r = (arg) => { + arg.default = {}; + }; + return tmp; +} + +/** + * 全局操作对象 + */ +var wasm = + /** + * 初始化 + */ + (() => { + let r = {}; + webpackJsonp[0][1][2222](null, r, new t_func()); + return r.default(); + })(); + +/** + * 替换27.02768ee66953cfc6d097.js(改自bilibili)中的导入函数 + */ +(() => { + /** + * 返回host + */ + wasm.imports.env.__cargo_web_snippet_461d4581925d5b0bf583a3b445ed676af8701ca6 = ( + r, + t + ) => { + wasm.all.from_js(r, { value: "live.bilibili.com", success: !0 }); //hs + }; + /** + * 返回protocol + */ + wasm.imports.env.__cargo_web_snippet_4c895ac2b754e5559c1415b6546d672c58e29da6 = ( + r, + t + ) => { + wasm.all.from_js(r, { value: "https:", success: !0 }); //pe + }; + /** + * 返回hostname + */ + wasm.imports.env.__cargo_web_snippet_e8ef87c41ded1c10f8de3c70dea31a053e19747c = ( + r, + t + ) => { + wasm.all.from_js(r, { value: "live.bilibili.com", success: !0 }); //hn + }; + /** + * 返回href + */ + wasm.imports.env.__cargo_web_snippet_cdf2859151791ce4cad80688b200564fb08a8613 = ( + r, + t + ) => { + wasm.all.from_js(r, { + value: "https://live.bilibili.com/0", + success: !0, + }); //hq + }; +})(); + +/** + * 加密 + */ +wasm.spyder = (r, t) => { + try { + return wasm.all.spyder(JSON.stringify(r), t); + } catch (err) { + return err; + } +}; + +/** + * 测试加密是否正常 + */ +wasm.test = () => { + let test = { + r: { + id: "[9,371,1,22613059]", + device: '["AUTO8216117272375373","77bee604-b591-4664-845b-b69603f8c71c"]', + ets: 1611836581, + benchmark: "seacasdgyijfhofiuxoannn", + time: 60, + ts: 1611836642190, + }, + t: [2, 5, 1, 4], + }; + `e4249b7657c2d4a44955548eb814797d41ddd99bfdfa5974462b8c387d701b8c83898f6d7dde1772c67fad6a113d20c20e454be1d1627e7ea99617a8a1f99bd0` == + wasm.spyder(test.r, test.t) + ? (() => { + console.log(`Test Pass`); + console.log(`现在可以使用 wasm.spyder(r,t)进行加密`); + })() + : console.error(`Test No Pass`); +}; + +/** + * 获取wasm并测试加密 + */ +(() => { + fetchAndInstantiate("e791556706f88d88b4846a61a583b31db007f83d.wasm", { + env: wasm.imports.env, + }) + .then((instance) => { + wasm.all = wasm.initialize(instance); + wasm.test(); + }) + .catch((reason) => console.error(reason)); +})(); + +/** + * ws 收发 + */ +(() => { + if (window["WebSocket"]) { + conn = new WebSocket("ws://" + document.location.host + "/ws"); + conn.onclose = function () { + location.reload(); + }; + conn.onmessage = function (evt) { + deal(evt.data) + }; + + function deal(data) { + //或许还没初始化 + if (wasm.all == null) { + setTimeout(()=>{ + deal(data) + },100) + return + } + + let rt = JSON.parse(data), + s = wasm.spyder(rt.r, rt.t); + + conn.send(JSON.stringify({ + s:s + })); + } + } +})(); diff --git a/demo/html/e791556706f88d88b4846a61a583b31db007f83d.wasm b/demo/html/e791556706f88d88b4846a61a583b31db007f83d.wasm new file mode 100644 index 0000000000000000000000000000000000000000..563ace6934b318a3cc3ae42666405034dcd8be6f GIT binary patch literal 239236 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 iGfU%2^y0;cJ>Ng(X~7kIseJAWv}^ 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

B#onToq!)?TEZW257R&qe7XF?A;MK0s^jEI*O@K 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 literal 0 HcmV?d00001 diff --git a/demo/html/index.html b/demo/html/index.html new file mode 100644 index 0000000..d4f9813 --- /dev/null +++ b/demo/html/index.html @@ -0,0 +1,71 @@ + + + + + + + + + +

小心心加密页面

+

介绍

+

+ 本页面用于在获取小心心过程中的加密问题。大致原理:加载wasm文件并处理golang-websocket发来的数据再返回加密字符串
+ 打开开发者工具查看运行情况
+ !!如需获取小心心请勿关闭此标签页!! +

+ 项目地址
+

外部资源来源:

+

+ 27.02768ee66953cfc6d097.js
+ e791556706f88d88b4846a61a583b31db007f83d.wasm +

+

改动:

+

+ 27.02768ee66953cfc6d097.js +
+ + + (e.exports.from_js = (r, t) => {//export fromjs return + e.STDWEB_PRIVATE.from_js(r, t) }), + +

+

资料参考:

+

+ WebAssembly
+ Bilibili Web端直播加密心跳请求解析
+

+
qydysky 2020
+ + + + -- 2.39.2