From 77a65f2122355b9008da0e82f8362f5f3e8106c4 Mon Sep 17 00:00:00 2001 From: Dylan <43309682+feiyangbeyond@users.noreply.github.com> Date: Sun, 4 Jun 2023 23:43:24 +0800 Subject: [PATCH 1/2] Add .idea dir ignore --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 15933587..4c66ac6e 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,5 @@ /other_scripts /assets/markdown/development_todo.md /assets/markdown/tasks_before-update.md -/assets/markdown/original_README.md \ No newline at end of file +/assets/markdown/original_README.md +/.idea \ No newline at end of file From 4fb7606003d5b82eadec9d8ca4a46e2b88e19669 Mon Sep 17 00:00:00 2001 From: Dylan <43309682+feiyangbeyond@users.noreply.github.com> Date: Sun, 4 Jun 2023 23:47:34 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=E9=80=82=E9=85=8Dbilibili=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3wbi=E7=AD=BE=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/js/library/BilibiliAPI_Mod.js | 49 +++++++++++++++++++----- assets/js/library/BilibiliAPI_Mod.min.js | 2 +- assets/js/library/libWbiSign.js | 37 ++++++++++++++++++ 3 files changed, 77 insertions(+), 11 deletions(-) create mode 100644 assets/js/library/libWbiSign.js diff --git a/assets/js/library/BilibiliAPI_Mod.js b/assets/js/library/BilibiliAPI_Mod.js index d8267164..5ec09a95 100644 --- a/assets/js/library/BilibiliAPI_Mod.js +++ b/assets/js/library/BilibiliAPI_Mod.js @@ -12,6 +12,26 @@ let BAPI_csrf_token, BAPI_visit_id, BAPI_ts_ms = () => Date.now(),// 当前毫秒 + BAPI_WBI_SIGN = () => { + return new Promise((resolve, reject) => { + BAPI.x.getWbiSign().then(resp =>{ + console.log(resp) + if (resp.code === 0) { + const { + img_url, + sub_url + } = resp.data.wbi_img + const sign = { + img_key: img_url.substring(img_url.lastIndexOf('/') + 1, img_url.length).split('.')[0], + sub_key: sub_url.substring(sub_url.lastIndexOf('/') + 1, sub_url.length).split('.')[0] + } + resolve(sign) + }else{ + reject(resp.message) + } + }).catch(err => reject(err)) + }) + } BAPI_ts_s = () => Math.round(BAPI_ts_ms() / 1000),// 当前秒 getAppCommonRequestJson = (access_token) => { return { @@ -1178,6 +1198,13 @@ var BAPI = { } }, x: { + getWbiSign: () => { + return BAPI.ajax({ + url: '//api.bilibili.com/x/web-interface/nav', + method: 'get', + responseType: 'json' + }) + }, getUserSpace: (mid, ps, tid, pn, keyword, order, jsonp) => { //查看用户动态 return BAPI.ajax({ url: '//api.bilibili.com/x/space/arc/search', @@ -1202,17 +1229,19 @@ var BAPI = { }) }, getAccInfo: (mid, token = '', platform = 'web', web_location = '1550101') => { - return BAPI.ajax({ - url: '//api.bilibili.com/x/space/wbi/acc/info', - data: { - mid: mid, - platform: platform, - token: token, - web_location: web_location, - wts: BAPI_ts_s(), - w_rid: CryptoJS.MD5(BAPI_ts_ms()).toString() // fake w_rid - } + return new Promise((resolve, reject) => { + BAPI_WBI_SIGN().then(resp => { + BAPI.ajax({ + url: '//api.bilibili.com/x/space/wbi/acc/info?' + encWbi({ + mid: mid, + platform: platform, + token: token, + web_location: web_location, + wts: BAPI_ts_s(), + }, resp.img_key, resp.sub_key) + }).then(resp2 => resolve(resp2)) }) + }) }, getCoinInfo: (callback, jsonp, aid, _) => { //获取视频投币状态 return BAPI.ajax({ diff --git a/assets/js/library/BilibiliAPI_Mod.min.js b/assets/js/library/BilibiliAPI_Mod.min.js index fc4f61b5..a2046830 100644 --- a/assets/js/library/BilibiliAPI_Mod.min.js +++ b/assets/js/library/BilibiliAPI_Mod.min.js @@ -9,4 +9,4 @@ // @include * // @license MIT // ==/UserScript== -let BAPI_csrf_token,BAPI_visit_id,BAPI_ts_ms=()=>Date.now(),BAPI_ts_s=()=>Math.round(BAPI_ts_ms()/1e3),getAppCommonRequestJson=a=>({access_key:a,actionKey:"appkey",appkey:"1d8b6e7d45233436",build:"6720300",c_locale:"zh_CN",channel:"bili",device:"android",disable_rcmd:0,mobi_app:"android",platform:"android",s_locale:"zh_CN",statistics:'{"appId":1,"platform":3,"version":"7.3.0","abtest":""}',sign:BilibiliToken.md5(Math.random().toString()),ts:BAPI_ts_s()}),getAppHeaders=a=>{const e=BilibiliToken.md5(Math.random().toString()),t=BilibiliToken.md5(Math.random().toString()),i=e+t;return{buvid:BilibiliToken.buvidXX,fp_local:i,fp_remote:i,session_id:e.substring(0,8),env:"prod","app-key":"android64","user-agent":"Mozilla/5.0 BiliDroid/6.72.0 (bbcallen@gmail.com) os/android model/XQ-CT72 mobi_app/android build/6720300 channel/bilih5 innerVer/6720310 osVer/12 network/2","x-bili-trace-id":e.concat(":",t.substring(0,16),":0:0"),"x-bili-aurora-eid":"VFwJQVkEBFYH","x-bili-mid":a,"x-bili-aurora-zone":"","content-type":"application/x-www-form-urlencoded; charset=utf-8","accept-encoding":"gzip"}};var BAPI={setCommonArgs:(a="",e="")=>{BAPI_csrf_token=a,BAPI_visit_id=e},TreasureBox:{getAward:(a,e,t)=>BAPI.lottery.SilverBox.getAward(a,e,t),getCaptcha:a=>BAPI.lottery.SilverBox.getCaptcha(a),getCurrentTask:()=>BAPI.lottery.SilverBox.getCurrentTask()},Exchange:{coin2silver:(a,e)=>BAPI.pay.coin2silver(a,e),silver2coin:a=>BAPI.pay.silver2coin(a),old:{coin2silver:a=>BAPI.exchange.coin2silver(a),silver2coin:()=>BAPI.exchange.silver2coin()}},Lottery:{Gift:{check:a=>BAPI.xlive.smalltv.check(a),join:(a,e,t)=>BAPI.xlive.smalltv.join(a,e,t),notice:(a,e)=>BAPI.xlive.smalltv.notice(a,e)},Raffle:{check:a=>BAPI.activity.check(a),join:(a,e)=>BAPI.activity.join(a,e),notice:(a,e)=>BAPI.activity.notice(a,e)},MaterialObject:{getRoomActivityByRoomid:a=>BAPI.lottery.box.getRoomActivityByRoomid(a),getStatus:(a,e)=>BAPI.lottery.box.getStatus(a,e),check:a=>BAPI.lottery.box.getBoxInfo(a),draw:(a,e)=>BAPI.lottery.box.draw(a,e),getWinnerGroupInfo:(a,e)=>BAPI.lottery.box.getWinnerGroupInfo(a,e)},Guard:{check:a=>BAPI.lottery.lottery.check_guard(a),join:(a,e,t)=>BAPI.xlive.guard.join(a,e,t)},Pk:{check:a=>BAPI.xlive.pk.check(a),join:(a,e)=>BAPI.xlive.pk.join(a,e)}},Group:{my_groups:()=>BAPI.link_group.my_groups(),sign_in:(a,e)=>BAPI.link_group.sign_in(a,e)},Storm:{check:a=>BAPI.lottery.Storm.check(a),join:(a,e,t,i,o)=>BAPI.lottery.Storm.join(a,e,t,i,o),join_ex:(a,e,t,i,o,r="",l="",n=16777215)=>BAPI.lottery.Storm.join_ex(a,e,t,i,o,"","",16777215)},HeartBeat:{web:()=>BAPI.user.userOnlineHeart(),mobile:()=>BAPI.mobile.userOnlineHeart()},DailyReward:{task:()=>BAPI.home.reward(),exp:()=>BAPI.exp(),login:()=>BAPI.x.now(),watch:(a,e,t,i,o,r,l,n,d)=>BAPI.x.heartbeat(a,e,t,i,o,r,l,n,d),coin:(a,e)=>BAPI.x.coin_add(a,e),share:a=>BAPI.x.share_add(a)},ajax:a=>{void 0===a.xhrFields&&(a.xhrFields={}),a.xhrFields.withCredentials=!0,jQuery.extend(a,{url:("//"===a.url.substr(0,2)||"http"===a.url.substr(0,4)?"":"//api.live.bilibili.com/")+a.url,method:a.method||"GET",crossDomain:!0,dataType:a.dataType||"json"});const e=jQuery.Deferred();return jQuery.ajax(a).then(((...a)=>{e.resolve(...a)})).catch((a=>{a.responseJSON?a.responseJSON.msg=a.responseJSON.message:0!==a.status?a.responseJSON={code:a.status,message:`状态码: ${a.status}`,msg:`状态码: ${a.status}`}:a.responseJSON={code:"NET_ERR",msg:"请检查网络",message:"请检查网络"},a.responseJSON.netError=!0,e.resolve(a.responseJSON)})),e},ajaxWithCommonArgs:a=>(a.data||(a.data={}),a.data.csrf=BAPI_csrf_token,a.data.csrf_token=BAPI_csrf_token,void 0!==BAPI_visit_id&&(a.data.visit_id=BAPI_visit_id),BAPI.ajax(a)),ajaxGetCaptchaKey:()=>BAPI.ajax({url:"//www.bilibili.com/plus/widget/ajaxGetCaptchaKey.php?js"}),exp:()=>BAPI.ajax({url:"//www.bilibili.com/plus/account/exp.php"}),msg:a=>BAPI.ajaxWithCommonArgs({method:"POST",url:"ajax/msg",data:{roomid:a}}),ajaxCapsule:()=>BAPI.ajax({url:"api/ajaxCapsule"}),player:(a,e,t="pc",i="web")=>BAPI.ajax({url:"api/player",data:{id:"string"==typeof a&&"cid:"===a.substr(0,4)?a:"cid:"+a,ts:"string"==typeof e?e:e.toString(16),platform:t,player_type:i},dataType:"text"}),create:(a,e)=>BAPI.ajax({url:"captcha/v1/Captcha/create",data:{width:a||"112",height:e||"32"},cache:!1}),topList:(a,e,t)=>BAPI.ajax({url:"guard/topList",data:{roomid:a,page:e,ruid:t}}),getSuser:()=>BAPI.ajax({url:"msg/getSuser"}),refresh:(a="all")=>BAPI.ajax({url:"index/refresh?area="+a}),get_ip_addr:()=>BAPI.ajax({url:"ip_service/v1/ip_service/get_ip_addr"}),getuserinfo:()=>BAPI.ajax({url:"user/getuserinfo"}),activity:{mobileActivity:()=>BAPI.ajax({url:"activity/v1/Common/mobileActivity"}),mobileRoomInfo:a=>BAPI.ajax({url:"activity/v1/Common/mobileRoomInfo",data:{roomid:a}}),roomInfo:(a,e,t,i)=>BAPI.ajax({url:"activity/v1/Common/roomInfo",data:{roomid:a,ruid:e,area_v2_id:t,area_v2_parent_id:i}}),welcomeInfo:(a,e)=>BAPI.ajax({url:"activity/v1/Common/welcomeInfo",data:{roomid:a,ruid:e}}),check:a=>BAPI.ajax({url:"activity/v1/Raffle/check?roomid="+a}),join:(a,e)=>BAPI.ajax({url:"activity/v1/Raffle/join",data:{roomid:a,raffleId:e}}),notice:(a,e)=>BAPI.ajax({url:"activity/v1/Raffle/notice",data:{roomid:a,raffleId:e}}),receive_award:a=>BAPI.ajaxWithCommonArgs({method:"POST",url:"activity/v1/task/receive_award",data:{task_id:a}})},av:{getTimestamp:(a="pc")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"av/v1/Time/getTimestamp",data:{platform:a}})},dynamic_svr:{dynamic_new:(a,e=8)=>BAPI.ajax({url:"dynamic_svr/v1/dynamic_svr/dynamic_new",data:{uid:a,type:e}}),space_history:(a,e,t,i)=>BAPI.ajax({url:"dynamic_svr/v1/dynamic_svr/space_history",data:{visitor_uid:a,host_uid:e,offset_dynamic_id:t,need_top:i}}),w_live_users:(a=10)=>BAPI.ajax({url:"//api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/w_live_users",data:{size:a}})},exchange:{coin2silver:a=>BAPI.ajax({method:"POST",url:"exchange/coin2silver",data:{coin:a}}),silver2coin:()=>BAPI.ajax({type:"GET",url:"exchange/silver2coin"})},fans_medal:{get_fans_medal_info:(a,e,t=1)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"fans_medal/v1/fans_medal/get_fans_medal_info",data:{source:t,uid:a,target_id:e}})},feed_svr:{notice:()=>BAPI.ajaxWithCommonArgs({method:"POST",url:"feed_svr/v1/feed_svr/notice",data:{}}),my:(a,e=0,t=0,i=0)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"feed_svr/v1/feed_svr/my",data:{live_status:e,type:t,page_size:a,offset:i}})},gift:{bag_list:()=>BAPI.ajax({url:"gift/v2/gift/bag_list"}),send:(a,e,t,i,o,r,l="silver",n="pc",d="live",s=0,m=0)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"gift/v2/gift/send",data:{uid:a,gift_id:e,ruid:t,gift_num:i,coin_type:l,bag_id:0,platform:n,biz_code:d,biz_id:o,rnd:r,storm_beat_id:s,metadata:"",price:m}}),bag_send:(a,e,t,i,o,r,l,n="pc",d="live",s=0,m=0)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"gift/v2/live/bag_send",data:{uid:a,gift_id:e,ruid:t,gift_num:i,bag_id:o,platform:n,biz_code:d,biz_id:r,rnd:l,storm_beat_id:s,metadata:"",price:m}}),gift_config:()=>BAPI.ajax({url:"gift/v3/live/gift_config"}),heart_gift_receive:(a,e)=>BAPI.ajax({url:"gift/v2/live/heart_gift_receive",data:{roomid:a,area_v2_id:e}}),heart_gift_status:(a,e)=>BAPI.ajax({url:"gift/v2/live/heart_gift_status",data:{roomid:a,area_v2_id:e}}),receive_daily_bag:()=>BAPI.ajax({url:"gift/v2/live/receive_daily_bag"}),room_gift_list:(a,e)=>BAPI.ajax({url:"gift/v2/live/room_gift_list",data:{roomid:a,area_v2_id:e}}),smalltv:{check:a=>BAPI.ajax({url:"gift/v3/smalltv/check",data:{roomid:a}}),join:(a,e,t="Gift")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"gift/v3/smalltv/join",data:{roomid:a,raffleId:e,type:t}}),notice:(a,e="small_tv")=>BAPI.ajax({url:"gift/v3/smalltv/notice",data:{type:e,raffleId:a}})}},giftBag:{getSendGift:()=>BAPI.ajax({url:"giftBag/getSendGift"}),sendDaily:()=>BAPI.ajax({url:"giftBag/sendDaily"})},home:{reward:()=>BAPI.ajax({url:"//account.bilibili.com/home/reward"})},i:{ajaxCancelWear:()=>BAPI.ajax({url:"i/ajaxCancelWear"}),ajaxGetAchieve:(a,e,t=6,i="normal",o=0,r="all")=>BAPI.ajax({url:"i/api/ajaxGetAchieve",data:{type:i,status:o,category:r,keywords:a,page:e,pageSize:t}}),ajaxGetMyMedalList:()=>BAPI.ajax({url:"i/ajaxGetMyMedalList"}),ajaxWearFansMedal:a=>BAPI.ajax({url:"i/ajaxWearFansMedal?medal_id="+a}),following:(a=1,e=9)=>BAPI.ajax({url:"i/api/following",data:{page:a,pageSize:e}}),guard:(a,e=10)=>BAPI.ajax({url:"i/api/guard",data:{page:a,pageSize:e}}),liveinfo:()=>BAPI.ajax({url:"i/api/liveinfo"}),operation:(a=1)=>BAPI.ajax({url:"i/api/operation?page="+a}),taskInfo:()=>BAPI.ajax({url:"i/api/taskInfo"})},link_group:{my_groups:()=>BAPI.ajax({url:"link_group/v1/member/my_groups"}),sign_in:(a,e)=>BAPI.ajax({url:"link_setting/v1/link_setting/sign_in",data:{group_id:a,owner_id:e}}),buy_medal:(a,e="metal",t="android")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"//api.vc.bilibili.com/link_group/v1/member/buy_medal",data:{master_uid:a,coin_type:e,platform:t}})},live:{getRoomKanBanModel:a=>BAPI.ajax({url:"live/getRoomKanBanModel?roomid"+a}),rankTab:a=>BAPI.ajax({url:"live/rankTab?roomid="+a}),roomAdList:()=>BAPI.ajax({url:"live/roomAdList"})},live_user:{get_anchor_in_room:a=>BAPI.ajax({url:"live_user/v1/UserInfo/get_anchor_in_room?roomid="+a}),get_info_in_room:a=>BAPI.ajax({url:"live_user/v1/UserInfo/get_info_in_room?roomid="+a}),get_weared_medal:(a,e,t=1)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"live_user/v1/UserInfo/get_weared_medal",data:{source:t,uid:a,target_id:e}}),governorShow:a=>BAPI.ajax({url:"live_user/v1/Master/governorShow?target_id="+a})},lottery:{box:{getRoomActivityByRoomid:a=>BAPI.ajax({url:"lottery/v1/box/getRoomActivityByRoomid?roomid="+a}),getStatus:(a,e="")=>BAPI.ajax({url:"lottery/v2/box/getStatus",data:{aid:a,times:e}}),getBoxInfo:a=>BAPI.ajax({url:"/xlive/lottery-interface/v1/goldBox/getBoxInfo",data:{aid:a}}),draw:(a,e=1)=>BAPI.ajax({url:"/xlive/lottery-interface/v2/Box/draw",data:{aid:a,number:e}}),getWinnerGroupInfo:(a,e=1)=>BAPI.ajax({url:"/xlive/lottery-interface/v2/Box/getWinnerGroupInfo",data:{aid:a,number:e}})},SilverBox:{getAward:(a,e,t)=>BAPI.ajax({url:"lottery/v1/SilverBox/getAward",data:{time_start:a,end_time:e,captcha:t}}),getCaptcha:a=>BAPI.ajax({url:"lottery/v1/SilverBox/getCaptcha?ts="+a}),getCurrentTask:()=>BAPI.ajax({url:"lottery/v1/SilverBox/getCurrentTask"})},Storm:{check:a=>BAPI.ajax({url:"lottery/v1/Storm/check?roomid="+a}),join:(a,e,t,i,o=16777215)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"lottery/v1/Storm/join",data:{id:a,color:o,captcha_token:e,captcha_phrase:t,roomid:i}}),join_ex:(a,e,t,i,o)=>{let r=TokenUtil.signQuery(KeySign.sort({id:a,access_key:t,appkey:i,actionKey:"appkey",build:5561e3,channel:"bili",device:"android",mobi_app:"android",platform:"android"}));return BAPI.ajaxWithCommonArgs({method:"POST",url:`xlive/lottery-interface/v1/storm/Join?${r}`,headers:o,roomid:e})}},lottery:{check_guard:a=>BAPI.ajax({url:"lottery/v1/Lottery/check_guard?roomid="+a}),join:(a,e,t="guard")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"lottery/v2/Lottery/join",data:{roomid:a,id:e,type:t}})}},mobile:{userOnlineHeart:()=>BAPI.ajaxWithCommonArgs({method:"POST",url:"mobile/userOnlineHeart",data:{}})},pay:{coin2silver:(a,e="pc")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"pay/v1/Exchange/coin2silver",data:{num:a,platform:e}}),getRule:(a="pc")=>BAPI.ajax({url:"pay/v1/Exchange/getRule?platform="+a}),getStatus:(a="pc")=>BAPI.ajax({url:"pay/v1/Exchange/getStatus?platform="+a}),silver2coin:(a="pc")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"pay/v1/Exchange/silver2coin",data:{platform:a}}),myWallet:(a=1,e=1,t="pc")=>BAPI.ajax({url:"pay/v2/Pay/myWallet",data:{need_bp:a,need_metal:e,platform:t}})},rankdb:{roomInfo:(a,e,t)=>BAPI.ajax({url:"rankdb/v1/Common/roomInfo",data:{ruid:a,roomid:e,areaId:t}}),getTopRealTimeHour:a=>BAPI.ajax({url:`rankdb/v1/Rank2018/getTop?type=master_realtime_hour&type_id=areaid_realtime_hour&area_id=${a}`})},relation:{getList:(a,e)=>BAPI.ajax({url:"relation/v1/feed/getList",data:{page:a,page_size:e},cache:!1}),heartBeat:()=>BAPI.ajax({url:"relation/v1/feed/heartBeat",cache:!1}),GetUserFc:a=>BAPI.ajax({url:"relation/v1/Feed/GetUserFc?follow="+a}),IsUserFollow:a=>BAPI.ajax({url:"relation/v1/Feed/IsUserFollow?follow="+a}),getFollowings:(a,e=1,t=20,i="desc",o="jsonp",r="")=>BAPI.ajax({url:"//api.bilibili.com/x/relation/followings",data:{vmid:a,pn:e,ps:t,order:i,jsonp:o,callback:r}}),get_attention_list:a=>BAPI.ajax({url:"//api.vc.bilibili.com/feed/v1/feed/get_attention_list",data:{mid:a}}),getTags:()=>BAPI.ajax({url:"//api.bilibili.com/x/relation/tags",data:{jsonp:"jsonp",callback:""}}),getUpInTag:(a,e,t=1,i=20,o="jsonp",r="")=>BAPI.ajax({url:"//api.bilibili.com/x/relation/tag",data:{mid:a,tagid:e,pn:t,ps:i,jsonp:o,callback:r}}),createTag:(a,e="jsonp")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"//api.bilibili.com/x/relation/tag/create",data:{tag:a,jsonp:e}}),getTagIDByName:a=>BAPI.ajax({url:"//api.bilibili.com/x/tag/info",data:{tag_name:a}}),delTag:(a,e="jsonp")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"//api.bilibili.com/x/relation/tag/del",data:{tagid:a,jsonp:e}}),modify:(a,e,t=11)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"//api.bilibili.com/x/relation/modify",data:{fid:a,act:e,re_src:t,jsonp:"jsonp",callback:""}}),addUsers:(a,e,t=!0)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"//api.bilibili.com/x/relation/tags/addUsers",data:{cross_domain:t,fids:a,tagids:e}}),moveUsers:(a,e,t,i="jsonp")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"//api.bilibili.com/x/relation/tags/moveUsers",data:{beforeTagids:a,afterTagids:e,fids:t,jsonp:i}})},room:{get_info:(a,e="room")=>BAPI.ajax({url:"room/v1/Room/get_info",data:{room_id:a,from:e}}),get_recommend_by_room:(a,e,t)=>BAPI.ajax({url:"room/v1/room/get_recommend_by_room",data:{room_id:a,count:e,rnd:t||Math.floor(Date.now()/1e3)}}),playUrl:(a,e="0",t="web")=>BAPI.ajax({url:"room/v1/Room/playUrl",data:{cid:a,quality:e,platform:t}}),room_entry_action:(a,e="pc")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"room/v1/Room/room_entry_action",data:{room_id:a,platform:e}}),room_init:a=>BAPI.ajax({url:"room/v1/Room/room_init?id="+a}),getConf:(a,e="pc",t="web")=>BAPI.ajax({url:"room/v1/Danmu/getConf",data:{room_id:a,platform:e,player:t}}),getList:()=>BAPI.ajax({url:"room/v1/Area/getList"}),getRoomList:(a=1,e=0,t=0,i=1,o=30,r="online",l="web",n=1)=>BAPI.ajax({url:"room/v3/area/getRoomList",data:{platform:l,parent_area_id:a,cate_id:e,area_id:t,sort_type:r,page:i,page_size:o,tag_version:n}}),update:(a,e)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"room/v1/Room/update",data:{room_id:a,description:e}}),getRoomInfoOld:a=>BAPI.ajax({url:"room/v1/Room/getRoomInfoOld",data:{mid:a}}),getRoomBaseInfo:(a,e="link-center")=>BAPI.ajax({url:"xlive/web-room/v1/index/getRoomBaseInfo",data:{room_ids:a,req_biz:e}}),verify_room_pwd:(a,e="")=>BAPI.ajax({url:"room/v1/Room/verify_room_pwd",data:{room_id:a,pwd:e}})},sign:{doSign:()=>BAPI.ajax({url:"sign/doSign"}),GetSignInfo:()=>BAPI.ajax({url:"sign/GetSignInfo"}),getLastMonthSignDays:()=>BAPI.ajax({url:"sign/getLastMonthSignDays"})},user:{getWear:a=>BAPI.ajax({url:"user/v1/user_title/getWear?uid="+a}),isBiliVip:a=>BAPI.ajax({url:"user/v1/user/isBiliVip?uid="+a}),userOnlineHeart:()=>BAPI.ajaxWithCommonArgs({method:"POST",url:"User/userOnlineHeart",data:{}}),getUserInfo:a=>BAPI.ajax({url:"User/getUserInfo?ts="+a})},x:{getUserSpace:(a,e,t,i,o,r,l)=>BAPI.ajax({url:"//api.bilibili.com/x/space/arc/search",data:{mid:a,ps:e,tid:t,pn:i,keyword:o,order:r,jsonp:l}}),getAccInfoOld:(a,e="jsonp")=>BAPI.ajax({url:"//api.bilibili.com/x/space/acc/info",data:{mid:a,jsonp:e}}),getAccInfo:(a,e="",t="web",i="1550101")=>BAPI.ajax({url:"//api.bilibili.com/x/space/wbi/acc/info",data:{mid:a,platform:t,token:e,web_location:i,wts:BAPI_ts_s(),w_rid:CryptoJS.MD5(BAPI_ts_ms()).toString()}}),getCoinInfo:(a,e,t,i)=>BAPI.ajax({url:"//api.bilibili.com/x/web-interface/archive/coins",data:{callback:a,jsonp:e,aid:t,_:i}}),getTodayExp:()=>BAPI.ajax({url:"//api.bilibili.com/x/web-interface/coin/today/exp"}),coin_add:(a,e=1,t=0)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"//api.bilibili.com/x/web-interface/coin/add",data:{aid:a,multiply:e,select_like:t,cross_domain:!0}}),share_add:a=>BAPI.ajaxWithCommonArgs({method:"POST",url:"//api.bilibili.com/x/web-interface/share/add",data:{aid:a,jsonp:"jsonp"}}),heartbeat:(a,e,t,i,o=0,r=0,l=3,n=1,d=2)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"//api.bilibili.com/x/report/web/heartbeat",data:{aid:a,cid:e,mid:t,start_ts:i||Date.now()/1e3,played_time:o,realtime:r,type:l,play_type:n,dt:d}}),now:()=>BAPI.ajax({url:"//api.bilibili.com/x/report/click/now",data:{jsonp:"jsonp"}}),card:a=>BAPI.ajax({url:"//api.bilibili.com/x/web-interface/card",data:{mid:a}}),stat:a=>BAPI.ajax({url:"//api.bilibili.com/x/relation/stat",data:{vmid:a}}),reserve:(a,e="jsonp")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"//api.bilibili.com/x/space/reserve",data:{sid:a,jsonp:e}}),get_reserve_info:a=>BAPI.ajax({url:"https://api.bilibili.com/x/activity/up/reserve/relation/info",data:{ids:a}}),elec_pay_quick:(a,e=2,t="up",i=!0,o=a)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"//api.bilibili.com/x/ugcpay/web/v2/trade/elec/pay/quick",data:{up_mid:a,bp_num:e,otype:t,is_bp_remains_prior:i,oid:o}}),activity:{getLotteryMyTimes:a=>BAPI.ajax({url:"//api.bilibili.com/x/activity/lottery/mytimes",data:{sid:a}}),doLottery:(a,e=1)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"//api.bilibili.com/x/activity/lottery/do",data:{sid:a,type:e}}),addLotteryTimes:(a,e=3)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"//api.bilibili.com/x/activity/lottery/addtimes",data:{sid:a,action_type:e}})},vip:{privilege:{my:()=>BAPI.ajax({url:"//api.bilibili.com/x/vip/privilege/my"}),receive:a=>BAPI.ajaxWithCommonArgs({method:"POST",url:"//api.bilibili.com/x/vip/privilege/receive",data:{type:a}})}}},xlive:{revenue:{silver2coin:()=>BAPI.ajaxWithCommonArgs({method:"POST",url:"xlive/revenue/v1/wallet/silver2coin"}),coin2silver:(a,e="pc")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"xlive/revenue/v1/wallet/coin2silver",data:{num:a,platform:e}})},guard:{join:(a,e,t="guard")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"xlive/lottery-interface/v3/guard/join",data:{roomid:a,id:e,type:t}})},lottery:{check:a=>BAPI.ajax({url:"xlive/lottery-interface/v1/lottery/Check",data:{roomid:a}}),getLotteryInfoWeb:a=>BAPI.ajax({url:"xlive/lottery-interface/v1/lottery/getLotteryInfoWeb",data:{roomid:a}})},smalltv:{check:a=>BAPI.ajax({url:"xlive/lottery-interface/v3/smalltv/Check",data:{roomid:a}}),join:(a,e,t="small_tv")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"xlive/lottery-interface/v5/smalltv/join",data:{roomid:a,id:e,type:t}}),notice:(a,e="small_tv")=>BAPI.ajax({url:"xlive/lottery-interface/v3/smalltv/Notice",data:{type:e,raffleId:a}})},pk:{check:a=>BAPI.ajax({url:"xlive/lottery-interface/v1/pk/check",data:{roomid:a}}),join:(a,e)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"xlive/lottery-interface/v1/pk/join",data:{roomid:a,id:e}})},dosign:()=>BAPI.ajax({url:"xlive/web-ucenter/v1/sign/DoSign"}),getDanmuInfo:(a,e=0)=>BAPI.ajax({url:"xlive/web-room/v1/index/getDanmuInfo",data:{id:a,type:e}}),getInfoByUser:a=>BAPI.ajax({url:"xlive/web-room/v1/index/getInfoByUser",data:{room_id:a}}),wearMedal:a=>BAPI.ajaxWithCommonArgs({method:"POST",url:"xlive/web-room/v1/fansMedal/wear",data:{medal_id:a}}),getHotRank:(a,e,t=0,i,o,r)=>BAPI.ajax({url:"xlive/general-interface/v1/rank/getHotRank",data:{room_id:a,ruid:e,is_pre:t,area_id:i,page_size:o,source:r}}),getInfoByRoom:a=>BAPI.ajax({url:"xlive/web-room/v1/index/getInfoByRoom",data:{room_id:a}}),roomEntryAction:(a,e="pc")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"/xlive/web-room/v1/index/roomEntryAction",data:{room_id:a,platform:e}}),trigerInteract:(a,e=3)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"/xlive/web-room/v1/index/TrigerInteract",data:{roomid:a,interact_type:e}}),likeInteract:a=>BAPI.ajaxWithCommonArgs({method:"POST",url:"/xlive/web-ucenter/v1/interact/likeInteract",data:{roomid:a,ts:BAPI_ts_s()}}),likeReportV3:(a,e)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"/xlive/app-ucenter/v1/like_info_v3/like/likeReportV3",data:{room_id:a,anchor_id:e,ts:BAPI_ts_s()}}),anchor:{check:a=>BAPI.ajax({url:"xlive/lottery-interface/v1/Anchor/Check?roomid="+a}),join:(a,e,t,i="pc")=>{var o={id:a,platform:i};return void 0!==e&&void 0!==t&&(o.gift_id=e,o.gift_num=t),BAPI.ajaxWithCommonArgs({method:"POST",url:"xlive/lottery-interface/v1/Anchor/Join",data:o})},randTime:a=>BAPI.ajax({url:"xlive/lottery-interface/v1/Anchor/RandTime?id="+a})},popularityRedPocket:{followRelation:(a,e)=>BAPI.ajax({url:"xlive/lottery-interface/v1/popularityRedPocket/FollowRelation",data:{uid:a,target_uid:e}}),draw:(a,e,t,i="444.8.red_envelope.extract",o="",r="")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"xlive/lottery-interface/v1/popularityRedPocket/RedPocketDraw",data:{ruid:a,room_id:e,lot_id:t,spm_id:i,session_id:o,jump_from:r}})},app:{medal:(a=1,e=10)=>BAPI.ajax({url:"xlive/app-ucenter/v1/user/GetMyMedals",data:{page:a,page_size:e}}),getUserTaskProgress:async(a,e=358483030)=>{let t=getAppCommonRequestJson(a);t.target_id=e;return(await BAPI.GMR({url:"xlive/app-ucenter/v1/userTask/GetUserTaskProgress",query:t,headers:getAppHeaders(e)})).response},userTaskReceiveRewards:async(a,e=358483030)=>{let t=getAppCommonRequestJson(a);t.target_id=e;return(await BAPI.GMR({method:"POST",url:"xlive/app-ucenter/v1/userTask/UserTaskReceiveRewards",data:t,headers:getAppHeaders(e)})).response},sendmsg:async(a,e,t,i)=>{const o=getAppCommonRequestJson(a);return(await BAPI.GMR({method:"POST",url:"xlive/app-room/v1/dM/sendmsg",query:o,data:{bubble:0,live_status:"live",cid:t,mid:i,msg:e,rnd:-Math.round(1e10*Math.random()),mode:1,pool:0,type:"json",av_id:"-99998",color:16777215,fontsize:25,bussiness_extend:'{"broadcast_type":"0","stream_scale":"2","watch_ui_type":"2"}',flow_extend:'{"position":"1","s_position":"1","slide_direction":"-99998"}',jumpfrom_extend:"-99998",screen_status:2,dm_type:0,playTime:"0.0"},headers:getAppHeaders(i)})).response}}},YearWelfare:{checkFirstCharge:()=>BAPI.ajax({url:"YearWelfare/checkFirstCharge"}),inviteUserList:()=>BAPI.ajax({url:"YearWelfare/inviteUserList/1"})},sendLiveDanmu:(a,e,t="16777215",i="25",o="1",r="0")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"msg/send",data:{color:t,fontsize:i,mode:o,msg:a,rnd:BAPI_ts_s(),roomid:e,bubble:r}}),sendMsg:(a,e=0,t="web")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"//api.vc.bilibili.com/web_im/v1/web_im/send_msg ",data:{"msg[sender_uid]":a.sender_uid,"msg[receiver_id]":a.receiver_id,"msg[receiver_type]":a.receiver_type||1,"msg[msg_type]":a.msg_type||1,"msg[msg_status]":a.msg_status||0,"msg[content]":a.content,"msg[timestamp]":BAPI_ts_s(),"msg[dev_id]":a.dev_id,build:e,mobi_app:t}}),getCookie:a=>{let e,t=document.cookie.split(";");for(var i=0;inew Promise((e=>{"object"!=typeof a.data||a.data instanceof FormData||a.data instanceof Blob||(a.data=new URLSearchParams(a.data).toString()),"object"==typeof a.query&&(a.url=a.url.concat("?",new URLSearchParams(a.query).toString())),a.url=("//"===a.url.substr(0,2)||"http"===a.url.substr(0,4)?"":"https://api.live.bilibili.com/")+a.url,a.method=a.method||"GET",a.responseType=a.responseType||"json",a._ontimeout=a.ontimeout??function(){},a._onerror=a.onerror??function(){},a._onload=a.onload??function(){},a.ontimeout=function(e){a._ontimeout(e),a.onerror(e)},a.onerror=function(t){a._onerror(t),console.error("XHR出错",a,t),e(void 0)},a.onload=function(t){a._onload(t),200===t.status?e(t):e({code:t.status,message:statusText})},GM_xmlhttpRequest(a)}))}; \ No newline at end of file +let BAPI_csrf_token,BAPI_visit_id,BAPI_ts_ms=()=>Date.now(),BAPI_WBI_SIGN=()=>new Promise(((a,e)=>{BAPI.x.getWbiSign().then((i=>{if(console.log(i),0===i.code){const{img_url:e,sub_url:t}=i.data.wbi_img,o={img_key:e.substring(e.lastIndexOf("/")+1,e.length).split(".")[0],sub_key:t.substring(t.lastIndexOf("/")+1,t.length).split(".")[0]};a(o)}else e(i.message)})).catch((a=>e(a)))}));BAPI_ts_s=()=>Math.round(BAPI_ts_ms()/1e3),getAppCommonRequestJson=a=>({access_key:a,actionKey:"appkey",appkey:"1d8b6e7d45233436",build:"6720300",c_locale:"zh_CN",channel:"bili",device:"android",disable_rcmd:0,mobi_app:"android",platform:"android",s_locale:"zh_CN",statistics:'{"appId":1,"platform":3,"version":"7.3.0","abtest":""}',sign:BilibiliToken.md5(Math.random().toString()),ts:BAPI_ts_s()}),getAppHeaders=a=>{const e=BilibiliToken.md5(Math.random().toString()),i=BilibiliToken.md5(Math.random().toString()),t=e+i;return{buvid:BilibiliToken.buvidXX,fp_local:t,fp_remote:t,session_id:e.substring(0,8),env:"prod","app-key":"android64","user-agent":"Mozilla/5.0 BiliDroid/6.72.0 (bbcallen@gmail.com) os/android model/XQ-CT72 mobi_app/android build/6720300 channel/bilih5 innerVer/6720310 osVer/12 network/2","x-bili-trace-id":e.concat(":",i.substring(0,16),":0:0"),"x-bili-aurora-eid":"VFwJQVkEBFYH","x-bili-mid":a,"x-bili-aurora-zone":"","content-type":"application/x-www-form-urlencoded; charset=utf-8","accept-encoding":"gzip"}};var BAPI={setCommonArgs:(a="",e="")=>{BAPI_csrf_token=a,BAPI_visit_id=e},TreasureBox:{getAward:(a,e,i)=>BAPI.lottery.SilverBox.getAward(a,e,i),getCaptcha:a=>BAPI.lottery.SilverBox.getCaptcha(a),getCurrentTask:()=>BAPI.lottery.SilverBox.getCurrentTask()},Exchange:{coin2silver:(a,e)=>BAPI.pay.coin2silver(a,e),silver2coin:a=>BAPI.pay.silver2coin(a),old:{coin2silver:a=>BAPI.exchange.coin2silver(a),silver2coin:()=>BAPI.exchange.silver2coin()}},Lottery:{Gift:{check:a=>BAPI.xlive.smalltv.check(a),join:(a,e,i)=>BAPI.xlive.smalltv.join(a,e,i),notice:(a,e)=>BAPI.xlive.smalltv.notice(a,e)},Raffle:{check:a=>BAPI.activity.check(a),join:(a,e)=>BAPI.activity.join(a,e),notice:(a,e)=>BAPI.activity.notice(a,e)},MaterialObject:{getRoomActivityByRoomid:a=>BAPI.lottery.box.getRoomActivityByRoomid(a),getStatus:(a,e)=>BAPI.lottery.box.getStatus(a,e),check:a=>BAPI.lottery.box.getBoxInfo(a),draw:(a,e)=>BAPI.lottery.box.draw(a,e),getWinnerGroupInfo:(a,e)=>BAPI.lottery.box.getWinnerGroupInfo(a,e)},Guard:{check:a=>BAPI.lottery.lottery.check_guard(a),join:(a,e,i)=>BAPI.xlive.guard.join(a,e,i)},Pk:{check:a=>BAPI.xlive.pk.check(a),join:(a,e)=>BAPI.xlive.pk.join(a,e)}},Group:{my_groups:()=>BAPI.link_group.my_groups(),sign_in:(a,e)=>BAPI.link_group.sign_in(a,e)},Storm:{check:a=>BAPI.lottery.Storm.check(a),join:(a,e,i,t,o)=>BAPI.lottery.Storm.join(a,e,i,t,o),join_ex:(a,e,i,t,o,r="",l="",n=16777215)=>BAPI.lottery.Storm.join_ex(a,e,i,t,o,"","",16777215)},HeartBeat:{web:()=>BAPI.user.userOnlineHeart(),mobile:()=>BAPI.mobile.userOnlineHeart()},DailyReward:{task:()=>BAPI.home.reward(),exp:()=>BAPI.exp(),login:()=>BAPI.x.now(),watch:(a,e,i,t,o,r,l,n,d)=>BAPI.x.heartbeat(a,e,i,t,o,r,l,n,d),coin:(a,e)=>BAPI.x.coin_add(a,e),share:a=>BAPI.x.share_add(a)},ajax:a=>{void 0===a.xhrFields&&(a.xhrFields={}),a.xhrFields.withCredentials=!0,jQuery.extend(a,{url:("//"===a.url.substr(0,2)||"http"===a.url.substr(0,4)?"":"//api.live.bilibili.com/")+a.url,method:a.method||"GET",crossDomain:!0,dataType:a.dataType||"json"});const e=jQuery.Deferred();return jQuery.ajax(a).then(((...a)=>{e.resolve(...a)})).catch((a=>{a.responseJSON?a.responseJSON.msg=a.responseJSON.message:0!==a.status?a.responseJSON={code:a.status,message:`状态码: ${a.status}`,msg:`状态码: ${a.status}`}:a.responseJSON={code:"NET_ERR",msg:"请检查网络",message:"请检查网络"},a.responseJSON.netError=!0,e.resolve(a.responseJSON)})),e},ajaxWithCommonArgs:a=>(a.data||(a.data={}),a.data.csrf=BAPI_csrf_token,a.data.csrf_token=BAPI_csrf_token,void 0!==BAPI_visit_id&&(a.data.visit_id=BAPI_visit_id),BAPI.ajax(a)),ajaxGetCaptchaKey:()=>BAPI.ajax({url:"//www.bilibili.com/plus/widget/ajaxGetCaptchaKey.php?js"}),exp:()=>BAPI.ajax({url:"//www.bilibili.com/plus/account/exp.php"}),msg:a=>BAPI.ajaxWithCommonArgs({method:"POST",url:"ajax/msg",data:{roomid:a}}),ajaxCapsule:()=>BAPI.ajax({url:"api/ajaxCapsule"}),player:(a,e,i="pc",t="web")=>BAPI.ajax({url:"api/player",data:{id:"string"==typeof a&&"cid:"===a.substr(0,4)?a:"cid:"+a,ts:"string"==typeof e?e:e.toString(16),platform:i,player_type:t},dataType:"text"}),create:(a,e)=>BAPI.ajax({url:"captcha/v1/Captcha/create",data:{width:a||"112",height:e||"32"},cache:!1}),topList:(a,e,i)=>BAPI.ajax({url:"guard/topList",data:{roomid:a,page:e,ruid:i}}),getSuser:()=>BAPI.ajax({url:"msg/getSuser"}),refresh:(a="all")=>BAPI.ajax({url:"index/refresh?area="+a}),get_ip_addr:()=>BAPI.ajax({url:"ip_service/v1/ip_service/get_ip_addr"}),getuserinfo:()=>BAPI.ajax({url:"user/getuserinfo"}),activity:{mobileActivity:()=>BAPI.ajax({url:"activity/v1/Common/mobileActivity"}),mobileRoomInfo:a=>BAPI.ajax({url:"activity/v1/Common/mobileRoomInfo",data:{roomid:a}}),roomInfo:(a,e,i,t)=>BAPI.ajax({url:"activity/v1/Common/roomInfo",data:{roomid:a,ruid:e,area_v2_id:i,area_v2_parent_id:t}}),welcomeInfo:(a,e)=>BAPI.ajax({url:"activity/v1/Common/welcomeInfo",data:{roomid:a,ruid:e}}),check:a=>BAPI.ajax({url:"activity/v1/Raffle/check?roomid="+a}),join:(a,e)=>BAPI.ajax({url:"activity/v1/Raffle/join",data:{roomid:a,raffleId:e}}),notice:(a,e)=>BAPI.ajax({url:"activity/v1/Raffle/notice",data:{roomid:a,raffleId:e}}),receive_award:a=>BAPI.ajaxWithCommonArgs({method:"POST",url:"activity/v1/task/receive_award",data:{task_id:a}})},av:{getTimestamp:(a="pc")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"av/v1/Time/getTimestamp",data:{platform:a}})},dynamic_svr:{dynamic_new:(a,e=8)=>BAPI.ajax({url:"dynamic_svr/v1/dynamic_svr/dynamic_new",data:{uid:a,type:e}}),space_history:(a,e,i,t)=>BAPI.ajax({url:"dynamic_svr/v1/dynamic_svr/space_history",data:{visitor_uid:a,host_uid:e,offset_dynamic_id:i,need_top:t}}),w_live_users:(a=10)=>BAPI.ajax({url:"//api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/w_live_users",data:{size:a}})},exchange:{coin2silver:a=>BAPI.ajax({method:"POST",url:"exchange/coin2silver",data:{coin:a}}),silver2coin:()=>BAPI.ajax({type:"GET",url:"exchange/silver2coin"})},fans_medal:{get_fans_medal_info:(a,e,i=1)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"fans_medal/v1/fans_medal/get_fans_medal_info",data:{source:i,uid:a,target_id:e}})},feed_svr:{notice:()=>BAPI.ajaxWithCommonArgs({method:"POST",url:"feed_svr/v1/feed_svr/notice",data:{}}),my:(a,e=0,i=0,t=0)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"feed_svr/v1/feed_svr/my",data:{live_status:e,type:i,page_size:a,offset:t}})},gift:{bag_list:()=>BAPI.ajax({url:"gift/v2/gift/bag_list"}),send:(a,e,i,t,o,r,l="silver",n="pc",d="live",s=0,m=0)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"gift/v2/gift/send",data:{uid:a,gift_id:e,ruid:i,gift_num:t,coin_type:l,bag_id:0,platform:n,biz_code:d,biz_id:o,rnd:r,storm_beat_id:s,metadata:"",price:m}}),bag_send:(a,e,i,t,o,r,l,n="pc",d="live",s=0,m=0)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"gift/v2/live/bag_send",data:{uid:a,gift_id:e,ruid:i,gift_num:t,bag_id:o,platform:n,biz_code:d,biz_id:r,rnd:l,storm_beat_id:s,metadata:"",price:m}}),gift_config:()=>BAPI.ajax({url:"gift/v3/live/gift_config"}),heart_gift_receive:(a,e)=>BAPI.ajax({url:"gift/v2/live/heart_gift_receive",data:{roomid:a,area_v2_id:e}}),heart_gift_status:(a,e)=>BAPI.ajax({url:"gift/v2/live/heart_gift_status",data:{roomid:a,area_v2_id:e}}),receive_daily_bag:()=>BAPI.ajax({url:"gift/v2/live/receive_daily_bag"}),room_gift_list:(a,e)=>BAPI.ajax({url:"gift/v2/live/room_gift_list",data:{roomid:a,area_v2_id:e}}),smalltv:{check:a=>BAPI.ajax({url:"gift/v3/smalltv/check",data:{roomid:a}}),join:(a,e,i="Gift")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"gift/v3/smalltv/join",data:{roomid:a,raffleId:e,type:i}}),notice:(a,e="small_tv")=>BAPI.ajax({url:"gift/v3/smalltv/notice",data:{type:e,raffleId:a}})}},giftBag:{getSendGift:()=>BAPI.ajax({url:"giftBag/getSendGift"}),sendDaily:()=>BAPI.ajax({url:"giftBag/sendDaily"})},home:{reward:()=>BAPI.ajax({url:"//account.bilibili.com/home/reward"})},i:{ajaxCancelWear:()=>BAPI.ajax({url:"i/ajaxCancelWear"}),ajaxGetAchieve:(a,e,i=6,t="normal",o=0,r="all")=>BAPI.ajax({url:"i/api/ajaxGetAchieve",data:{type:t,status:o,category:r,keywords:a,page:e,pageSize:i}}),ajaxGetMyMedalList:()=>BAPI.ajax({url:"i/ajaxGetMyMedalList"}),ajaxWearFansMedal:a=>BAPI.ajax({url:"i/ajaxWearFansMedal?medal_id="+a}),following:(a=1,e=9)=>BAPI.ajax({url:"i/api/following",data:{page:a,pageSize:e}}),guard:(a,e=10)=>BAPI.ajax({url:"i/api/guard",data:{page:a,pageSize:e}}),liveinfo:()=>BAPI.ajax({url:"i/api/liveinfo"}),operation:(a=1)=>BAPI.ajax({url:"i/api/operation?page="+a}),taskInfo:()=>BAPI.ajax({url:"i/api/taskInfo"})},link_group:{my_groups:()=>BAPI.ajax({url:"link_group/v1/member/my_groups"}),sign_in:(a,e)=>BAPI.ajax({url:"link_setting/v1/link_setting/sign_in",data:{group_id:a,owner_id:e}}),buy_medal:(a,e="metal",i="android")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"//api.vc.bilibili.com/link_group/v1/member/buy_medal",data:{master_uid:a,coin_type:e,platform:i}})},live:{getRoomKanBanModel:a=>BAPI.ajax({url:"live/getRoomKanBanModel?roomid"+a}),rankTab:a=>BAPI.ajax({url:"live/rankTab?roomid="+a}),roomAdList:()=>BAPI.ajax({url:"live/roomAdList"})},live_user:{get_anchor_in_room:a=>BAPI.ajax({url:"live_user/v1/UserInfo/get_anchor_in_room?roomid="+a}),get_info_in_room:a=>BAPI.ajax({url:"live_user/v1/UserInfo/get_info_in_room?roomid="+a}),get_weared_medal:(a,e,i=1)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"live_user/v1/UserInfo/get_weared_medal",data:{source:i,uid:a,target_id:e}}),governorShow:a=>BAPI.ajax({url:"live_user/v1/Master/governorShow?target_id="+a})},lottery:{box:{getRoomActivityByRoomid:a=>BAPI.ajax({url:"lottery/v1/box/getRoomActivityByRoomid?roomid="+a}),getStatus:(a,e="")=>BAPI.ajax({url:"lottery/v2/box/getStatus",data:{aid:a,times:e}}),getBoxInfo:a=>BAPI.ajax({url:"/xlive/lottery-interface/v1/goldBox/getBoxInfo",data:{aid:a}}),draw:(a,e=1)=>BAPI.ajax({url:"/xlive/lottery-interface/v2/Box/draw",data:{aid:a,number:e}}),getWinnerGroupInfo:(a,e=1)=>BAPI.ajax({url:"/xlive/lottery-interface/v2/Box/getWinnerGroupInfo",data:{aid:a,number:e}})},SilverBox:{getAward:(a,e,i)=>BAPI.ajax({url:"lottery/v1/SilverBox/getAward",data:{time_start:a,end_time:e,captcha:i}}),getCaptcha:a=>BAPI.ajax({url:"lottery/v1/SilverBox/getCaptcha?ts="+a}),getCurrentTask:()=>BAPI.ajax({url:"lottery/v1/SilverBox/getCurrentTask"})},Storm:{check:a=>BAPI.ajax({url:"lottery/v1/Storm/check?roomid="+a}),join:(a,e,i,t,o=16777215)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"lottery/v1/Storm/join",data:{id:a,color:o,captcha_token:e,captcha_phrase:i,roomid:t}}),join_ex:(a,e,i,t,o)=>{let r=TokenUtil.signQuery(KeySign.sort({id:a,access_key:i,appkey:t,actionKey:"appkey",build:5561e3,channel:"bili",device:"android",mobi_app:"android",platform:"android"}));return BAPI.ajaxWithCommonArgs({method:"POST",url:`xlive/lottery-interface/v1/storm/Join?${r}`,headers:o,roomid:e})}},lottery:{check_guard:a=>BAPI.ajax({url:"lottery/v1/Lottery/check_guard?roomid="+a}),join:(a,e,i="guard")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"lottery/v2/Lottery/join",data:{roomid:a,id:e,type:i}})}},mobile:{userOnlineHeart:()=>BAPI.ajaxWithCommonArgs({method:"POST",url:"mobile/userOnlineHeart",data:{}})},pay:{coin2silver:(a,e="pc")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"pay/v1/Exchange/coin2silver",data:{num:a,platform:e}}),getRule:(a="pc")=>BAPI.ajax({url:"pay/v1/Exchange/getRule?platform="+a}),getStatus:(a="pc")=>BAPI.ajax({url:"pay/v1/Exchange/getStatus?platform="+a}),silver2coin:(a="pc")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"pay/v1/Exchange/silver2coin",data:{platform:a}}),myWallet:(a=1,e=1,i="pc")=>BAPI.ajax({url:"pay/v2/Pay/myWallet",data:{need_bp:a,need_metal:e,platform:i}})},rankdb:{roomInfo:(a,e,i)=>BAPI.ajax({url:"rankdb/v1/Common/roomInfo",data:{ruid:a,roomid:e,areaId:i}}),getTopRealTimeHour:a=>BAPI.ajax({url:`rankdb/v1/Rank2018/getTop?type=master_realtime_hour&type_id=areaid_realtime_hour&area_id=${a}`})},relation:{getList:(a,e)=>BAPI.ajax({url:"relation/v1/feed/getList",data:{page:a,page_size:e},cache:!1}),heartBeat:()=>BAPI.ajax({url:"relation/v1/feed/heartBeat",cache:!1}),GetUserFc:a=>BAPI.ajax({url:"relation/v1/Feed/GetUserFc?follow="+a}),IsUserFollow:a=>BAPI.ajax({url:"relation/v1/Feed/IsUserFollow?follow="+a}),getFollowings:(a,e=1,i=20,t="desc",o="jsonp",r="")=>BAPI.ajax({url:"//api.bilibili.com/x/relation/followings",data:{vmid:a,pn:e,ps:i,order:t,jsonp:o,callback:r}}),get_attention_list:a=>BAPI.ajax({url:"//api.vc.bilibili.com/feed/v1/feed/get_attention_list",data:{mid:a}}),getTags:()=>BAPI.ajax({url:"//api.bilibili.com/x/relation/tags",data:{jsonp:"jsonp",callback:""}}),getUpInTag:(a,e,i=1,t=20,o="jsonp",r="")=>BAPI.ajax({url:"//api.bilibili.com/x/relation/tag",data:{mid:a,tagid:e,pn:i,ps:t,jsonp:o,callback:r}}),createTag:(a,e="jsonp")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"//api.bilibili.com/x/relation/tag/create",data:{tag:a,jsonp:e}}),getTagIDByName:a=>BAPI.ajax({url:"//api.bilibili.com/x/tag/info",data:{tag_name:a}}),delTag:(a,e="jsonp")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"//api.bilibili.com/x/relation/tag/del",data:{tagid:a,jsonp:e}}),modify:(a,e,i=11)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"//api.bilibili.com/x/relation/modify",data:{fid:a,act:e,re_src:i,jsonp:"jsonp",callback:""}}),addUsers:(a,e,i=!0)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"//api.bilibili.com/x/relation/tags/addUsers",data:{cross_domain:i,fids:a,tagids:e}}),moveUsers:(a,e,i,t="jsonp")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"//api.bilibili.com/x/relation/tags/moveUsers",data:{beforeTagids:a,afterTagids:e,fids:i,jsonp:t}})},room:{get_info:(a,e="room")=>BAPI.ajax({url:"room/v1/Room/get_info",data:{room_id:a,from:e}}),get_recommend_by_room:(a,e,i)=>BAPI.ajax({url:"room/v1/room/get_recommend_by_room",data:{room_id:a,count:e,rnd:i||Math.floor(Date.now()/1e3)}}),playUrl:(a,e="0",i="web")=>BAPI.ajax({url:"room/v1/Room/playUrl",data:{cid:a,quality:e,platform:i}}),room_entry_action:(a,e="pc")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"room/v1/Room/room_entry_action",data:{room_id:a,platform:e}}),room_init:a=>BAPI.ajax({url:"room/v1/Room/room_init?id="+a}),getConf:(a,e="pc",i="web")=>BAPI.ajax({url:"room/v1/Danmu/getConf",data:{room_id:a,platform:e,player:i}}),getList:()=>BAPI.ajax({url:"room/v1/Area/getList"}),getRoomList:(a=1,e=0,i=0,t=1,o=30,r="online",l="web",n=1)=>BAPI.ajax({url:"room/v3/area/getRoomList",data:{platform:l,parent_area_id:a,cate_id:e,area_id:i,sort_type:r,page:t,page_size:o,tag_version:n}}),update:(a,e)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"room/v1/Room/update",data:{room_id:a,description:e}}),getRoomInfoOld:a=>BAPI.ajax({url:"room/v1/Room/getRoomInfoOld",data:{mid:a}}),getRoomBaseInfo:(a,e="link-center")=>BAPI.ajax({url:"xlive/web-room/v1/index/getRoomBaseInfo",data:{room_ids:a,req_biz:e}}),verify_room_pwd:(a,e="")=>BAPI.ajax({url:"room/v1/Room/verify_room_pwd",data:{room_id:a,pwd:e}})},sign:{doSign:()=>BAPI.ajax({url:"sign/doSign"}),GetSignInfo:()=>BAPI.ajax({url:"sign/GetSignInfo"}),getLastMonthSignDays:()=>BAPI.ajax({url:"sign/getLastMonthSignDays"})},user:{getWear:a=>BAPI.ajax({url:"user/v1/user_title/getWear?uid="+a}),isBiliVip:a=>BAPI.ajax({url:"user/v1/user/isBiliVip?uid="+a}),userOnlineHeart:()=>BAPI.ajaxWithCommonArgs({method:"POST",url:"User/userOnlineHeart",data:{}}),getUserInfo:a=>BAPI.ajax({url:"User/getUserInfo?ts="+a})},x:{getWbiSign:()=>BAPI.ajax({url:"//api.bilibili.com/x/web-interface/nav",method:"get",responseType:"json"}),getUserSpace:(a,e,i,t,o,r,l)=>BAPI.ajax({url:"//api.bilibili.com/x/space/arc/search",data:{mid:a,ps:e,tid:i,pn:t,keyword:o,order:r,jsonp:l}}),getAccInfoOld:(a,e="jsonp")=>BAPI.ajax({url:"//api.bilibili.com/x/space/acc/info",data:{mid:a,jsonp:e}}),getAccInfo:(a,e="",i="web",t="1550101")=>new Promise(((o,r)=>{BAPI_WBI_SIGN().then((r=>{BAPI.ajax({url:"//api.bilibili.com/x/space/wbi/acc/info?"+encWbi({mid:a,platform:i,token:e,web_location:t,wts:BAPI_ts_s()},r.img_key,r.sub_key)}).then((a=>o(a)))}))})),getCoinInfo:(a,e,i,t)=>BAPI.ajax({url:"//api.bilibili.com/x/web-interface/archive/coins",data:{callback:a,jsonp:e,aid:i,_:t}}),getTodayExp:()=>BAPI.ajax({url:"//api.bilibili.com/x/web-interface/coin/today/exp"}),coin_add:(a,e=1,i=0)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"//api.bilibili.com/x/web-interface/coin/add",data:{aid:a,multiply:e,select_like:i,cross_domain:!0}}),share_add:a=>BAPI.ajaxWithCommonArgs({method:"POST",url:"//api.bilibili.com/x/web-interface/share/add",data:{aid:a,jsonp:"jsonp"}}),heartbeat:(a,e,i,t,o=0,r=0,l=3,n=1,d=2)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"//api.bilibili.com/x/report/web/heartbeat",data:{aid:a,cid:e,mid:i,start_ts:t||Date.now()/1e3,played_time:o,realtime:r,type:l,play_type:n,dt:d}}),now:()=>BAPI.ajax({url:"//api.bilibili.com/x/report/click/now",data:{jsonp:"jsonp"}}),card:a=>BAPI.ajax({url:"//api.bilibili.com/x/web-interface/card",data:{mid:a}}),stat:a=>BAPI.ajax({url:"//api.bilibili.com/x/relation/stat",data:{vmid:a}}),reserve:(a,e="jsonp")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"//api.bilibili.com/x/space/reserve",data:{sid:a,jsonp:e}}),get_reserve_info:a=>BAPI.ajax({url:"https://api.bilibili.com/x/activity/up/reserve/relation/info",data:{ids:a}}),elec_pay_quick:(a,e=2,i="up",t=!0,o=a)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"//api.bilibili.com/x/ugcpay/web/v2/trade/elec/pay/quick",data:{up_mid:a,bp_num:e,otype:i,is_bp_remains_prior:t,oid:o}}),activity:{getLotteryMyTimes:a=>BAPI.ajax({url:"//api.bilibili.com/x/activity/lottery/mytimes",data:{sid:a}}),doLottery:(a,e=1)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"//api.bilibili.com/x/activity/lottery/do",data:{sid:a,type:e}}),addLotteryTimes:(a,e=3)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"//api.bilibili.com/x/activity/lottery/addtimes",data:{sid:a,action_type:e}})},vip:{privilege:{my:()=>BAPI.ajax({url:"//api.bilibili.com/x/vip/privilege/my"}),receive:a=>BAPI.ajaxWithCommonArgs({method:"POST",url:"//api.bilibili.com/x/vip/privilege/receive",data:{type:a}})}}},xlive:{revenue:{silver2coin:()=>BAPI.ajaxWithCommonArgs({method:"POST",url:"xlive/revenue/v1/wallet/silver2coin"}),coin2silver:(a,e="pc")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"xlive/revenue/v1/wallet/coin2silver",data:{num:a,platform:e}})},guard:{join:(a,e,i="guard")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"xlive/lottery-interface/v3/guard/join",data:{roomid:a,id:e,type:i}})},lottery:{check:a=>BAPI.ajax({url:"xlive/lottery-interface/v1/lottery/Check",data:{roomid:a}}),getLotteryInfoWeb:a=>BAPI.ajax({url:"xlive/lottery-interface/v1/lottery/getLotteryInfoWeb",data:{roomid:a}})},smalltv:{check:a=>BAPI.ajax({url:"xlive/lottery-interface/v3/smalltv/Check",data:{roomid:a}}),join:(a,e,i="small_tv")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"xlive/lottery-interface/v5/smalltv/join",data:{roomid:a,id:e,type:i}}),notice:(a,e="small_tv")=>BAPI.ajax({url:"xlive/lottery-interface/v3/smalltv/Notice",data:{type:e,raffleId:a}})},pk:{check:a=>BAPI.ajax({url:"xlive/lottery-interface/v1/pk/check",data:{roomid:a}}),join:(a,e)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"xlive/lottery-interface/v1/pk/join",data:{roomid:a,id:e}})},dosign:()=>BAPI.ajax({url:"xlive/web-ucenter/v1/sign/DoSign"}),getDanmuInfo:(a,e=0)=>BAPI.ajax({url:"xlive/web-room/v1/index/getDanmuInfo",data:{id:a,type:e}}),getInfoByUser:a=>BAPI.ajax({url:"xlive/web-room/v1/index/getInfoByUser",data:{room_id:a}}),wearMedal:a=>BAPI.ajaxWithCommonArgs({method:"POST",url:"xlive/web-room/v1/fansMedal/wear",data:{medal_id:a}}),getHotRank:(a,e,i=0,t,o,r)=>BAPI.ajax({url:"xlive/general-interface/v1/rank/getHotRank",data:{room_id:a,ruid:e,is_pre:i,area_id:t,page_size:o,source:r}}),getInfoByRoom:a=>BAPI.ajax({url:"xlive/web-room/v1/index/getInfoByRoom",data:{room_id:a}}),roomEntryAction:(a,e="pc")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"/xlive/web-room/v1/index/roomEntryAction",data:{room_id:a,platform:e}}),trigerInteract:(a,e=3)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"/xlive/web-room/v1/index/TrigerInteract",data:{roomid:a,interact_type:e}}),likeInteract:a=>BAPI.ajaxWithCommonArgs({method:"POST",url:"/xlive/web-ucenter/v1/interact/likeInteract",data:{roomid:a,ts:BAPI_ts_s()}}),likeReportV3:(a,e)=>BAPI.ajaxWithCommonArgs({method:"POST",url:"/xlive/app-ucenter/v1/like_info_v3/like/likeReportV3",data:{room_id:a,anchor_id:e,ts:BAPI_ts_s()}}),anchor:{check:a=>BAPI.ajax({url:"xlive/lottery-interface/v1/Anchor/Check?roomid="+a}),join:(a,e,i,t="pc")=>{var o={id:a,platform:t};return void 0!==e&&void 0!==i&&(o.gift_id=e,o.gift_num=i),BAPI.ajaxWithCommonArgs({method:"POST",url:"xlive/lottery-interface/v1/Anchor/Join",data:o})},randTime:a=>BAPI.ajax({url:"xlive/lottery-interface/v1/Anchor/RandTime?id="+a})},popularityRedPocket:{followRelation:(a,e)=>BAPI.ajax({url:"xlive/lottery-interface/v1/popularityRedPocket/FollowRelation",data:{uid:a,target_uid:e}}),draw:(a,e,i,t="444.8.red_envelope.extract",o="",r="")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"xlive/lottery-interface/v1/popularityRedPocket/RedPocketDraw",data:{ruid:a,room_id:e,lot_id:i,spm_id:t,session_id:o,jump_from:r}})},app:{medal:(a=1,e=10)=>BAPI.ajax({url:"xlive/app-ucenter/v1/user/GetMyMedals",data:{page:a,page_size:e}}),getUserTaskProgress:async(a,e=358483030)=>{let i=getAppCommonRequestJson(a);i.target_id=e;return(await BAPI.GMR({url:"xlive/app-ucenter/v1/userTask/GetUserTaskProgress",query:i,headers:getAppHeaders(e)})).response},userTaskReceiveRewards:async(a,e=358483030)=>{let i=getAppCommonRequestJson(a);i.target_id=e;return(await BAPI.GMR({method:"POST",url:"xlive/app-ucenter/v1/userTask/UserTaskReceiveRewards",data:i,headers:getAppHeaders(e)})).response},sendmsg:async(a,e,i,t)=>{const o=getAppCommonRequestJson(a);return(await BAPI.GMR({method:"POST",url:"xlive/app-room/v1/dM/sendmsg",query:o,data:{bubble:0,live_status:"live",cid:i,mid:t,msg:e,rnd:-Math.round(1e10*Math.random()),mode:1,pool:0,type:"json",av_id:"-99998",color:16777215,fontsize:25,bussiness_extend:'{"broadcast_type":"0","stream_scale":"2","watch_ui_type":"2"}',flow_extend:'{"position":"1","s_position":"1","slide_direction":"-99998"}',jumpfrom_extend:"-99998",screen_status:2,dm_type:0,playTime:"0.0"},headers:getAppHeaders(t)})).response}}},YearWelfare:{checkFirstCharge:()=>BAPI.ajax({url:"YearWelfare/checkFirstCharge"}),inviteUserList:()=>BAPI.ajax({url:"YearWelfare/inviteUserList/1"})},sendLiveDanmu:(a,e,i="16777215",t="25",o="1",r="0")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"msg/send",data:{color:i,fontsize:t,mode:o,msg:a,rnd:BAPI_ts_s(),roomid:e,bubble:r}}),sendMsg:(a,e=0,i="web")=>BAPI.ajaxWithCommonArgs({method:"POST",url:"//api.vc.bilibili.com/web_im/v1/web_im/send_msg ",data:{"msg[sender_uid]":a.sender_uid,"msg[receiver_id]":a.receiver_id,"msg[receiver_type]":a.receiver_type||1,"msg[msg_type]":a.msg_type||1,"msg[msg_status]":a.msg_status||0,"msg[content]":a.content,"msg[timestamp]":BAPI_ts_s(),"msg[dev_id]":a.dev_id,build:e,mobi_app:i}}),getCookie:a=>{let e,i=document.cookie.split(";");for(var t=0;tnew Promise((e=>{"object"!=typeof a.data||a.data instanceof FormData||a.data instanceof Blob||(a.data=new URLSearchParams(a.data).toString()),"object"==typeof a.query&&(a.url=a.url.concat("?",new URLSearchParams(a.query).toString())),a.url=("//"===a.url.substr(0,2)||"http"===a.url.substr(0,4)?"":"https://api.live.bilibili.com/")+a.url,a.method=a.method||"GET",a.responseType=a.responseType||"json",a._ontimeout=a.ontimeout??function(){},a._onerror=a.onerror??function(){},a._onload=a.onload??function(){},a.ontimeout=function(e){a._ontimeout(e),a.onerror(e)},a.onerror=function(i){a._onerror(i),console.error("XHR出错",a,i),e(void 0)},a.onload=function(i){a._onload(i),200===i.status?e(i):e({code:i.status,message:statusText})},GM_xmlhttpRequest(a)}))}; \ No newline at end of file diff --git a/assets/js/library/libWbiSign.js b/assets/js/library/libWbiSign.js new file mode 100644 index 00000000..25ab327b --- /dev/null +++ b/assets/js/library/libWbiSign.js @@ -0,0 +1,37 @@ +// https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/docs/misc/sign/wbi.md +const mixinKeyEncTab = [ + 46, 47, 18, 2, 53, 8, 23, 32, 15, 50, 10, 31, 58, 3, 45, 35, 27, 43, 5, 49, + 33, 9, 42, 19, 29, 28, 14, 39, 12, 38, 41, 13, 37, 48, 7, 16, 24, 55, 40, + 61, 26, 17, 0, 1, 60, 51, 30, 4, 22, 25, 54, 21, 56, 59, 6, 63, 57, 62, 11, + 36, 20, 34, 44, 52 +] + +// 对 imgKey 和 subKey 进行字符顺序打乱编码 +function getMixinKey(orig) { + let temp = '' + mixinKeyEncTab.forEach((n) => { + temp += orig[n] + }) + return temp.slice(0, 32) +} + +// 为请求参数进行 wbi 签名 +function encWbi(params, img_key, sub_key) { + const mixin_key = getMixinKey(img_key + sub_key), + curr_time = Math.round(Date.now() / 1000), + chr_filter = /[!'\(\)*]/g + let query = [] + params = Object.assign(params, {wts: curr_time}) // 添加 wts 字段 + // 按照 key 重排参数 + Object.keys(params).sort().forEach((key) => { + query.push( + encodeURIComponent(key) + + '=' + + // 过滤 value 中的 "!'()*" 字符 + encodeURIComponent(('' + params[key]).replace(chr_filter, '')) + ) + }) + query = query.join('&') + const wbi_sign = CryptoJS.MD5(query + mixin_key).toString() // 计算 w_rid + return query + '&w_rid=' + wbi_sign +}