├── database ├── icon_Avatar.png └── BiliBili.Modified.json ├── modules ├── BiliBiliCatchCookie.snippet ├── BiliBiliCatchCookie.plugin ├── BiliBiliCatchCookie.sgmodule ├── BiliBili.Modified.snippet ├── BiliBili.Modified.plugin ├── BiliBili.Modified.sgmodule ├── BiliBiliDailyBonus.snippet ├── BiliBiliDailyBonus.sgmodule ├── BiliBiliDailyBonus.plugin ├── BiliBili.Series.snippet ├── BiliBili.Series.plugin └── BiliBili.Series.sgmodule ├── README.md ├── js ├── catch_shareCookie.js ├── BiliBili.Modified.response.js └── BiliBiliDailyBonus.js └── boxjs └── BiliBili.boxjs.json /database/icon_Avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ClydeTime/BiliBili/main/database/icon_Avatar.png -------------------------------------------------------------------------------- /modules/BiliBiliCatchCookie.snippet: -------------------------------------------------------------------------------- 1 | #!name=BiliBili Catch Cookie 2 | #!desc=获取共享cookie 3 | #!author=MartinsKing 4 | #!category= MK 5 | 6 | #[Script] 7 | ^https:\/\/app\.bilibili\.com\/bilibili\.app\.wall\.v1\.Wall\/RuleInfo url script-request-header https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/catch_shareCookie.js 8 | ^https?:\/\/app\.bilibili\.com\/x\/resource\/domain\? url script-request-header https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/catch_shareCookie.js 9 | 10 | #[MITM] 11 | hostname = app.bilibili.com, grpc.biliapi.net 12 | -------------------------------------------------------------------------------- /modules/BiliBiliCatchCookie.plugin: -------------------------------------------------------------------------------- 1 | #!name=BiliBili Catch Cookie 2 | #!desc=获取共享cookie 3 | #!author=MartinsKing 4 | #!category= MK 5 | 6 | [Script] 7 | http-request ^https:\/\/app\.bilibili\.com\/bilibili\.app\.wall\.v1\.Wall\/RuleInfo script-path=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/catch_shareCookie.js, tag=B站共享Cookie 8 | http-request ^https?:\/\/app\.bilibili\.com\/x\/resource\/domain\? script-path=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/catch_shareCookie.js, tag=B站共享Cookie 9 | 10 | [MITM] 11 | hostname = app.bilibili.com, grpc.biliapi.net 12 | -------------------------------------------------------------------------------- /modules/BiliBiliCatchCookie.sgmodule: -------------------------------------------------------------------------------- 1 | #!name=BiliBili Catch Cookie 2 | #!desc=获取共享cookie 3 | #!author=MartinsKing 4 | #!category= MK 5 | 6 | [Script] 7 | B站共享Cookie = type=http-request,pattern=^https:\/\/(app|grpc)\.bili(bili\.com|api\.net)\/bilibili\.app\.wall\.v1\.Wall\/RuleInfo,script-path=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/catch_shareCookie.js,requires-body=0 8 | B站共享Cookie = type=http-request,pattern=^https?:\/\/app\.bilibili\.com\/x\/resource\/domain\?,script-path=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/catch_shareCookie.js,requires-body=0 9 | 10 | [MITM] 11 | hostname = %APPEND% app.bilibili.com, grpc.biliapi.net 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # BiliBili Daily Bonus AND BiliBili Modified 2 | B站每日签到 主要功能如下(抄了一下BiliTool的介绍文本): 3 | - **支持Surge、Loon、QX(理论支持)** 4 | - **打开app自动更新cookie(经常失效,B站经常抽风)、扫码登录** 5 | - **每日获取满额升级经验(登录、投币、点赞、分享视频)(投币随机给关注的UP)** 6 | - **直播中心银瓜子兑换为硬币** 7 | - **每月领取大会员赠送的 5 张 B 币券和福利(忘记或者不领就浪费了哦)** 8 | - **目前B站不在允许给自己充电,可寻找长期大会员拥有者相互帮助** 9 | - **大会员大积分任务** 10 | 11 | --- 12 | 13 | B站皮肤 需配合boxjs使用(受脚本大小影响,爱好者可提供皮肤名,酌情考虑添加) 14 | 15 | 已支持切换的皮肤列表: 16 | - 初音未来-日版 17 | - 初音未来-夜版 18 | - 良辰美景·不问天 19 | - EveOneCat2 20 | - 有栖mana 21 | - 嘉然个性装扮2.0 22 | - 萌节六周年装扮 23 | - 眠眠兔 24 | - 提摩西小队第二弹 25 | - 灰原哀 26 | - 铃芽之旅 27 | - 有兽焉 28 | - 樱花未来 29 | - JDG坚定信仰 30 | - 奶蓝梦境 31 | - 领结猫 32 | - 幻想乡的日常 第1弹 33 | - 乐正绫八周年生日纪念 34 | - 恬豆发芽了 35 | - 生日快乐 36 | - 仓鼠松鼠 37 | - 大耳狗 甜品时刻 38 | - 愿望成真 生日快乐2 39 | - 小猫咪金的没烦恼(本人最爱) 40 | - 章章梦工厂 41 | - 星光六角螈 42 | - 脑洞波系列主题装扮-贝拉 43 | - 蜜桃猫情侣篇 44 | 45 | --- 46 | 47 | ## 为方便用户发表建议,反馈BUG等,已建立tg群组 48 | Telegram讨论组:[BiliBiliDailyBonus Chat](https://t.me/BiliDailyBonusChat) -------------------------------------------------------------------------------- /modules/BiliBili.Modified.snippet: -------------------------------------------------------------------------------- 1 | #!name=📺 BiliBili: 👘 Modified 2 | #!desc=哔哩哔哩:👘 皮肤 3 | #!openUrl=http://boxjs.com/#/app/BiliBili.clydetime.sub 4 | #!author=MartinsKing 5 | #!icon=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/database/icon_Avatar.png 6 | #!category= MK 7 | 8 | #[rewrite_local] 9 | # 📺 BiliBili.Modified.skin.app.json 10 | ^https?:\/\/app\.bilibili\.com\/x\/resource\/show\/skin\? url script-response-body https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/BiliBili.Modified.response.js 11 | # 📺 BiliBili.Modified.account.app.json 12 | ^https:\/\/app\.bilibili\.com\/x\/v2\/(account\/(myinfo|mine)|space)([\/?]|$) url script-response-body https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/BiliBili.Modified.response.js 13 | # 📺 BiliBili.Modified.vip.app.json 14 | ^https:\/\/api\.bilibili\.com\/x\/vip\/(web\/vip_center\/combine|price\/panel\/lexi|top_panel_info) url script-response-body https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/BiliBili.Modified.response.js 15 | 16 | #[MITM] 17 | hostname = app.bilibili.com, api.bilibili.com -------------------------------------------------------------------------------- /modules/BiliBili.Modified.plugin: -------------------------------------------------------------------------------- 1 | #!name=📺 BiliBili: 👘 Modified 2 | #!desc=哔哩哔哩:👘 皮肤 3 | #!openUrl=http://boxjs.com/#/app/BiliBili.clydetime.sub 4 | #!author=MartinsKing 5 | #!icon=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/database/icon_Avatar.png 6 | #!category= MK 7 | 8 | [Script] 9 | http-response ^https?:\/\/app\.bilibili\.com\/x\/resource\/show\/skin\? requires-body=1, script-path=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/BiliBili.Modified.response.js, tag=📺 BiliBili.Modified.x.resource.show.skin, argument= 10 | http-response ^https:\/\/app\.bilibili\.com\/x\/v2\/(account\/(myinfo|mine)|space)([\/?]|$) requires-body=1, script-path=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/BiliBili.Modified.response.js, tag=📺 BiliBili.Modified.x.v2, argument= 11 | http-response ^https:\/\/api\.bilibili\.com\/x\/vip\/(web\/vip_center\/combine|price\/panel\/lexi|top_panel_info) requires-body=1, script-path=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/BiliBili.Modified.response.js, tag=📺 BiliBili.Modified.x.vip, argument= 12 | 13 | [MitM] 14 | hostname = app.bilibili.com, api.bilibili.com 15 | h2 = true -------------------------------------------------------------------------------- /modules/BiliBili.Modified.sgmodule: -------------------------------------------------------------------------------- 1 | #!name=📺 BiliBili: 👘 Modified 2 | #!desc=哔哩哔哩:👘 皮肤 3 | #!openUrl=http://boxjs.com/#/app/BiliBili.clydetime.sub 4 | #!author=MartinsKing 5 | #!icon=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/database/icon_Avatar.png 6 | #!category= MK 7 | 8 | [Script] 9 | 📺 BiliBili.Modified.x.resource.show.skin = type=http-response, pattern=^https?:\/\/app\.bilibili\.com\/x\/resource\/show\/skin\?, requires-body=1, script-path=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/BiliBili.Modified.response.js, argument= 10 | 📺 BiliBili.Modified.x.v2 = type=http-response, pattern=^https:\/\/app\.bilibili\.com\/x\/v2\/(account\/(myinfo|mine)|space)([\/?]|$), requires-body=1, script-path=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/BiliBili.Modified.response.js, argument= 11 | 📺 BiliBili.Modified.x.vip = type=http-response, pattern=^https:\/\/api\.bilibili\.com\/x\/vip\/(web\/vip_center\/combine|price\/panel\/lexi|top_panel_info), requires-body=1, script-path=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/BiliBili.Modified.response.js, argument= 12 | 13 | [MITM] 14 | hostname = %APPEND% app.bilibili.com, api.bilibili.com 15 | h2 = true -------------------------------------------------------------------------------- /modules/BiliBiliDailyBonus.snippet: -------------------------------------------------------------------------------- 1 | #!name=BiliBili每日等级任务 2 | #!desc=定时任务及Cookie获取 3 | #!author= MartinsKing(@ClydeTime) 4 | #!homepage= https://github.com/ClydeTime/BiliBili/tree/master 5 | #!icon=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/database/icon_Avatar.png 6 | #!category= MK 7 | # 现将获取cookie与定时任务合并为一个模块 8 | # 使用APP获取cookie,保持B站Cookie(APP)开启,如检测到cookie变更会自动更新,解决cookie经常过期的问题(cookie仍有效不提醒更新) 9 | # 使用扫码获取cookie,保持B站Cookie(扫码)开启,打开APP后,根据推送提示操作获取cookie,此方式cookie存活时间较长,使用后需关闭脚本,cookie失效后再次打开即可 10 | # 用户可选择自行开启或关闭,两种获取方式不可兼用 11 | # 大会员用户可选择开启观看剧集大积分定时任务,以此获取观看剧集大积分,非大会员用户忽略即可 12 | # 任务奖励:经验值/硬币/大会员积分/年度会员领取B币等 13 | # ================ Boxjs订阅 ================ 14 | # 订阅地址:https://raw.githubusercontent.com/ClydeTime/BiliBili/main/boxjs/BiliBili.boxjs.json 15 | # 更新时间:2025-05-15 16 | 17 | [task_local] 18 | # B站每日等级任务 19 | 30 7 * * * https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/BiliBiliDailyBonus.js, tag=B站每日等级任务, img-url=https://raw.githubusercontent.com/HuiDoY/Icon/main/mini/Color/bilibili.png, enabled=true 20 | 21 | # B站观看剧集大积分 22 | 30 7 * * * https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/BiliBiliDailyBonus.js, tag=B站观看剧集大积分, img-url=https://raw.githubusercontent.com/HuiDoY/Icon/main/mini/Color/bilibili.png, enabled=false 23 | 24 | # B站Cookie(扫码) 25 | ^https?:\/\/app\.bilibili\.com\/x\/resource\/fingerprint\? url script-response-body https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/BiliBiliDailyBonus.js 26 | # B站Cookie(APP) 27 | ^https?:\/\/app\.bilibili\.com\/x\/resource\/fingerprint\? url script-request-header https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/BiliBiliDailyBonus.js 28 | 29 | #[MITM] 30 | hostname = app.bilibili.com -------------------------------------------------------------------------------- /modules/BiliBiliDailyBonus.sgmodule: -------------------------------------------------------------------------------- 1 | #!name=BiliBili每日等级任务 2 | #!desc=定时任务及Cookie获取 3 | #!author= MartinsKing(@ClydeTime) 4 | #!homepage= https://github.com/ClydeTime/BiliBili/tree/master 5 | #!icon=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/database/icon_Avatar.png 6 | #!category= MK 7 | #!arguments = script_QrCode:B站Cookie(扫码),script_APP:B站Cookie(APP),bigPoint:#B站观看剧集大积分 8 | # 现将获取cookie与定时任务合并为一个模块 9 | # 使用APP获取cookie,保持B站Cookie(APP)开启,如检测到cookie变更会自动更新,解决cookie经常过期的问题(cookie仍有效不提醒更新) 10 | # 使用扫码获取cookie,保持B站Cookie(扫码)开启,打开APP后,根据推送提示操作获取cookie,此方式cookie存活时间较长,使用后需关闭脚本,cookie失效后再次打开即可 11 | # 用户可选择自行开启或关闭,两种获取方式不可兼用,如需关闭,点击模块右侧三个点或长按模块,选择编辑参数,将script_QrCode或script_APP设置为#即可 12 | # 大会员用户用户可选择开启bigPoint定时任务(删除「#B站观看剧集大积分」内的#),以此获取观看剧集大积分,非大会员用户忽略即可 13 | # 任务奖励:经验值/硬币/大会员积分/年度会员领取B币等 14 | # ================ Boxjs订阅 ================ 15 | # 订阅地址:https://raw.githubusercontent.com/ClydeTime/BiliBili/main/boxjs/BiliBili.boxjs.json 16 | # 更新时间:2025-05-15 17 | 18 | [Script] 19 | B站每日任务 = type=cron,cronexp=30 7 * * *,script-path=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/BiliBiliDailyBonus.js,wake-system=1,timeout=15 20 | 21 | {{{bigPoint}}} = type=cron,cronexp=41 7 * * *,script-path=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/BiliBiliDailyBonus.js,wake-system=1,timeout=15 22 | 23 | {{{script_QrCode}}} = type=http-response,pattern=^https?:\/\/app\.bilibili\.com\/x\/resource\/fingerprint\?,script-path=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/BiliBiliDailyBonus.js,requires-body=0,timeout=30 24 | 25 | {{{script_APP}}} = type=http-request,pattern=^https?:\/\/app\.bilibili\.com\/x\/resource\/fingerprint\?,script-path=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/BiliBiliDailyBonus.js,requires-body=0 26 | 27 | [MITM] 28 | hostname = %APPEND% app.bilibili.com -------------------------------------------------------------------------------- /modules/BiliBiliDailyBonus.plugin: -------------------------------------------------------------------------------- 1 | #!name=BiliBili每日等级任务 2 | #!desc=定时任务及Cookie获取 3 | #!author= MartinsKing(@ClydeTime) 4 | #!homepage= https://github.com/ClydeTime/BiliBili/tree/master 5 | #!icon=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/database/icon_Avatar.png 6 | #!category= MK 7 | # 现将获取cookie与定时任务合并为一个模块 8 | # 使用APP获取cookie,保持B站Cookie(APP)开启,如检测到cookie变更会自动更新,解决cookie经常过期的问题(cookie仍有效不提醒更新) 9 | # 使用扫码获取cookie,保持B站Cookie(扫码)开启,打开APP后,根据推送提示操作获取cookie,此方式cookie存活时间较长,使用后需关闭脚本,cookie失效后再次打开即可 10 | # 用户可选择自行开启或关闭,两种获取方式不可兼用 11 | # 大会员用户可选择开启bigPoint定时任务,以此获取观看剧集大积分,非大会员用户忽略即可 12 | # ================ Boxjs订阅 ================ 13 | # 订阅地址:https://raw.githubusercontent.com/ClydeTime/BiliBili/main/boxjs/BiliBili.boxjs.json 14 | # 更新时间:2025-05-15 15 | 16 | [Argument] 17 | 扫码Cookie = switch,false,tag=[开关] 扫码Cookie,desc=是否启用此处修改 18 | RunTime = input,"30 7 * * *",tag=自定义执行时间,desc=可手动更改脚本运行时间,默认早上7点半 19 | APPCookie = switch,true,tag=[开关] APPCookie,desc=是否启用此处修改 20 | bigPoint = switch,false,tag=[开关] 观看剧集大积分,desc=是否启用此处修改 21 | 22 | [Script] 23 | # BiliBili每日等级任务 24 | cron {RunTime} script-path=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/BiliBiliDailyBonus.js, tag=B站每日等级任务, timeout=15 25 | 26 | cron "41 7 * * *" script-path=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/BiliBiliDailyBonus.js, tag=B站观看剧集大积分, enable={bigPoint}, timeout=15 27 | 28 | http-response ^https?:\/\/app\.bilibili\.com\/x\/resource\/fingerprint\? script-path=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/BiliBiliDailyBonus.js, tag=B站Cookie(扫码), timeout=30, enable={扫码Cookie} 29 | 30 | http-request ^https?:\/\/app\.bilibili\.com\/x\/resource\/fingerprint\? script-path=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/BiliBiliDailyBonus.js, tag=B站Cookie(APP), enable={APPCookie} 31 | 32 | [MITM] 33 | hostname = app.bilibili.com -------------------------------------------------------------------------------- /js/catch_shareCookie.js: -------------------------------------------------------------------------------- 1 | const cookie2object = (cookie) => { 2 | var obj = {}; 3 | var arr = cookie.split("; "); 4 | arr.forEach(function (val) { 5 | var brr = val.split("="); 6 | obj[brr[0]] = brr[1]; 7 | }); 8 | return obj; 9 | }; 10 | let config = { 11 | cookie: {}, 12 | headers: {} 13 | }; 14 | 15 | const $ = new Env("biliCookie") 16 | config = $.getjson($.name, {}) 17 | var bili_headers = {} 18 | var falg = false 19 | if ($request.headers['x-bili-metadata-bin']) { 20 | falg = true 21 | config.headers = $request.headers 22 | bili_headers.Other = {} 23 | } else { 24 | config.headers = {} 25 | bili_headers.Other = config.Other || {} 26 | } 27 | 28 | let Cookie 29 | if (typeof $request.headers.cookie != 'undefined') { 30 | Cookie = $request.headers.cookie 31 | } else if (typeof $request.headers.Cookie != 'undefined') { 32 | Cookie = $request.headers.Cookie 33 | } 34 | 35 | if (Cookie) { 36 | config.cookie = cookie2object(Cookie) 37 | bili_headers.Cookie = `DedeUserID=${config.cookie.DedeUserID}; DedeUserID__ckMd5=${config.cookie.DedeUserID__ckMd5}; SESSDATA=${config.cookie.SESSDATA}; bili_jct=${config.cookie.bili_jct}; sid=${config.cookie.sid}` 38 | } else { 39 | bili_headers.Cookie = config.Cookie 40 | } 41 | 42 | if (falg) { 43 | bili_headers.Other.Authorization = config.headers.Authorization || config.headers.authorization 44 | bili_headers.Other['User-Agent'] = config['headers']['User-Agent'] || config['headers']['user-agent'] 45 | bili_headers.Other['x-bili-locale-bin'] = config['headers']['x-bili-locale-bin'] 46 | bili_headers.Other['x-bili-device-bin'] = config['headers']['x-bili-device-bin'] 47 | bili_headers.Other['x-bili-metadata-bin'] = config['headers']['x-bili-metadata-bin'] 48 | bili_headers.Other['x-bili-fawkes-req-bin'] = config['headers']['x-bili-fawkes-req-bin'] 49 | } 50 | 51 | $.setdata($.toStr(bili_headers), $.name) 52 | $.log($.toStr(bili_headers)) 53 | if (bili_headers.Other.Authorization && bili_headers.Cookie) { 54 | $.msg("BiliBili-cookie获取", "获取成功", $.toStr(bili_headers)) 55 | } 56 | 57 | $.done() 58 | 59 | function Env(t,e){class s{constructor(t){this.env=t}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.encoding="utf-8",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}getEnv(){return"undefined"!=typeof $environment&&$environment["surge-version"]?"Surge":"undefined"!=typeof $environment&&$environment["stash-version"]?"Stash":"undefined"!=typeof $task?"Quantumult X":"undefined"!=typeof $loon?"Loon":"undefined"!=typeof $rocket?"Shadowrocket":void 0}isQuanX(){return"Quantumult X"===this.getEnv()}isSurge(){return"Surge"===this.getEnv()}isLoon(){return"Loon"===this.getEnv()}isShadowrocket(){return"Shadowrocket"===this.getEnv()}isStash(){return"Stash"===this.getEnv()}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const r=this.getdata(t);if(r)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}lodash_get(t,e,s){const r=e.replace(/\[(\d+)\]/g,".$1").split(".");let a=t;for(const t of r)if(a=Object(a)[t],void 0===a)return s;return a}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,r)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[r+1])>>0==+e[r+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,r]=/^@(.*?)\.(.*?)$/.exec(t),a=s?this.getval(s):"";if(a)try{const t=JSON.parse(a);e=t?this.lodash_get(t,r,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,r,a]=/^@(.*?)\.(.*?)$/.exec(e),n=this.getval(r),i=r?"null"===n?null:n||"{}":"{}";try{const e=JSON.parse(i);this.lodash_set(e,a,t),s=this.setval(JSON.stringify(e),r)}catch(e){const n={};this.lodash_set(n,a,t),s=this.setval(JSON.stringify(n),r)}}else s=this.setval(t,e);return s}getval(t){switch(this.getEnv()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":return $persistentStore.read(t);case"Quantumult X":return $prefs.valueForKey(t);default:return this.data&&this.data[t]||null}}setval(t,e){switch(this.getEnv()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":return $persistentStore.write(t,e);case"Quantumult X":return $prefs.setValueForKey(t,e);default:return this.data&&this.data[e]||null}}msg(e=t,s="",r="",a){const n=t=>{switch(typeof t){case void 0:return t;case"string":switch(this.getEnv()){case"Surge":case"Stash":default:return{url:t};case"Loon":case"Shadowrocket":return t;case"Quantumult X":return{"open-url":t}}case"object":switch(this.getEnv()){case"Surge":case"Stash":case"Shadowrocket":default:{let e=t.url||t.openUrl||t["open-url"];return{url:e}}case"Loon":{let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}case"Quantumult X":{let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl,r=t["update-pasteboard"]||t.updatePasteboard;return{"open-url":e,"media-url":s,"update-pasteboard":r}}}default:return}};if(!this.isMute)switch(this.getEnv()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":default:$notification.post(e,s,r,n(a));break;case"Quantumult X":$notify(e,s,r,n(a))}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;switch(this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),this.getEnv()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":case"Quantumult X":default:$done(t)}}}(t,e)} 60 | -------------------------------------------------------------------------------- /boxjs/BiliBili.boxjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "BiliBili.clydetime.sub", 3 | "name": "BiliBili 系列订阅", 4 | "author": "@MartinsKing", 5 | "description": "哔哩哔哩功能增强系列", 6 | "icon": "https://raw.githubusercontent.com/ClydeTime/BiliBili/main/database/icon_Avatar.png", 7 | "repo": "https://github.com/ClydeTime/BiliBili", 8 | "apps": 9 | [ 10 | { 11 | "id": "BiliBili.DailyBonus", 12 | "name": "BiliBili.DailyBonus", 13 | "author": "@MartinsKing", 14 | "script": "https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/BiliBiliDailyBonus.js", 15 | "descs_html": 16 | [ 17 | "使用说明请见脚本备注", 18 | "填写完成后记得点击此页面底端右下角的\"保存\"。" 19 | ], 20 | "icons": 21 | [ 22 | "https://raw.githubusercontent.com/Orz-3/mini/master/Alpha/bilibili.png", 23 | "https://raw.githubusercontent.com/Orz-3/mini/master/Color/bilibili.png" 24 | ], 25 | "keys": 26 | [ 27 | "@bilibili_daily_bonus.Settings" 28 | ], 29 | "settings": 30 | [ 31 | { 32 | "id": "@bilibili_daily_bonus.Settings.exec", 33 | "name": "投币次数", 34 | "val": "5", 35 | "type": "text", 36 | "desc": "投币次数(用户自行设置,默认5次)" 37 | }, 38 | { 39 | "id": "@bilibili_daily_bonus.Settings.charge_mid", 40 | "name": "被充电用户id", 41 | "type": "text", 42 | "desc": "不填写即为自己, 填写后为指定用户id充电" 43 | }, 44 | { 45 | "id": "@bilibili_daily_bonus.Settings.bp_num", 46 | "name": "充电B币数", 47 | "val": "5", 48 | "type": "text", 49 | "desc": "充电B币数量(对应每月B币券, 默认5B币, 防勿充可更改为0)" 50 | } 51 | ] 52 | }, 53 | { 54 | "id": "BiliBili.Modified.Setting", 55 | "name": "📺 BiliBili: 👘 Modified ", 56 | "author": "@MartinsKing", 57 | "script": "https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/BiliBili.Modified.response.js", 58 | "icons": 59 | [ 60 | "https://raw.githubusercontent.com/ClydeTime/BiliBili/main/database/icon_Avatar.png", 61 | "https://raw.githubusercontent.com/ClydeTime/BiliBili/main/database/icon_Avatar.png" 62 | ], 63 | "descs_html": 64 | [ 65 | "依次选择皮肤、加载动画、是否修改大会员等", 66 | "选择完成后记得点击此页面底端右下角的\"保存\"。" 67 | ], 68 | "keys": 69 | [ 70 | "@BiliBili.Modified.Settings.Skin", 71 | "@BiliBili.Modified.Settings.Private" 72 | ], 73 | "settings": 74 | [ 75 | { 76 | "id": "@BiliBili.Modified.Settings.Switch", 77 | "name": "总功能开关", 78 | "val": true, 79 | "type": "boolean", 80 | "desc": "是否启用此APP修改" 81 | }, 82 | { 83 | "id": "@BiliBili.Modified.Settings.Skin.user_equip", 84 | "name": "皮肤", 85 | "val": 86 | [ 87 | "1682863365001" 88 | ], 89 | "type": "radios", 90 | "items": 91 | [ 92 | { 93 | "key": "2529", 94 | "label": "初音未来-日版" 95 | }, 96 | { 97 | "key": "2530", 98 | "label": "初音未来-夜版" 99 | }, 100 | { 101 | "key": "4124", 102 | "label": "良辰美景·不问天" 103 | }, 104 | { 105 | "key": "32264", 106 | "label": "EveOneCat2" 107 | }, 108 | { 109 | "key": "33459", 110 | "label": "有栖mana" 111 | }, 112 | { 113 | "key": "34813", 114 | "label": "嘉然个性装扮2.0(1)" 115 | }, 116 | { 117 | "key": "34814", 118 | "label": "嘉然个性装扮2.0(2)" 119 | }, 120 | { 121 | "key": "38342", 122 | "label": "萌节六周年装扮" 123 | }, 124 | { 125 | "key": "39859", 126 | "label": "眠眠兔" 127 | }, 128 | { 129 | "key": "49390", 130 | "label": "提摩西小队第二弹" 131 | }, 132 | { 133 | "key": "50107", 134 | "label": "灰原哀" 135 | }, 136 | { 137 | "key": "50605", 138 | "label": "铃芽之旅" 139 | }, 140 | { 141 | "key": "50763", 142 | "label": "有兽焉" 143 | }, 144 | { 145 | "key": "50874", 146 | "label": "樱花未来" 147 | }, 148 | { 149 | "key": "52484", 150 | "label": "JDG坚定信仰" 151 | }, 152 | { 153 | "key": "59580", 154 | "label": "创作之翼个性主题" 155 | }, 156 | { 157 | "key": "1679479030001", 158 | "label": "奶蓝梦境" 159 | }, 160 | { 161 | "key": "1680162579001", 162 | "label": "领结猫" 163 | }, 164 | { 165 | "key": "1680348700001", 166 | "label": "幻想乡的日常 第1弹" 167 | }, 168 | { 169 | "key": "1680580240001", 170 | "label": "乐正绫八周年生日纪念" 171 | }, 172 | { 173 | "key": "1680591891001", 174 | "label": "恬豆发芽了" 175 | }, 176 | { 177 | "key": "1682047060001", 178 | "label": "生日快乐" 179 | }, 180 | { 181 | "key": "1682268079001", 182 | "label": "仓鼠松鼠" 183 | }, 184 | { 185 | "key": "1682400543001", 186 | "label": "大耳狗 甜品时刻" 187 | }, 188 | { 189 | "key": "1682588261001", 190 | "label": "愿望成真 生日快乐2" 191 | }, 192 | { 193 | "key": "1682863365001", 194 | "label": "小猫咪金的没烦恼" 195 | }, 196 | { 197 | "key": "1683039767001", 198 | "label": "章章梦工厂" 199 | }, 200 | { 201 | "key": "1683341615001", 202 | "label": "星光六角螈" 203 | }, 204 | { 205 | "key": "1683355602001", 206 | "label": "脑洞波系列主题装扮-贝拉" 207 | }, 208 | { 209 | "key": "1683518214001", 210 | "label": "蜜桃猫情侣篇" 211 | } 212 | ] 213 | }, 214 | { 215 | "id": "@BiliBili.Modified.Settings.Skin.load_equip", 216 | "name": "加载动画", 217 | "val": 218 | [ 219 | "32263" 220 | ], 221 | "type": "radios", 222 | "items": 223 | [ 224 | { 225 | "key": "2531", 226 | "label": "初音未来13周年" 227 | }, 228 | { 229 | "key": "4125", 230 | "label": "良辰美景·不问天" 231 | }, 232 | { 233 | "key": "32263", 234 | "label": "EveOneCat2" 235 | }, 236 | { 237 | "key": "33460", 238 | "label": "有栖mana" 239 | }, 240 | { 241 | "key": "34811", 242 | "label": "嘉然个性装扮2.0" 243 | }, 244 | { 245 | "key": "49391", 246 | "label": "提摩西小队第二弹" 247 | }, 248 | { 249 | "key": "1680172285001", 250 | "label": "豆豆摇头晃脑" 251 | }, 252 | { 253 | "key": "1680280135001", 254 | "label": "幻想乡的日常 第1弹" 255 | } 256 | ] 257 | }, 258 | { 259 | "id": "@BiliBili.Modified.Settings.Private.vip", 260 | "name": "大会员", 261 | "val": false, 262 | "type": "boolean", 263 | "desc": "是否更改为大会员状态(自慰)" 264 | }, 265 | { 266 | "id": "@BiliBili.Modified.Settings.Private.coin", 267 | "name": "硬币数", 268 | "val": "", 269 | "type": "text", 270 | "desc": "" 271 | }, 272 | { 273 | "id": "@BiliBili.Modified.Settings.Private.bcoin", 274 | "name": "B币数", 275 | "val": "", 276 | "type": "text", 277 | "desc": "" 278 | }, 279 | { 280 | "id": "@BiliBili.Modified.Settings.Private.follower", 281 | "name": "粉丝数", 282 | "val": "", 283 | "type": "text", 284 | "desc": "" 285 | }, 286 | { 287 | "id": "@BiliBili.Modified.Settings.Private.level", 288 | "name": "用户等级", 289 | "val": "", 290 | "type": "text", 291 | "desc": "小于等于6" 292 | }, 293 | { 294 | "id": "@BiliBili.Modified.Settings.Private.like", 295 | "name": "被赞次数", 296 | "val": "", 297 | "type": "text", 298 | "desc": "" 299 | } 300 | ] 301 | } 302 | ] 303 | } -------------------------------------------------------------------------------- /modules/BiliBili.Series.snippet: -------------------------------------------------------------------------------- 1 | #!name=📺 BiliBili: 🍟 Series 2 | #!desc=哔哩哔哩:🍟整点薯条系列 3 | #!openUrl=http://boxjs.com/#/app/BiliBili.clydetime.sub 4 | #!author=VirgilClyne, MartinsKing 5 | #!manual=https://manual.biliuniverse.io 6 | #!icon=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/database/icon_Avatar.png 7 | #!category= MK 8 | 9 | #[rewrite_local] 10 | //Enhanced 11 | # 📺 BiliBili.Enhanced.x.resource.show.tab.v2 12 | ^https?:\/\/app\.bili(bili\.com|api\.net)\/x\/resource\/show\/tab\/v2\? url script-response-body https://github.com/BiliUniverse/Enhanced/releases/latest/download/response.bundle.js 13 | # 📺 BiliBili.Enhanced.x.v2.account.mine 14 | ^https?:\/\/app\.bili(bili\.com|api\.net)\/x\/v2\/account\/mine(\/ipad)?\? url script-response-body https://github.com/BiliUniverse/Enhanced/releases/latest/download/response.bundle.js 15 | # 📺 BiliBili.Enhanced.x.v2.region.index 16 | ^https?:\/\/app\.bili(bili\.com|api\.net)\/x\/v2\/region\/index\? url script-response-body https://github.com/BiliUniverse/Enhanced/releases/latest/download/response.bundle.js 17 | # 📺 BiliBili.Enhanced.x.v2.channel.region.list 18 | ^https?:\/\/app\.bili(bili\.com|api\.net)\/x\/v2\/channel\/region\/list\? url script-response-body https://github.com/BiliUniverse/Enhanced/releases/latest/download/response.bundle.js 19 | 20 | //ADBlock 21 | # 去除搜索中的默认关键词 22 | ^https?:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.app\.interface\.v1\.Search\/DefaultWords$ url reject 23 | # 去除搜索中的大家都在搜 24 | ^https?:\/\/api\.vc\.bilibili\.com\/search_svr\/v\d\/Search\/recommend_words url reject-dict 25 | # 去除动态中的话题 26 | ^https?:\/\/api\.vc\.bilibili\.com\/topic_svr\/v1\/topic_svr url reject-dict 27 | # 去除动态中的最常访问 28 | ^https?:\/\/api\.vc\.bilibili\.com\/dynamic_svr\/v1\/dynamic_svr\/mix_uplist url reject-dict 29 | # 可能的一些推广(beta) 30 | ^https?:\/\/api\.bili(bili\.com|api\.net)\/pgc\/season\/app\/related\/recommend\? url reject-dict 31 | # BiliBili漫画去广告 32 | ^https?:\/\/manga\.bilibili\.com\/twirp\/comic\.v\d\.Comic\/Flash url reject-dict 33 | ^https?:\/\/manga\.bilibili\.com\/twirp\/comic\.v\d\.Comic\/ListFlash url reject-dict 34 | ^https?:\/\/api\.live\.bilibili\.com\/xlive\/e-commerce-interface\/v1\/ecommerce-user\/get_shopping_info\? url reject-dict 35 | # 📺 BiliBili.ADBlock.request.json 36 | ^https?:\/\/app\.bili(bili\.com|api\.net)\/x\/v2\/feed\/index\? url script-request-header https://github.com/BiliUniverse/ADBlock/releases/latest/download/request.bundle.js 37 | # 📺 BiliBili.ADBlock.response.json 38 | ^https?:\/\/api\.live\.bilibili\.com\/xlive\/app-room\/v1\/index\/getInfoByRoom url script-response-body https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js 39 | ^https?:\/\/api\.bilibili\.com\/x\/web-interface\/wbi\/index\/top\/feed\/rcmd\? url script-response-body https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js 40 | ^https?:\/\/api\.bili(bili\.com|api\.net)\/pgc\/page\/(bangumi|cinema\/tab\?) url script-response-body https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js 41 | ^https?:\/\/app\.bili(bili\.com|api\.net)\/x\/v2\/(splash\/(brand\/list|event\/list2|list|show)|feed\/index(\/story)?|search\/square) url script-response-body https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js 42 | # 📺 BiliBili.ADBlock.response.grpc 43 | ^https?:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.app\.(view|viewunite)\.v1\.View\/(View|TFInfo|RelatesFeed)$ url script-response-body https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js 44 | ^https?:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.app\.dynamic\.v2\.Dynamic\/Dyn(All|Video)$ url script-response-body https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js 45 | ^https?:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.app\.playurl\.v1\.PlayURL\/PlayView$ url script-response-body https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js 46 | ^https?:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.polymer\.app\.search\.v1\.Search\/SearchAll$ url script-response-body https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js 47 | ^https:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.community\.service\.dm\.v1\.DM\/(DmView|DmSegMobile) url script-response-body https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js 48 | ^https:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.app\.interface\.v1\.Teenagers\/ModeStatus url script-response-body https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js 49 | ^https:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.main\.community\.reply\.v1\.Reply\/MainList url script-response-body https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js 50 | 51 | //Global 52 | # 📺 BiliBili.Global.bangumi.play.html 53 | ^https?:\/\/www\.bilibili\.com\/bangumi\/play\/(ss|ep)\d+\/? url script-request-body https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js 54 | 55 | # 📺 BiliBili.Global.viewunite.v1.View.grpc 56 | ^https?:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.app\.viewunite\.v1\.View\/View$ url script-request-body https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js 57 | ^https?:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.app\.viewunite\.v1\.View\/View$ url script-response-body https://github.com/BiliUniverse/Global/releases/latest/download/response.bundle.js 58 | # 📺 BiliBili.Global.season.json 59 | ^https?:\/\/api\.bili(bili\.com|api\.net)\/pgc\/view\/(v2\/app|web|pc)\/season\? url script-request-body https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js 60 | ^https?:\/\/api\.bili(bili\.com|api\.net)\/pgc\/view\/(v2\/app|web|pc)\/season\? url script-response-body https://github.com/BiliUniverse/Global/releases/latest/download/response.bundle.js 61 | 62 | # 📺 BiliBili.Global.playerunite.v1.Player.grpc 63 | ^https?:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.app\.playerunite\.v1\.Player\/PlayViewUnite$ url script-request-body https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js 64 | # 📺 BiliBili.Global.player.v2.PlayURL.grpc 65 | ^https?:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.pgc\.gateway\.player\.v2\.PlayURL\/PlayView$ url script-request-body https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js 66 | # 📺 BiliBili.Global.player.playurl.json 67 | ^https?:\/\/api\.bili(bili\.com|api\.net)\/pgc\/player\/(api|web)\/playurl(\/html5)?\? url script-request-body https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js 68 | # 📺 BiliBili.Global.player.v2.playurl.json 69 | ^https?:\/\/api\.bili(bili\.com|api\.net)\/pgc\/player\/web\/v2\/playurl\? url script-request-body https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js 70 | 71 | # 📺 BiliBili.Global.search.html 72 | ^https?:\/\/search\.bilibili\.com\/all\? url script-request-body https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js 73 | # 📺 BiliBili.Global.search.grpc 74 | ^https?:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.polymer\.app\.search\.v1\.Search\/(SearchAll|SearchByType)$ url script-request-body https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js 75 | # 📺 BiliBili.Global.search.app.json 76 | ^https?:\/\/app\.bili(bili\.com|api\.net)\/x\/v2\/search(\/type)?\? url script-request-body https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js 77 | # 📺 BiliBili.Global.search.wbi.json 78 | ^https?:\/\/api\.bili(bili\.com|api\.net)\/x\/web-interface\/wbi\/search\/(all\/v2|type)\? url script-request-body https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js 79 | # 📺 BiliBili.Global.search.pc.json 80 | ^https?:\/\/api\.bili(bili\.com|api\.net)\/x\/web-interface\/search\/(all\/v2|type)\? url script-request-body https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js 81 | 82 | # 📺 BiliBili.Global.space.app.json 83 | ^https?:\/\/app\.bili(bili\.com|api\.net)\/x\/v2\/space\? url script-request-body https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js 84 | # 📺 BiliBili.Global.space.wbi.json 85 | ^https?:\/\/api\.bili(bili\.com|api\.net)\/x\/space\/wbi\/acc\/info\? url script-request-body https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js 86 | # 📺 BiliBili.Global.space.pc.json 87 | ^https?:\/\/api\.bili(bili\.com|api\.net)\/x\/space\/acc\/info\? url script-request-body https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js 88 | 89 | //Modified 90 | # 📺 BiliBili.Modified.skin.app.json 91 | ^https?:\/\/app\.bilibili\.com\/x\/resource\/show\/skin\? url script-response-body https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/BiliBili.Modified.response.js, argument= 92 | # 📺 BiliBili.Modified.account.app.json 93 | ^https:\/\/app\.bilibili\.com\/x\/v2\/(account\/(myinfo|mine)|space)([\/?]|$) url script-response-body https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/BiliBili.Modified.response.js, argument= 94 | # 📺 BiliBili.Modified.vip.app.json 95 | ^https:\/\/api\.bilibili\.com\/x\/vip\/(web\/vip_center\/combine|price\/panel\/lexi|top_panel_info) url script-response-body https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/BiliBili.Modified.response.js, argument= 96 | 97 | #[MITM] 98 | hostname = manga.bilibili.com, api.live.bilibili.com, api.vc.bilibili.com, www.bilibili.com, search.bilibili.com, app.bilibili.com, app.biliapi.net, api.bilibili.com, api.biliapi.net, grpc.biliapi.net -------------------------------------------------------------------------------- /modules/BiliBili.Series.plugin: -------------------------------------------------------------------------------- 1 | #!name=📺 BiliBili: 🍟 Series 2 | #!desc=哔哩哔哩:🍟整点薯条系列 3 | #!openUrl=http://boxjs.com/#/app/BiliBili.clydetime.sub 4 | #!author=VirgilClyne, MartinsKing 5 | #!manual=https://manual.biliuniverse.io 6 | #!icon=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/database/icon_Avatar.png 7 | #!category= MK 8 | 9 | [Rewrite] 10 | # 去除搜索中的默认关键词 11 | ^https?:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.app\.interface\.v1\.Search\/DefaultWords$ - reject 12 | # 去除搜索中的大家都在搜 13 | ^https?:\/\/api\.vc\.bilibili\.com\/search_svr\/v\d\/Search\/recommend_words - reject-dict 14 | # 去除动态中的话题 15 | ^https?:\/\/api\.vc\.bilibili\.com\/topic_svr\/v1\/topic_svr - reject-dict 16 | # 去除动态中的最常访问 17 | ^https?:\/\/api\.vc\.bilibili\.com\/dynamic_svr\/v1\/dynamic_svr\/mix_uplist - reject-dict 18 | # 可能的一些推广(beta) 19 | ^https?:\/\/api\.bili(bili\.com|api\.net)\/pgc\/season\/app\/related\/recommend\? - reject-dict 20 | # BiliBili漫画去广告 21 | ^https?:\/\/manga\.bilibili\.com\/twirp\/comic\.v\d\.Comic\/Flash - reject-dict 22 | ^https?:\/\/manga\.bilibili\.com\/twirp\/comic\.v\d\.Comic\/ListFlash - reject-dict 23 | ^https:\/\/api\.live\.bilibili\.com\/xlive\/e-commerce-interface\/v1\/ecommerce-user\/get_shopping_info\? - reject-dict 24 | 25 | [Script] 26 | //Enhanced 27 | http-response ^https?:\/\/app\.bili(bili\.com|api\.net)\/x\/resource\/show\/tab\/v2\? requires-body=1, script-path=https://github.com/BiliUniverse/Enhanced/releases/latest/download/response.bundle.js, tag=📺 BiliBili.Enhanced.x.resource.show.tab.v2, argument=[{Home.Tab},{Home.Tab_default},{Home.Top_left},{Home.Top},{Bottom},{LogLevel}] 28 | http-response ^https?:\/\/app\.bili(bili\.com|api\.net)\/x\/v2\/account\/mine(\/ipad)?\? requires-body=1, script-path=https://github.com/BiliUniverse/Enhanced/releases/latest/download/response.bundle.js, tag=📺 BiliBili.Enhanced.x.v2.account.mine, argument=[{Home.Tab},{Home.Tab_default},{Home.Top_left},{Home.Top},{Bottom},{LogLevel}] 29 | http-response ^https?:\/\/app\.bili(bili\.com|api\.net)\/x\/v2\/region\/index\? requires-body=1, script-path=https://github.com/BiliUniverse/Enhanced/releases/latest/download/response.bundle.js, tag=📺 BiliBili.Enhanced.x.v2.region.index, argument=[{Home.Tab},{Home.Tab_default},{Home.Top_left},{Home.Top},{Bottom},{LogLevel}] 30 | http-response ^https?:\/\/app\.bili(bili\.com|api\.net)\/x\/v2\/channel\/region\/list\? requires-body=1, script-path=https://github.com/BiliUniverse/Enhanced/releases/latest/download/response.bundle.js, tag=📺 BiliBili.Enhanced.x.v2.channel.region.list, argument=[{Home.Tab},{Home.Tab_default},{Home.Top_left},{Home.Top},{Bottom},{LogLevel}] 31 | 32 | //ADBlock 33 | http-request ^https?:\/\/app\.bili(bili\.com|api\.net)\/x\/v2\/feed\/index\? requires-body=0, script-path=https://github.com/BiliUniverse/ADBlock/releases/latest/download/request.bundle.js, tag=📺 BiliBili.ADBlock.request.json, argument=[{Splash},{Feed.AD},{Feed.Activity},{Feed.Vertical},{Feed.BlockUpLiveList},{Feed.Story},{Search.AD},{Search.HotSearch},{PGC.AD},{Xlive.AD},{Dynamic.HotTopics},{Dynamic.MostVisited},{Dynamic.AdCard},{View.AD},{DM.Command},{DM.Colorful},{Reply.AD},{LogLevel}] 34 | http-response ^https?:\/\/app\.bili(bili\.com|api\.net)\/x\/v2\/(splash\/(brand\/list|event\/list2|list|show)|feed\/index(\/story)?|search\/square) requires-body=1, script-path=https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js, tag=📺 BiliBili.ADBlock.response.json, argument=[{Splash},{Feed.AD},{Feed.Activity},{Feed.Vertical},{Feed.BlockUpLiveList},{Feed.Story},{Search.AD},{Search.HotSearch},{PGC.AD},{Xlive.AD},{Dynamic.HotTopics},{Dynamic.MostVisited},{Dynamic.AdCard},{View.AD},{DM.Command},{DM.Colorful},{Reply.AD},{LogLevel}] 35 | http-response ^https?:\/\/api\.bilibili\.com\/x\/web-interface\/wbi\/index\/top\/feed\/rcmd\? requires-body=1, script-path=https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js, tag=📺 BiliBili.ADBlock.response.json, argument=[{Splash},{Feed.AD},{Feed.Activity},{Feed.Vertical},{Feed.BlockUpLiveList},{Feed.Story},{Search.AD},{Search.HotSearch},{PGC.AD},{Xlive.AD},{Dynamic.HotTopics},{Dynamic.MostVisited},{Dynamic.AdCard},{View.AD},{DM.Command},{DM.Colorful},{Reply.AD},{LogLevel}] 36 | http-response ^https?:\/\/api\.bili(bili\.com|api\.net)\/pgc\/page\/(bangumi|cinema\/tab\?) requires-body=1, script-path=https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js, tag=📺 BiliBili.ADBlock.response.json, argument=[{Splash},{Feed.AD},{Feed.Activity},{Feed.Vertical},{Feed.BlockUpLiveList},{Feed.Story},{Search.AD},{Search.HotSearch},{PGC.AD},{Xlive.AD},{Dynamic.HotTopics},{Dynamic.MostVisited},{Dynamic.AdCard},{View.AD},{DM.Command},{DM.Colorful},{Reply.AD},{LogLevel}] 37 | http-response ^https?:\/\/api\.live\.bilibili\.com\/xlive\/app-room\/v1\/index\/getInfoByRoom requires-body=1, script-path=https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js, tag=📺 BiliBili.ADBlock.response.json, argument=[{Splash},{Feed.AD},{Feed.Activity},{Feed.Vertical},{Feed.BlockUpLiveList},{Feed.Story},{Search.AD},{Search.HotSearch},{PGC.AD},{Xlive.AD},{Dynamic.HotTopics},{Dynamic.MostVisited},{Dynamic.AdCard},{View.AD},{DM.Command},{DM.Colorful},{Reply.AD},{LogLevel}] 38 | http-response ^https?:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.app\.(view|viewunite)\.v1\.View\/(View|TFInfo|RelatesFeed)$ requires-body=1, binary-body-mode=1, script-path=https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js, tag=📺 BiliBili.ADBlock.view.response.grpc, argument=[{Splash},{Feed.AD},{Feed.Activity},{Feed.Vertical},{Feed.BlockUpLiveList},{Feed.Story},{Search.AD},{Search.HotSearch},{PGC.AD},{Xlive.AD},{Dynamic.HotTopics},{Dynamic.MostVisited},{Dynamic.AdCard},{View.AD},{DM.Command},{DM.Colorful},{Reply.AD},{LogLevel}] 39 | http-response ^https?:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.app\.dynamic\.v2\.Dynamic\/Dyn(All|Video)$ requires-body=1, binary-body-mode=1, script-path=https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js, tag=📺 BiliBili.ADBlock.dynamic.response.grpc, argument=[{Splash},{Feed.AD},{Feed.Activity},{Feed.Vertical},{Feed.BlockUpLiveList},{Feed.Story},{Search.AD},{Search.HotSearch},{PGC.AD},{Xlive.AD},{Dynamic.HotTopics},{Dynamic.MostVisited},{Dynamic.AdCard},{View.AD},{DM.Command},{DM.Colorful},{Reply.AD},{LogLevel}] 40 | http-response ^https?:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.app\.playurl\.v1\.PlayURL\/PlayView$ requires-body=1, binary-body-mode=1, script-path=https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js, tag=📺 BiliBili.ADBlock.playurl.response.grpc, argument=[{Splash},{Feed.AD},{Feed.Activity},{Feed.Vertical},{Feed.BlockUpLiveList},{Feed.Story},{Search.AD},{Search.HotSearch},{PGC.AD},{Xlive.AD},{Dynamic.HotTopics},{Dynamic.MostVisited},{Dynamic.AdCard},{View.AD},{DM.Command},{DM.Colorful},{Reply.AD},{LogLevel}] 41 | http-response ^https?:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.polymer\.app\.search\.v1\.Search\/SearchAll$ requires-body=1, binary-body-mode=1, script-path=https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js, tag=📺 BiliBili.ADBlock.search.response.grpc, argument=[{Splash},{Feed.AD},{Feed.Activity},{Feed.Vertical},{Feed.BlockUpLiveList},{Feed.Story},{Search.AD},{Search.HotSearch},{PGC.AD},{Xlive.AD},{Dynamic.HotTopics},{Dynamic.MostVisited},{Dynamic.AdCard},{View.AD},{DM.Command},{DM.Colorful},{Reply.AD},{LogLevel}] 42 | http-response ^https:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.community\.service\.dm\.v1\.DM\/(DmView|DmSegMobile) requires-body=1, binary-body-mode=1, script-path=https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js, tag=📺 BiliBili.ADBlock.dm.response.grpc, argument=[{Splash},{Feed.AD},{Feed.Activity},{Feed.Vertical},{Feed.BlockUpLiveList},{Feed.Story},{Search.AD},{Search.HotSearch},{PGC.AD},{Xlive.AD},{Dynamic.HotTopics},{Dynamic.MostVisited},{Dynamic.AdCard},{View.AD},{DM.Command},{DM.Colorful},{Reply.AD},{LogLevel}] 43 | http-response ^https:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.app\.interface\.v1\.Teenagers\/ModeStatus requires-body=1, binary-body-mode=1, script-path=https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js, tag=📺 BiliBili.ADBlock.interface.response.grpc, argument=[{Splash},{Feed.AD},{Feed.Activity},{Feed.Vertical},{Feed.BlockUpLiveList},{Feed.Story},{Search.AD},{Search.HotSearch},{PGC.AD},{Xlive.AD},{Dynamic.HotTopics},{Dynamic.MostVisited},{Dynamic.AdCard},{View.AD},{DM.Command},{DM.Colorful},{Reply.AD},{LogLevel}] 44 | http-response ^https:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.main\.community\.reply\.v1\.Reply\/MainList requires-body=1, binary-body-mode=1, script-path=https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js, tag=📺 BiliBili.ADBlock.reply.response.grpc, argument=[{Splash},{Feed.AD},{Feed.Activity},{Feed.Vertical},{Feed.BlockUpLiveList},{Feed.Story},{Search.AD},{Search.HotSearch},{PGC.AD},{Xlive.AD},{Dynamic.HotTopics},{Dynamic.MostVisited},{Dynamic.AdCard},{View.AD},{DM.Command},{DM.Colorful},{Reply.AD},{LogLevel}] 45 | 46 | //Global 47 | http-request ^https?:\/\/www\.bilibili\.com\/bangumi\/play\/(ss|ep)\d+\/? requires-body=1, script-path=https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js, tag=📺 BiliBili.Global.bangumi.play.html, argument=[{ForceHost},{Locales},{Proxies.CHN},{Proxies.HKG},{Proxies.MAC},{Proxies.TWN},{LogLevel}] 48 | 49 | http-request ^https?:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.app\.viewunite\.v1\.View\/View$ requires-body=1, binary-body-mode=1, script-path=https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js, tag=📺 BiliBili.Global.viewunite.v1.View.grpc, argument=[{ForceHost},{Locales},{Proxies.CHN},{Proxies.HKG},{Proxies.MAC},{Proxies.TWN},{LogLevel}] 50 | http-response ^https?:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.app\.viewunite\.v1\.View\/View$ requires-body=1, binary-body-mode=1, script-path=https://github.com/BiliUniverse/Global/releases/latest/download/response.bundle.js, tag=📺 BiliBili.Global.viewunite.v1.View.grpc, argument=[{ForceHost},{Locales},{Proxies.CHN},{Proxies.HKG},{Proxies.MAC},{Proxies.TWN},{LogLevel}] 51 | http-request ^https?:\/\/api\.bili(bili\.com|api\.net)\/pgc\/view\/(v2\/app|web|pc)\/season\? script-path=https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js, tag=📺 BiliBili.Global.season.json, argument=[{ForceHost},{Locales},{Proxies.CHN},{Proxies.HKG},{Proxies.MAC},{Proxies.TWN},{LogLevel}] 52 | http-response ^https?:\/\/api\.bili(bili\.com|api\.net)\/pgc\/view\/(v2\/app|web|pc)\/season\? requires-body=1, script-path=https://github.com/BiliUniverse/Global/releases/latest/download/response.bundle.js, tag=📺 BiliBili.Global.season.json, argument=[{ForceHost},{Locales},{Proxies.CHN},{Proxies.HKG},{Proxies.MAC},{Proxies.TWN},{LogLevel}] 53 | 54 | http-request ^https?:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.app\.playerunite\.v1\.Player\/PlayViewUnite$ requires-body=1, binary-body-mode=1, script-path=https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js, tag=📺 BiliBili.Global.playerunite.v1.Player.grpc, argument=[{ForceHost},{Locales},{Proxies.CHN},{Proxies.HKG},{Proxies.MAC},{Proxies.TWN},{LogLevel}] 55 | http-request ^https?:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.pgc\.gateway\.player\.v2\.PlayURL\/PlayView$ requires-body=1, binary-body-mode=1, script-path=https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js, tag=📺 BiliBili.Global.player.v2.PlayURL.grpc, argument=[{ForceHost},{Locales},{Proxies.CHN},{Proxies.HKG},{Proxies.MAC},{Proxies.TWN},{LogLevel}] 56 | http-request ^https?:\/\/api\.bili(bili\.com|api\.net)\/pgc\/player\/(api|web)\/playurl(\/html5)?\? script-path=https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js, tag=📺 BiliBili.Global.player.playurl.json, argument=[{ForceHost},{Locales},{Proxies.CHN},{Proxies.HKG},{Proxies.MAC},{Proxies.TWN},{LogLevel}] 57 | http-request ^https?:\/\/api\.bili(bili\.com|api\.net)\/pgc\/player\/web\/v2\/playurl\? script-path=https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js, tag=📺 BiliBili.Global.player.v2.playurl.json, argument=[{ForceHost},{Locales},{Proxies.CHN},{Proxies.HKG},{Proxies.MAC},{Proxies.TWN},{LogLevel}] 58 | 59 | http-request ^https?:\/\/search\.bilibili\.com\/all\? script-path=https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js, tag=📺 BiliBili.Global.search.html, argument=[{ForceHost},{Locales},{Proxies.CHN},{Proxies.HKG},{Proxies.MAC},{Proxies.TWN},{LogLevel}] 60 | http-request ^https?:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.polymer\.app\.search\.v1\.Search\/(SearchAll|SearchByType)$ requires-body=1, binary-body-mode=1, script-path=https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js, tag=📺 BiliBili.Global.search.grpc, argument=[{ForceHost},{Locales},{Proxies.CHN},{Proxies.HKG},{Proxies.MAC},{Proxies.TWN},{LogLevel}] 61 | http-request ^https?:\/\/app\.bili(bili\.com|api\.net)\/x\/v2\/search(\/type)?\? script-path=https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js, tag=📺 BiliBili.Global.search.app.json, argument=[{ForceHost},{Locales},{Proxies.CHN},{Proxies.HKG},{Proxies.MAC},{Proxies.TWN},{LogLevel}] 62 | http-request ^https?:\/\/api\.bili(bili\.com|api\.net)\/x\/web-interface\/wbi\/search\/(all\/v2|type)\? script-path=https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js, tag=📺 BiliBili.Global.search.wbi.json, argument=[{ForceHost},{Locales},{Proxies.CHN},{Proxies.HKG},{Proxies.MAC},{Proxies.TWN},{LogLevel}] 63 | http-request ^https?:\/\/api\.bili(bili\.com|api\.net)\/x\/web-interface\/search\/(all\/v2|type)\? script-path=https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js, tag=📺 BiliBili.Global.search.pc.json, argument=[{ForceHost},{Locales},{Proxies.CHN},{Proxies.HKG},{Proxies.MAC},{Proxies.TWN},{LogLevel}] 64 | 65 | http-request ^https?:\/\/app\.bili(bili\.com|api\.net)\/x\/v2\/space\? script-path=https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js, tag=📺 BiliBili.Global.space.app.json, argument=[{ForceHost},{Locales},{Proxies.CHN},{Proxies.HKG},{Proxies.MAC},{Proxies.TWN},{LogLevel}] 66 | http-request ^https?:\/\/api\.bili(bili\.com|api\.net)\/x\/space\/wbi\/acc\/info\? script-path=https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js, tag=📺 BiliBili.Global.space.wbi.json, argument=[{ForceHost},{Locales},{Proxies.CHN},{Proxies.HKG},{Proxies.MAC},{Proxies.TWN},{LogLevel}] 67 | http-request ^https?:\/\/api\.bili(bili\.com|api\.net)\/x\/space\/acc\/info\? script-path=https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js, tag=📺 BiliBili.Global.space.pc.json, argument=[{ForceHost},{Locales},{Proxies.CHN},{Proxies.HKG},{Proxies.MAC},{Proxies.TWN},{LogLevel}] 68 | 69 | //Modified 70 | http-response ^https?:\/\/app\.bilibili\.com\/x\/resource\/show\/skin\? requires-body=1, script-path=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/BiliBili.Modified.response.js, tag=📺 BiliBili.Modified.x.resource.show.skin, argument= 71 | http-response ^https:\/\/app\.bilibili\.com\/x\/v2\/(account\/(myinfo|mine)|space)([\/?]|$) requires-body=1, script-path=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/BiliBili.Modified.response.js, tag=📺 BiliBili.Modified.x.v2, argument= 72 | http-response ^https:\/\/api\.bilibili\.com\/x\/vip\/(web\/vip_center\/combine|price\/panel\/lexi|top_panel_info) requires-body=1, script-path=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/BiliBili.Modified.response.js, tag=📺 BiliBili.Modified.x.vip, argument= 73 | 74 | [MitM] 75 | hostname = manga.bilibili.com, api.live.bilibili.com, api.vc.bilibili.com, www.bilibili.com, app.bilibili.com, app.biliapi.net, search.bilibili.com, api.bilibili.com, api.global.bilibili.com, api.biliapi.net, grpc.biliapi.net 76 | h2 = true -------------------------------------------------------------------------------- /modules/BiliBili.Series.sgmodule: -------------------------------------------------------------------------------- 1 | #!name=📺 BiliBili: 🍟 Series 2 | #!desc=哔哩哔哩:🍟整点薯条系列 3 | #!openUrl=http://boxjs.com/#/app/BiliBili.clydetime.sub 4 | #!author=VirgilClyne, MartinsKing 5 | #!manual=https://manual.biliuniverse.io 6 | #!icon=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/database/icon_Avatar.png 7 | #!category= MK 8 | 9 | [URL Rewrite] 10 | # 去除搜索中的默认关键词 11 | ^https?:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.app\.interface\.v1\.Search\/DefaultWords$ - reject 12 | 13 | [Map Local] 14 | # 去除搜索中的大家都在搜 15 | ^https?:\/\/api\.vc\.bilibili\.com\/search_svr\/v\d\/Search\/recommend_words data-type=text data="{}" header="application/json" 16 | # 去除动态中的话题 17 | ^https?:\/\/api\.vc\.bilibili\.com\/topic_svr\/v1\/topic_svr data-type=text data="{}" header="application/json" 18 | # 去除动态中的最常访问 19 | ^https?:\/\/api\.vc\.bilibili\.com\/dynamic_svr\/v1\/dynamic_svr\/mix_uplist data-type=text data="{}" header="application/json" 20 | # 可能的一些推广(beta) 21 | ^https?:\/\/api\.bili(bili\.com|api\.net)\/pgc\/season\/app\/related\/recommend\? data-type=text data="{}" header="application/json" 22 | # BiliBili漫画去广告 23 | ^https?:\/\/manga\.bilibili\.com\/twirp\/comic\.v\d\.Comic\/Flash data-type=text data="{}" header="application/json" 24 | ^https?:\/\/manga\.bilibili\.com\/twirp\/comic\.v\d\.Comic\/ListFlash data-type=text data="{}" header="application/json" 25 | ^https?:\/\/api\.live\.bilibili\.com\/xlive\/e-commerce-interface\/v1\/ecommerce-user\/get_shopping_info\? data-type=text data="{}" header="application/json" 26 | 27 | [Script] 28 | //Enhanced 29 | 📺 BiliBili.Enhanced.x.resource.show.tab.v2 = type=http-response, pattern=^https?:\/\/app\.bili(bili\.com|api\.net)\/x\/resource\/show\/tab\/v2\?, requires-body=1, script-path=https://github.com/BiliUniverse/Enhanced/releases/latest/download/response.bundle.js, argument=Home.Tab="{{{Home.Tab}}}"&Home.Tab_default="{{{Home.Tab_default}}}"&Home.Top_left="{{{Home.Top_left}}}"&Home.Top="{{{Home.Top}}}"&Bottom="{{{Bottom}}}"&LogLevel="{{{LogLevel}}}" 30 | 📺 BiliBili.Enhanced.x.v2.account.mine = type=http-response, pattern=^https?:\/\/app\.bili(bili\.com|api\.net)\/x\/v2\/account\/mine(\/ipad)?\?, requires-body=1, script-path=https://github.com/BiliUniverse/Enhanced/releases/latest/download/response.bundle.js, argument=Home.Tab="{{{Home.Tab}}}"&Home.Tab_default="{{{Home.Tab_default}}}"&Home.Top_left="{{{Home.Top_left}}}"&Home.Top="{{{Home.Top}}}"&Bottom="{{{Bottom}}}"&LogLevel="{{{LogLevel}}}" 31 | 📺 BiliBili.Enhanced.x.v2.region.index = type=http-response, pattern=^https?:\/\/app\.bili(bili\.com|api\.net)\/x\/v2\/region\/index\?, requires-body=1, script-path=https://github.com/BiliUniverse/Enhanced/releases/latest/download/response.bundle.js, argument=Home.Tab="{{{Home.Tab}}}"&Home.Tab_default="{{{Home.Tab_default}}}"&Home.Top_left="{{{Home.Top_left}}}"&Home.Top="{{{Home.Top}}}"&Bottom="{{{Bottom}}}"&LogLevel="{{{LogLevel}}}" 32 | 📺 BiliBili.Enhanced.x.v2.channel.region.list = type=http-response, pattern=^https?:\/\/app\.bili(bili\.com|api\.net)\/x\/v2\/channel\/region\/list\?, requires-body=1, script-path=https://github.com/BiliUniverse/Enhanced/releases/latest/download/response.bundle.js, argument=Home.Tab="{{{Home.Tab}}}"&Home.Tab_default="{{{Home.Tab_default}}}"&Home.Top_left="{{{Home.Top_left}}}"&Home.Top="{{{Home.Top}}}"&Bottom="{{{Bottom}}}"&LogLevel="{{{LogLevel}}}" 33 | 34 | //ADBlock 35 | 📺 BiliBili.ADBlock.feed.index.request.json = type=http-request,pattern=^https?:\/\/app\.bili(bili\.com|api\.net)\/x\/v2\/feed\/index\?, engine=webview, script-path=https://github.com/BiliUniverse/ADBlock/releases/latest/download/request.bundle.js, argument=Splash="{{{Splash}}}"&Feed.AD="{{{Feed.AD}}}"&Feed.Activity="{{{Feed.Activity}}}"&Feed.Vertical="{{{Feed.Vertical}}}"&Feed.BlockUpLiveList="{{{Feed.BlockUpLiveList}}}"&Feed.Story="{{{Feed.Story}}}"&Search.AD="{{{Search.AD}}}"&Search.HotSearch="{{{Search.HotSearch}}}"&PGC.AD="{{{PGC.AD}}}"&Xlive.AD="{{{Xlive.AD}}}"&Dynamic.HotTopics="{{{Dynamic.HotTopics}}}"&Dynamic.MostVisited="{{{Dynamic.MostVisited}}}"&Dynamic.AdCard="{{{Dynamic.AdCard}}}"&View.AD="{{{View.AD}}}"&DM.Command="{{{DM.Command}}}"&DM.Colorful="{{{DM.Colorful}}}"&Reply.AD="{{{Reply.AD}}}"&LogLevel="{{{LogLevel}}}" 36 | 📺 BiliBili.ADBlock.response.json = type=http-response, pattern=^https?:\/\/app\.bili(bili\.com|api\.net)\/x\/v2\/(splash\/(brand\/list|event\/list2|list|show)|feed\/index(\/story)?|search\/square), requires-body=1, engine=webview, script-path=https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js, argument=Splash="{{{Splash}}}"&Feed.AD="{{{Feed.AD}}}"&Feed.Activity="{{{Feed.Activity}}}"&Feed.Vertical="{{{Feed.Vertical}}}"&Feed.BlockUpLiveList="{{{Feed.BlockUpLiveList}}}"&Feed.Story="{{{Feed.Story}}}"&Search.AD="{{{Search.AD}}}"&Search.HotSearch="{{{Search.HotSearch}}}"&PGC.AD="{{{PGC.AD}}}"&Xlive.AD="{{{Xlive.AD}}}"&Dynamic.HotTopics="{{{Dynamic.HotTopics}}}"&Dynamic.MostVisited="{{{Dynamic.MostVisited}}}"&Dynamic.AdCard="{{{Dynamic.AdCard}}}"&View.AD="{{{View.AD}}}"&DM.Command="{{{DM.Command}}}"&DM.Colorful="{{{DM.Colorful}}}"&Reply.AD="{{{Reply.AD}}}"&LogLevel="{{{LogLevel}}}" 37 | 📺 BiliBili.ADBlock.response.json = type=http-response, pattern=^https?:\/\/api\.bilibili\.com\/x\/web-interface\/wbi\/index\/top\/feed\/rcmd\?, requires-body=1, engine=webview, script-path=https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js, argument=Splash="{{{Splash}}}"&Feed.AD="{{{Feed.AD}}}"&Feed.Activity="{{{Feed.Activity}}}"&Feed.Vertical="{{{Feed.Vertical}}}"&Feed.BlockUpLiveList="{{{Feed.BlockUpLiveList}}}"&Feed.Story="{{{Feed.Story}}}"&Search.AD="{{{Search.AD}}}"&Search.HotSearch="{{{Search.HotSearch}}}"&PGC.AD="{{{PGC.AD}}}"&Xlive.AD="{{{Xlive.AD}}}"&Dynamic.HotTopics="{{{Dynamic.HotTopics}}}"&Dynamic.MostVisited="{{{Dynamic.MostVisited}}}"&Dynamic.AdCard="{{{Dynamic.AdCard}}}"&View.AD="{{{View.AD}}}"&DM.Command="{{{DM.Command}}}"&DM.Colorful="{{{DM.Colorful}}}"&Reply.AD="{{{Reply.AD}}}"&LogLevel="{{{LogLevel}}}" 38 | 📺 BiliBili.ADBlock.pgc.page.response.json = type=http-response, pattern=^https?:\/\/api\.bili(bili\.com|api\.net)\/pgc\/page\/(bangumi|cinema\/tab\?), requires-body=1, engine=webview, script-path=https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js, argument=Splash="{{{Splash}}}"&Feed.AD="{{{Feed.AD}}}"&Feed.Activity="{{{Feed.Activity}}}"&Feed.Vertical="{{{Feed.Vertical}}}"&Feed.BlockUpLiveList="{{{Feed.BlockUpLiveList}}}"&Feed.Story="{{{Feed.Story}}}"&Search.AD="{{{Search.AD}}}"&Search.HotSearch="{{{Search.HotSearch}}}"&PGC.AD="{{{PGC.AD}}}"&Xlive.AD="{{{Xlive.AD}}}"&Dynamic.HotTopics="{{{Dynamic.HotTopics}}}"&Dynamic.MostVisited="{{{Dynamic.MostVisited}}}"&Dynamic.AdCard="{{{Dynamic.AdCard}}}"&View.AD="{{{View.AD}}}"&DM.Command="{{{DM.Command}}}"&DM.Colorful="{{{DM.Colorful}}}"&Reply.AD="{{{Reply.AD}}}"&LogLevel="{{{LogLevel}}}" 39 | 📺 BiliBili.ADBlock.app-room.response.json = type=http-response, pattern=^https?:\/\/api\.live\.bilibili\.com\/xlive\/app-room\/v1\/index\/getInfoByRoom, requires-body=1, engine=webview, script-path=https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js, argument=Splash="{{{Splash}}}"&Feed.AD="{{{Feed.AD}}}"&Feed.Activity="{{{Feed.Activity}}}"&Feed.Vertical="{{{Feed.Vertical}}}"&Feed.BlockUpLiveList="{{{Feed.BlockUpLiveList}}}"&Feed.Story="{{{Feed.Story}}}"&Search.AD="{{{Search.AD}}}"&Search.HotSearch="{{{Search.HotSearch}}}"&PGC.AD="{{{PGC.AD}}}"&Xlive.AD="{{{Xlive.AD}}}"&Dynamic.HotTopics="{{{Dynamic.HotTopics}}}"&Dynamic.MostVisited="{{{Dynamic.MostVisited}}}"&Dynamic.AdCard="{{{Dynamic.AdCard}}}"&View.AD="{{{View.AD}}}"&DM.Command="{{{DM.Command}}}"&DM.Colorful="{{{DM.Colorful}}}"&Reply.AD="{{{Reply.AD}}}"&LogLevel="{{{LogLevel}}}" 40 | 📺 BiliBili.ADBlock.view.response.grpc = type=http-response, pattern=^https?:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.app\.(view|viewunite)\.v1\.View\/(View|TFInfo|RelatesFeed)$, requires-body=1, binary-body-mode=1, engine=webview, max-size=262144, script-path=https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js, argument=Splash="{{{Splash}}}"&Feed.AD="{{{Feed.AD}}}"&Feed.Activity="{{{Feed.Activity}}}"&Feed.Vertical="{{{Feed.Vertical}}}"&Feed.BlockUpLiveList="{{{Feed.BlockUpLiveList}}}"&Feed.Story="{{{Feed.Story}}}"&Search.AD="{{{Search.AD}}}"&Search.HotSearch="{{{Search.HotSearch}}}"&PGC.AD="{{{PGC.AD}}}"&Xlive.AD="{{{Xlive.AD}}}"&Dynamic.HotTopics="{{{Dynamic.HotTopics}}}"&Dynamic.MostVisited="{{{Dynamic.MostVisited}}}"&Dynamic.AdCard="{{{Dynamic.AdCard}}}"&View.AD="{{{View.AD}}}"&DM.Command="{{{DM.Command}}}"&DM.Colorful="{{{DM.Colorful}}}"&Reply.AD="{{{Reply.AD}}}"&LogLevel="{{{LogLevel}}}" 41 | 📺 BiliBili.ADBlock.dynamic.response.grpc = type=http-response, pattern=^https?:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.app\.dynamic\.v2\.Dynamic\/Dyn(All|Video)$, requires-body=1, binary-body-mode=1, engine=webview, script-path=https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js, argument=Splash="{{{Splash}}}"&Feed.AD="{{{Feed.AD}}}"&Feed.Activity="{{{Feed.Activity}}}"&Feed.Vertical="{{{Feed.Vertical}}}"&Feed.BlockUpLiveList="{{{Feed.BlockUpLiveList}}}"&Feed.Story="{{{Feed.Story}}}"&Search.AD="{{{Search.AD}}}"&Search.HotSearch="{{{Search.HotSearch}}}"&PGC.AD="{{{PGC.AD}}}"&Xlive.AD="{{{Xlive.AD}}}"&Dynamic.HotTopics="{{{Dynamic.HotTopics}}}"&Dynamic.MostVisited="{{{Dynamic.MostVisited}}}"&Dynamic.AdCard="{{{Dynamic.AdCard}}}"&View.AD="{{{View.AD}}}"&DM.Command="{{{DM.Command}}}"&DM.Colorful="{{{DM.Colorful}}}"&Reply.AD="{{{Reply.AD}}}"&LogLevel="{{{LogLevel}}}" 42 | 📺 BiliBili.ADBlock.playurl.response.grpc = type=http-response, pattern=^https?:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.app\.playurl\.v1\.PlayURL\/PlayView$, requires-body=1, binary-body-mode=1, engine=webview, script-path=https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js, argument=Splash="{{{Splash}}}"&Feed.AD="{{{Feed.AD}}}"&Feed.Activity="{{{Feed.Activity}}}"&Feed.Vertical="{{{Feed.Vertical}}}"&Feed.BlockUpLiveList="{{{Feed.BlockUpLiveList}}}"&Feed.Story="{{{Feed.Story}}}"&Search.AD="{{{Search.AD}}}"&Search.HotSearch="{{{Search.HotSearch}}}"&PGC.AD="{{{PGC.AD}}}"&Xlive.AD="{{{Xlive.AD}}}"&Dynamic.HotTopics="{{{Dynamic.HotTopics}}}"&Dynamic.MostVisited="{{{Dynamic.MostVisited}}}"&Dynamic.AdCard="{{{Dynamic.AdCard}}}"&View.AD="{{{View.AD}}}"&DM.Command="{{{DM.Command}}}"&DM.Colorful="{{{DM.Colorful}}}"&Reply.AD="{{{Reply.AD}}}"&LogLevel="{{{LogLevel}}}" 43 | 📺 BiliBili.ADBlock.search.response.grpc = type=http-response, pattern=^https?:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.polymer\.app\.search\.v1\.Search\/SearchAll$, requires-body=1, binary-body-mode=1, engine=webview, script-path=https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js, argument=Splash="{{{Splash}}}"&Feed.AD="{{{Feed.AD}}}"&Feed.Activity="{{{Feed.Activity}}}"&Feed.Vertical="{{{Feed.Vertical}}}"&Feed.BlockUpLiveList="{{{Feed.BlockUpLiveList}}}"&Feed.Story="{{{Feed.Story}}}"&Search.AD="{{{Search.AD}}}"&Search.HotSearch="{{{Search.HotSearch}}}"&PGC.AD="{{{PGC.AD}}}"&Xlive.AD="{{{Xlive.AD}}}"&Dynamic.HotTopics="{{{Dynamic.HotTopics}}}"&Dynamic.MostVisited="{{{Dynamic.MostVisited}}}"&Dynamic.AdCard="{{{Dynamic.AdCard}}}"&View.AD="{{{View.AD}}}"&DM.Command="{{{DM.Command}}}"&DM.Colorful="{{{DM.Colorful}}}"&Reply.AD="{{{Reply.AD}}}"&LogLevel="{{{LogLevel}}}" 44 | 📺 BiliBili.ADBlock.dm.response.grpc = type=http-response, pattern=^https:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.community\.service\.dm\.v1\.DM\/(DmView|DmSegMobile), requires-body=1, binary-body-mode=1, engine=webview, script-path=https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js, argument=Splash="{{{Splash}}}"&Feed.AD="{{{Feed.AD}}}"&Feed.Activity="{{{Feed.Activity}}}"&Feed.Vertical="{{{Feed.Vertical}}}"&Feed.BlockUpLiveList="{{{Feed.BlockUpLiveList}}}"&Feed.Story="{{{Feed.Story}}}"&Search.AD="{{{Search.AD}}}"&Search.HotSearch="{{{Search.HotSearch}}}"&PGC.AD="{{{PGC.AD}}}"&Xlive.AD="{{{Xlive.AD}}}"&Dynamic.HotTopics="{{{Dynamic.HotTopics}}}"&Dynamic.MostVisited="{{{Dynamic.MostVisited}}}"&Dynamic.AdCard="{{{Dynamic.AdCard}}}"&View.AD="{{{View.AD}}}"&DM.Command="{{{DM.Command}}}"&DM.Colorful="{{{DM.Colorful}}}"&Reply.AD="{{{Reply.AD}}}"&LogLevel="{{{LogLevel}}}" 45 | 📺 BiliBili.ADBlock.interface.response.grpc = type=http-response, pattern=^https:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.app\.interface\.v1\.Teenagers\/ModeStatus, requires-body=1, binary-body-mode=1, engine=webview, script-path=https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js, argument=Splash="{{{Splash}}}"&Feed.AD="{{{Feed.AD}}}"&Feed.Activity="{{{Feed.Activity}}}"&Feed.Vertical="{{{Feed.Vertical}}}"&Feed.BlockUpLiveList="{{{Feed.BlockUpLiveList}}}"&Feed.Story="{{{Feed.Story}}}"&Search.AD="{{{Search.AD}}}"&Search.HotSearch="{{{Search.HotSearch}}}"&PGC.AD="{{{PGC.AD}}}"&Xlive.AD="{{{Xlive.AD}}}"&Dynamic.HotTopics="{{{Dynamic.HotTopics}}}"&Dynamic.MostVisited="{{{Dynamic.MostVisited}}}"&Dynamic.AdCard="{{{Dynamic.AdCard}}}"&View.AD="{{{View.AD}}}"&DM.Command="{{{DM.Command}}}"&DM.Colorful="{{{DM.Colorful}}}"&Reply.AD="{{{Reply.AD}}}"&LogLevel="{{{LogLevel}}}" 46 | 📺 BiliBili.ADBlock.reply.response.grpc = type=http-response, pattern=^https:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.main\.community\.reply\.v1\.Reply\/MainList, requires-body=1, binary-body-mode=1, engine=webview, script-path=https://github.com/BiliUniverse/ADBlock/releases/latest/download/response.bundle.js, argument=Splash="{{{Splash}}}"&Feed.AD="{{{Feed.AD}}}"&Feed.Activity="{{{Feed.Activity}}}"&Feed.Vertical="{{{Feed.Vertical}}}"&Feed.BlockUpLiveList="{{{Feed.BlockUpLiveList}}}"&Feed.Story="{{{Feed.Story}}}"&Search.AD="{{{Search.AD}}}"&Search.HotSearch="{{{Search.HotSearch}}}"&PGC.AD="{{{PGC.AD}}}"&Xlive.AD="{{{Xlive.AD}}}"&Dynamic.HotTopics="{{{Dynamic.HotTopics}}}"&Dynamic.MostVisited="{{{Dynamic.MostVisited}}}"&Dynamic.AdCard="{{{Dynamic.AdCard}}}"&View.AD="{{{View.AD}}}"&DM.Command="{{{DM.Command}}}"&DM.Colorful="{{{DM.Colorful}}}"&Reply.AD="{{{Reply.AD}}}"&LogLevel="{{{LogLevel}}}" 47 | 48 | //Global 49 | 📺 BiliBili.Global.bangumi.play.html = type=http-request, pattern=^https?:\/\/www\.bilibili\.com\/bangumi\/play\/(ss|ep)\d+\/?, ability=http-client-policy, script-path=https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js, argument=ForceHost="{{{ForceHost}}}"&Locales="{{{Locales}}}"&Proxies.CHN="{{{Proxies.CHN}}}"&Proxies.HKG="{{{Proxies.HKG}}}"&Proxies.MAC="{{{Proxies.MAC}}}"&Proxies.TWN="{{{Proxies.TWN}}}"&LogLevel="{{{LogLevel}}}" 50 | 51 | 📺 BiliBili.Global.viewunite.v1.View.grpc = type=http-request, pattern=^https?:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.app\.viewunite\.v1\.View\/View$, requires-body=1, binary-body-mode=1, engine=webview, ability=http-client-policy, script-path=https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js, argument=ForceHost="{{{ForceHost}}}"&Locales="{{{Locales}}}"&Proxies.CHN="{{{Proxies.CHN}}}"&Proxies.HKG="{{{Proxies.HKG}}}"&Proxies.MAC="{{{Proxies.MAC}}}"&Proxies.TWN="{{{Proxies.TWN}}}"&LogLevel="{{{LogLevel}}}" 52 | 📺 BiliBili.Global.viewunite.v1.View.grpc = type=http-response, pattern=^https?:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.app\.viewunite\.v1\.View\/View$, requires-body=1, binary-body-mode=1, engine=webview, max-size=262144, script-path=https://github.com/BiliUniverse/Global/releases/latest/download/response.bundle.js, argument=ForceHost="{{{ForceHost}}}"&Locales="{{{Locales}}}"&Proxies.CHN="{{{Proxies.CHN}}}"&Proxies.HKG="{{{Proxies.HKG}}}"&Proxies.MAC="{{{Proxies.MAC}}}"&Proxies.TWN="{{{Proxies.TWN}}}"&LogLevel="{{{LogLevel}}}" 53 | 📺 BiliBili.Global.season.json = type=http-request, pattern=^https?:\/\/api\.bili(bili\.com|api\.net)\/pgc\/view\/(v2\/app|web|pc)\/season\?, ability=http-client-policy, script-path=https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js, argument=ForceHost="{{{ForceHost}}}"&Locales="{{{Locales}}}"&Proxies.CHN="{{{Proxies.CHN}}}"&Proxies.HKG="{{{Proxies.HKG}}}"&Proxies.MAC="{{{Proxies.MAC}}}"&Proxies.TWN="{{{Proxies.TWN}}}"&LogLevel="{{{LogLevel}}}" 54 | 📺 BiliBili.Global.season.json = type=http-response, pattern=^https?:\/\/api\.bili(bili\.com|api\.net)\/pgc\/view\/(v2\/app|web|pc)\/season\?, requires-body=1, max-size=262144, script-path=https://github.com/BiliUniverse/Global/releases/latest/download/response.bundle.js, argument=ForceHost="{{{ForceHost}}}"&Locales="{{{Locales}}}"&Proxies.CHN="{{{Proxies.CHN}}}"&Proxies.HKG="{{{Proxies.HKG}}}"&Proxies.MAC="{{{Proxies.MAC}}}"&Proxies.TWN="{{{Proxies.TWN}}}"&LogLevel="{{{LogLevel}}}" 55 | 56 | 📺 BiliBili.Global.playerunite.v1.Player.grpc = type=http-request, pattern=^https?:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.app\.playerunite\.v1\.Player\/PlayViewUnite$, requires-body=1, binary-body-mode=1, engine=webview, script-path=https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js, argument=ForceHost="{{{ForceHost}}}"&Locales="{{{Locales}}}"&Proxies.CHN="{{{Proxies.CHN}}}"&Proxies.HKG="{{{Proxies.HKG}}}"&Proxies.MAC="{{{Proxies.MAC}}}"&Proxies.TWN="{{{Proxies.TWN}}}"&LogLevel="{{{LogLevel}}}" 57 | 📺 BiliBili.Global.player.v2.PlayURL.grpc = type=http-request, pattern=^https?:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.pgc\.gateway\.player\.v2\.PlayURL\/PlayView$, requires-body=1, binary-body-mode=1, engine=webview, script-path=https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js, argument=ForceHost="{{{ForceHost}}}"&Locales="{{{Locales}}}"&Proxies.CHN="{{{Proxies.CHN}}}"&Proxies.HKG="{{{Proxies.HKG}}}"&Proxies.MAC="{{{Proxies.MAC}}}"&Proxies.TWN="{{{Proxies.TWN}}}"&LogLevel="{{{LogLevel}}}" 58 | 📺 BiliBili.Global.player.playurl.json = type=http-request, pattern=^https?:\/\/api\.bili(bili\.com|api\.net)\/pgc\/player\/(api|web)\/playurl(\/html5)?\?, ability=http-client-policy, script-path=https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js, argument=ForceHost="{{{ForceHost}}}"&Locales="{{{Locales}}}"&Proxies.CHN="{{{Proxies.CHN}}}"&Proxies.HKG="{{{Proxies.HKG}}}"&Proxies.MAC="{{{Proxies.MAC}}}"&Proxies.TWN="{{{Proxies.TWN}}}"&LogLevel="{{{LogLevel}}}" 59 | 📺 BiliBili.Global.player.v2.playurl.json = type=http-request, pattern=^https?:\/\/api\.bili(bili\.com|api\.net)\/pgc\/player\/web\/v2\/playurl\?, ability=http-client-policy, script-path=https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js, argument=ForceHost="{{{ForceHost}}}"&Locales="{{{Locales}}}"&Proxies.CHN="{{{Proxies.CHN}}}"&Proxies.HKG="{{{Proxies.HKG}}}"&Proxies.MAC="{{{Proxies.MAC}}}"&Proxies.TWN="{{{Proxies.TWN}}}"&LogLevel="{{{LogLevel}}}" 60 | 61 | 📺 BiliBili.Global.search.html = type=http-request, pattern=^https?:\/\/search\.bilibili\.com\/all\?, script-path=https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js, argument=ForceHost="{{{ForceHost}}}"&Locales="{{{Locales}}}"&Proxies.CHN="{{{Proxies.CHN}}}"&Proxies.HKG="{{{Proxies.HKG}}}"&Proxies.MAC="{{{Proxies.MAC}}}"&Proxies.TWN="{{{Proxies.TWN}}}"&LogLevel="{{{LogLevel}}}" 62 | 📺 BiliBili.Global.search.grpc = type=http-request, pattern=^https?:\/\/(grpc|app)\.bili(bili\.com|api\.net)\/bilibili\.polymer\.app\.search\.v1\.Search\/(SearchAll|SearchByType)$, requires-body=1, binary-body-mode=1, engine=webview, script-path=https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js, argument=ForceHost="{{{ForceHost}}}"&Locales="{{{Locales}}}"&Proxies.CHN="{{{Proxies.CHN}}}"&Proxies.HKG="{{{Proxies.HKG}}}"&Proxies.MAC="{{{Proxies.MAC}}}"&Proxies.TWN="{{{Proxies.TWN}}}"&LogLevel="{{{LogLevel}}}" 63 | 📺 BiliBili.Global.search.app.json = type=http-request, pattern=^https?:\/\/app\.bili(bili\.com|api\.net)\/x\/v2\/search(\/type)?\?, script-path=https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js, argument=ForceHost="{{{ForceHost}}}"&Locales="{{{Locales}}}"&Proxies.CHN="{{{Proxies.CHN}}}"&Proxies.HKG="{{{Proxies.HKG}}}"&Proxies.MAC="{{{Proxies.MAC}}}"&Proxies.TWN="{{{Proxies.TWN}}}"&LogLevel="{{{LogLevel}}}" 64 | 📺 BiliBili.Global.search.wbi.json = type=http-request, pattern=^https?:\/\/api\.bili(bili\.com|api\.net)\/x\/web-interface\/wbi\/search\/(all\/v2|type)\?, script-path=https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js, argument=ForceHost="{{{ForceHost}}}"&Locales="{{{Locales}}}"&Proxies.CHN="{{{Proxies.CHN}}}"&Proxies.HKG="{{{Proxies.HKG}}}"&Proxies.MAC="{{{Proxies.MAC}}}"&Proxies.TWN="{{{Proxies.TWN}}}"&LogLevel="{{{LogLevel}}}" 65 | 📺 BiliBili.Global.search.pc.json = type=http-request, pattern=^https?:\/\/api\.bili(bili\.com|api\.net)\/x\/web-interface\/search\/(all\/v2|type)\?, script-path=https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js, argument=ForceHost="{{{ForceHost}}}"&Locales="{{{Locales}}}"&Proxies.CHN="{{{Proxies.CHN}}}"&Proxies.HKG="{{{Proxies.HKG}}}"&Proxies.MAC="{{{Proxies.MAC}}}"&Proxies.TWN="{{{Proxies.TWN}}}"&LogLevel="{{{LogLevel}}}" 66 | 67 | 📺 BiliBili.Global.space.app.json = type=http-request, pattern=^https?:\/\/app\.bili(bili\.com|api\.net)\/x\/v2\/space\?, script-path=https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js, argument=ForceHost="{{{ForceHost}}}"&Locales="{{{Locales}}}"&Proxies.CHN="{{{Proxies.CHN}}}"&Proxies.HKG="{{{Proxies.HKG}}}"&Proxies.MAC="{{{Proxies.MAC}}}"&Proxies.TWN="{{{Proxies.TWN}}}"&LogLevel="{{{LogLevel}}}" 68 | 📺 BiliBili.Global.space.wbi.json = type=http-request, pattern=^https?:\/\/api\.bili(bili\.com|api\.net)\/x\/space\/wbi\/acc\/info\?, script-path=https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js, argument=ForceHost="{{{ForceHost}}}"&Locales="{{{Locales}}}"&Proxies.CHN="{{{Proxies.CHN}}}"&Proxies.HKG="{{{Proxies.HKG}}}"&Proxies.MAC="{{{Proxies.MAC}}}"&Proxies.TWN="{{{Proxies.TWN}}}"&LogLevel="{{{LogLevel}}}" 69 | 📺 BiliBili.Global.space.pc.json = type=http-request, pattern=^https?:\/\/api\.bili(bili\.com|api\.net)\/x\/space\/acc\/info\?, script-path=https://github.com/BiliUniverse/Global/releases/latest/download/request.bundle.js, argument=ForceHost="{{{ForceHost}}}"&Locales="{{{Locales}}}"&Proxies.CHN="{{{Proxies.CHN}}}"&Proxies.HKG="{{{Proxies.HKG}}}"&Proxies.MAC="{{{Proxies.MAC}}}"&Proxies.TWN="{{{Proxies.TWN}}}"&LogLevel="{{{LogLevel}}}" 70 | 71 | //Modified 72 | 📺 BiliBili.Modified.x.resource.show.skin = type=http-response, pattern=^https?:\/\/app\.bilibili\.com\/x\/resource\/show\/skin\?, requires-body=1, script-path=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/BiliBili.Modified.response.js, argument= 73 | 📺 BiliBili.Modified.x.v2 = type=http-response, pattern=^https:\/\/app\.bilibili\.com\/x\/v2\/(account\/(myinfo|mine)|space)([\/?]|$), requires-body=1, script-path=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/BiliBili.Modified.response.js, argument= 74 | 📺 BiliBili.Modified.x.vip = type=http-response, pattern=^https:\/\/api\.bilibili\.com\/x\/vip\/(web\/vip_center\/combine|price\/panel\/lexi|top_panel_info), requires-body=1, script-path=https://raw.githubusercontent.com/ClydeTime/BiliBili/main/js/BiliBili.Modified.response.js, argument= 75 | 76 | [MITM] 77 | hostname = %APPEND% manga.bilibili.com, api.live.bilibili.com, api.vc.bilibili.com, www.bilibili.com, search.bilibili.com, app.bilibili.com, app.biliapi.net, api.bilibili.com, api.biliapi.net, grpc.biliapi.net 78 | h2 = true -------------------------------------------------------------------------------- /database/BiliBili.Modified.json: -------------------------------------------------------------------------------- 1 | { 2 | "Settings": 3 | { 4 | "Switch": true, 5 | "Skin": 6 | { 7 | "user_equip": 1682863365001, 8 | "load_equip": 32263 9 | }, 10 | "Private":{ 11 | "coin":"", 12 | "bcoin":"", 13 | "follower":"", 14 | "level":"", 15 | "like":"", 16 | "vip":false 17 | } 18 | }, 19 | "Configs": 20 | { 21 | "Skin": 22 | { 23 | "user_equip": 24 | [ 25 | { 26 | "id": 2529, 27 | "name": "初音未来-日版", 28 | "preview": "https://i0.hdslb.com/bfs/garb/item/2fa16380b31b3cee6c889d645f2699de8e9d9faf.jpg", 29 | "ver": 1625570999, 30 | "package_url": "https://i0.hdslb.com/bfs/garb/zip/bbd834e1f783cef686569ff3cf94bdc3bc57f9e8.zip", 31 | "package_md5": "b251980ad26b33b8c4a0a64049b14daf", 32 | "data": 33 | { 34 | "color_mode": "light", 35 | "color": "#212121", 36 | "color_second_page": "#fff2d2", 37 | "side_bg_color": "#ffe7ae", 38 | "tail_color": "#996c00", 39 | "tail_color_selected": "#0d6872", 40 | "tail_icon_ani": true, 41 | "tail_icon_ani_mode": "once", 42 | "head_myself_mp4_play": "once", 43 | "pub_btn_shade_color_top": "#ffaf4c", 44 | "pub_btn_shade_color_bottom": "#ffc37a", 45 | "pub_btn_plus_color": "#fff6df", 46 | "tail_icon_mode": "img" 47 | } 48 | }, 49 | { 50 | "id": 2530, 51 | "name": "初音未来-夜版", 52 | "preview": "https://i0.hdslb.com/bfs/garb/item/51b5a4e7147c4fdcad1bb349e0b6ecd2ba6a82a6.jpg", 53 | "ver": 1625571046, 54 | "package_url": "https://i0.hdslb.com/bfs/garb/zip/14e2f377e601481e2befab34e0773c81886b7232.zip", 55 | "package_md5": "e10f4ff37f3d964c6ecb3f8f2c8434c9", 56 | "data": 57 | { 58 | "color_mode": "dark", 59 | "color": "#ffffff", 60 | "color_second_page": "#4c4974", 61 | "side_bg_color": "#29244d", 62 | "tail_color": "#ffffff", 63 | "tail_color_selected": "#a2f3f7", 64 | "tail_icon_ani": true, 65 | "tail_icon_ani_mode": "once", 66 | "head_myself_mp4_play": "once", 67 | "pub_btn_shade_color_top": "#40b7bb", 68 | "pub_btn_shade_color_bottom": "#8edfe3", 69 | "pub_btn_plus_color": "#4c4975", 70 | "tail_icon_mode": "img" 71 | } 72 | }, 73 | { 74 | "id": 4124, 75 | "name": "良辰美景·不问天", 76 | "preview": "https://i0.hdslb.com/bfs/garb/item/844860e8970ab045a4fd8e5c0923c902df25062f.jpg", 77 | "ver": 1625040105, 78 | "package_url": "https://i0.hdslb.com/bfs/garb/zip/5d83e72e2ca76b4c8c2b14dc7c5eb729d5c25e9a.zip", 79 | "package_md5": "d1ae5d6445a9f12f388a097fe1dde9ad", 80 | "data": 81 | { 82 | "color_mode": "dark", 83 | "color": "#ffffff", 84 | "color_second_page": "#b22d43", 85 | "side_bg_color": "#8a2736", 86 | "tail_color": "#ffbcbc", 87 | "tail_color_selected": "#ffeaab", 88 | "tail_icon_ani": true, 89 | "tail_icon_ani_mode": "once", 90 | "head_myself_mp4_play": "once", 91 | "pub_btn_shade_color_top": "#ffeaab", 92 | "pub_btn_shade_color_bottom": "#ffdbb8", 93 | "pub_btn_plus_color": "#c02e4b", 94 | "tail_icon_mode": "img" 95 | } 96 | }, 97 | { 98 | "id": 32264, 99 | "name": "EveOneCat2", 100 | "preview": "https://i0.hdslb.com/bfs/garb/item/af6ab166af22ed45d429bfde4e3962bb78f270c8.png", 101 | "ver": 1632051567, 102 | "package_url": "https://i0.hdslb.com/bfs/garb/zip/4f047ea64e0659dcbcf70092dd6e30c1eadb9390.zip", 103 | "package_md5": "0f81680da60b12d0ca9ebe869b81e1b1", 104 | "data": 105 | { 106 | "color_mode": "dark", 107 | "color": "#ffffff", 108 | "color_second_page": "#32376b", 109 | "side_bg_color": "#32376b", 110 | "tail_color": "#e9e9e9", 111 | "tail_color_selected": "#fff57a", 112 | "tail_icon_ani": true, 113 | "tail_icon_ani_mode": "once", 114 | "head_myself_mp4_play": "loop", 115 | "pub_btn_shade_color_top": "", 116 | "pub_btn_shade_color_bottom": "", 117 | "pub_btn_plus_color": "", 118 | "tail_icon_mode": "img" 119 | } 120 | }, 121 | { 122 | "id":33459, 123 | "name":"有栖mana", 124 | "preview":"https://i0.hdslb.com/bfs/garb/item/5d98f29bcada07b06e07bc7b61d379111dc70cd0.jpg", 125 | "ver":1639638559, 126 | "package_url":"https://i0.hdslb.com/bfs/garb/zip/a1dc66b63b3e29c7b7b56a257d766cce42c5406b.zip","package_md5":"e63c4df74b0337db58336b7cf4df5a08", 127 | "data": 128 | { 129 | "color_mode":"dark", 130 | "color":"#ffffff", 131 | "color_second_page":"#d54358", 132 | "side_bg_color":"#d54358", 133 | "tail_color":"#2e0505", 134 | "tail_color_selected":"#ff0344", 135 | "tail_icon_ani":true, 136 | "tail_icon_ani_mode":"once", 137 | "head_myself_mp4_play":"once", 138 | "pub_btn_shade_color_top":"", 139 | "pub_btn_shade_color_bottom":"", 140 | "pub_btn_plus_color":"", 141 | "tail_icon_mode":"img" 142 | } 143 | }, 144 | { 145 | "id": 34813, 146 | "name": "嘉然个性装扮2.0", 147 | "preview": "https://i0.hdslb.com/bfs/garb/item/4d280c3ac38059c7c528a629b7e043a90bf5ff91.jpg", 148 | "ver": 1655707875, 149 | "package_url": "https://i0.hdslb.com/bfs/garb/zip/6349c29877c87ffb6967a13e01c17a237380197d.zip", 150 | "package_md5": "80fbc07a421a3dd885b9ec7cf6884f66", 151 | "data": 152 | { 153 | "side_bg_color": "", 154 | "pub_btn_shade_color_top": "", 155 | "color_mode": "dark", 156 | "color_second_page": "#9cbcf5", 157 | "tail_color_selected": "#526fff", 158 | "color": "#ffffff", 159 | "tail_color": "#2648a8", 160 | "pub_btn_shade_color_bottom": "", 161 | "head_myself_mp4_play": "loop", 162 | "tail_icon_ani_mode": "once", 163 | "tail_icon_ani": false, 164 | "tail_icon_mode": "img", 165 | "pub_btn_plus_color": "" 166 | } 167 | }, 168 | { 169 | "id": 34814, 170 | "name": "嘉然个性装扮2.0", 171 | "preview": "https://i0.hdslb.com/bfs/garb/item/c45dd226c6eeee0dc43307995efb0b1529321e0a.jpg", 172 | "ver": 1655707892, 173 | "package_url": "https://i0.hdslb.com/bfs/garb/zip/14d71e4f8fda27e52a3aec6a93b358b5686cbada.zip", 174 | "package_md5": "3522719bc452ad2b0c4562dd8611734a", 175 | "data": 176 | { 177 | "side_bg_color": "", 178 | "pub_btn_shade_color_top": "", 179 | "color_mode": "light", 180 | "color_second_page": "#fec9dd", 181 | "tail_color_selected": "#155fe7", 182 | "color": "#212121", 183 | "tail_color": "#b93668", 184 | "pub_btn_shade_color_bottom": "", 185 | "head_myself_mp4_play": "loop", 186 | "tail_icon_ani_mode": "once", 187 | "tail_icon_ani": false, 188 | "tail_icon_mode": "img", 189 | "pub_btn_plus_color": "" 190 | } 191 | }, 192 | { 193 | "id": 38342, 194 | "name": "萌节六周年装扮", 195 | "preview": "https://i0.hdslb.com/bfs/garb/item/ac688b44a0ebf682b1640f9f63058da93910f79a.jpg", 196 | "ver": 1664203693, 197 | "package_url": "https://i0.hdslb.com/bfs/garb/zip/ceaa31ef56926928071b3c16a7b3752bb18e183e.zip", 198 | "package_md5": "71bc3d7ec18215d44d61fc49b31bf108", 199 | "data": 200 | { 201 | "side_bg_color": "", 202 | "pub_btn_shade_color_top": "", 203 | "color_mode": "light", 204 | "color_second_page": "#85c3fe", 205 | "tail_color_selected": "#8080ef", 206 | "color": "#212121", 207 | "tail_color": "#252525", 208 | "pub_btn_shade_color_bottom": "", 209 | "head_myself_mp4_play": "once", 210 | "tail_icon_ani_mode": "once", 211 | "tail_icon_ani": true, 212 | "tail_icon_mode": "img", 213 | "pub_btn_plus_color": "" 214 | } 215 | }, 216 | { 217 | "id": 39859, 218 | "name": "眠眠兔", 219 | "preview": "https://i0.hdslb.com/bfs/garb/item/aa6cc4ba42eb1ecb978c3c937852e89ea913ef0c.jpg", 220 | "ver": 1667550979, 221 | "package_url": "https://i0.hdslb.com/bfs/garb/zip/2bc9d734bd161ae80e29301952637c2aa9a15e62.zip", 222 | "package_md5": "0d6c7322a49775e73dc8463ae0822ecd", 223 | "data": 224 | { 225 | "color_mode": "light", 226 | "color": "#212121", 227 | "color_second_page": "#7b80ba", 228 | "side_bg_color": "", 229 | "tail_color": "#695785", 230 | "tail_color_selected": "#ffffff", 231 | "tail_icon_ani": true, 232 | "tail_icon_ani_mode": "once", 233 | "head_myself_mp4_play": "once", 234 | "pub_btn_shade_color_top": "", 235 | "pub_btn_shade_color_bottom": "", 236 | "pub_btn_plus_color": "", 237 | "tail_icon_mode": "img" 238 | } 239 | }, 240 | { 241 | "id": 49390, 242 | "name": "提摩西小队第二弹", 243 | "preview": "https://i0.hdslb.com/bfs/garb/item/3f825654a20dc6a936f539ec0d79600422d4c435.jpg", 244 | "ver": 1677753583, 245 | "package_url": "https://i0.hdslb.com/bfs/garb/zip/0598e721e0a42904224d2813ae405da9d5453cf2.zip", 246 | "package_md5": "36a76686dfa20830c3ddb7dfb090db4f", 247 | "data": 248 | { 249 | "color_mode": "dark", 250 | "color": "#ffffff", 251 | "color_second_page": "#819b50", 252 | "side_bg_color": "", 253 | "tail_color": "#fffbde", 254 | "tail_color_selected": "#eaff88", 255 | "tail_icon_ani": true, 256 | "tail_icon_ani_mode": "once", 257 | "head_myself_mp4_play": "once", 258 | "pub_btn_shade_color_top": "", 259 | "pub_btn_shade_color_bottom": "", 260 | "pub_btn_plus_color": "", 261 | "tail_icon_mode": "img" 262 | } 263 | }, 264 | { 265 | "id": 50107, 266 | "name": "灰原哀", 267 | "preview": "https://i0.hdslb.com/bfs/garb/item/6a12360353e80c9e9b2396bf5ae4678eb597d22e.jpg", 268 | "ver": 1680087164, 269 | "package_url": "https://i0.hdslb.com/bfs/garb/zip/e53d3456e925aeb0b32d501fa9a81d9f0a6379d7.zip", 270 | "package_md5": "85ab095b4a27b3611de951f73f0d740a", 271 | "data": 272 | { 273 | "color_mode": "dark", 274 | "color": "#ffffff", 275 | "color_second_page": "#4b2d8d", 276 | "side_bg_color": "", 277 | "tail_color": "#dad6d6", 278 | "tail_color_selected": "#5ce233", 279 | "tail_icon_ani": true, 280 | "tail_icon_ani_mode": "once", 281 | "head_myself_mp4_play": "loop", 282 | "pub_btn_shade_color_top": "", 283 | "pub_btn_shade_color_bottom": "", 284 | "pub_btn_plus_color": "", 285 | "tail_icon_mode": "img" 286 | } 287 | }, 288 | { 289 | "id": 50605, 290 | "name": "铃芽之旅", 291 | "preview": "https://i0.hdslb.com/bfs/garb/item/29fd3ec81a9d970cbc1c918eb9c256ef7442f24e.jpg", 292 | "ver": 1683363152, 293 | "package_url": "https://i0.hdslb.com/bfs/garb/zip/a1d0b1689f5803c2b5fe1015b8996075e5d77f02.zip", 294 | "package_md5": "b116708315b872acb28e33722077cea7", 295 | "data": 296 | { 297 | "color_mode": "dark", 298 | "color": "#ffffff", 299 | "color_second_page": "#3789c0", 300 | "side_bg_color": "", 301 | "tail_color": "#ffffff", 302 | "tail_color_selected": "#00285a", 303 | "tail_icon_ani": true, 304 | "tail_icon_ani_mode": "once", 305 | "head_myself_mp4_play": "once", 306 | "pub_btn_shade_color_top": "", 307 | "pub_btn_shade_color_bottom": "", 308 | "pub_btn_plus_color": "", 309 | "tail_icon_mode": "img" 310 | } 311 | }, 312 | { 313 | "id": 50763, 314 | "name": "有兽焉", 315 | "preview": "https://i0.hdslb.com/bfs/garb/item/60215faa57e4bc2a79a9109e5ced5ea9838f34e7.jpg", 316 | "ver": 1681406718, 317 | "package_url": "https://i0.hdslb.com/bfs/garb/zip/beda39e8106d37a5df698318457aea5057e005e9.zip", 318 | "package_md5": "7102438eb052ab6826e7f82b25526759", 319 | "data": 320 | { 321 | "color_mode": "light", 322 | "color": "#212121", 323 | "color_second_page": "#c5db9c", 324 | "side_bg_color": "", 325 | "tail_color": "#04191e", 326 | "tail_color_selected": "#005a70", 327 | "tail_icon_ani": true, 328 | "tail_icon_ani_mode": "once", 329 | "head_myself_mp4_play": "once", 330 | "pub_btn_shade_color_top": "", 331 | "pub_btn_shade_color_bottom": "", 332 | "pub_btn_plus_color": "", 333 | "tail_icon_mode": "img" 334 | } 335 | }, 336 | { 337 | "id": 50874, 338 | "name": "樱花未来", 339 | "preview": "https://i0.hdslb.com/bfs/garb/item/f148a31f00c195d8f8403061d7a24f376c2ed5b7.jpg", 340 | "ver": 1681469869, 341 | "package_url": "https://i0.hdslb.com/bfs/garb/zip/b8faab964ae2f61671e416cca22bcba546799c6d.zip", 342 | "package_md5": "cb2b384cb6d8e7635a394f6f3100d53a", 343 | "data": 344 | { 345 | "color_mode": "light", 346 | "color": "#ffffff", 347 | "color_second_page": "#ffced1", 348 | "side_bg_color": "", 349 | "tail_color": "#881337", 350 | "tail_color_selected": "#ff3dc1", 351 | "tail_icon_ani": true, 352 | "tail_icon_ani_mode": "once", 353 | "head_myself_mp4_play": "once", 354 | "pub_btn_shade_color_top": "", 355 | "pub_btn_shade_color_bottom": "", 356 | "pub_btn_plus_color": "", 357 | "tail_icon_mode": "img" 358 | } 359 | }, 360 | { 361 | "id": 52484, 362 | "name": "JDG坚定信仰", 363 | "preview": "https://i0.hdslb.com/bfs/garb/item/41e4ccbe678d1e91a58680c3884a1fb60a25d6f6.png", 364 | "ver": 1683352743, 365 | "package_url": "https://i0.hdslb.com/bfs/garb/zip/9bde3318fedc895962461c5582eed05300d40c44.zip", 366 | "package_md5": "08c8a6568afd338b15efcdf5b7798f95", 367 | "data": 368 | { 369 | "color_mode": "dark", 370 | "color": "#ffffff", 371 | "color_second_page": "#c8102e", 372 | "side_bg_color": "", 373 | "tail_color": "#fff5f7", 374 | "tail_color_selected": "#c8102e", 375 | "tail_icon_ani": true, 376 | "tail_icon_ani_mode": "once", 377 | "head_myself_mp4_play": "once", 378 | "pub_btn_shade_color_top": "", 379 | "pub_btn_shade_color_bottom": "", 380 | "pub_btn_plus_color": "", 381 | "tail_icon_mode": "img" 382 | } 383 | }, 384 | { 385 | "id": 59580, 386 | "name": "创作之翼个性主题", 387 | "preview": "https://i0.hdslb.com/bfs/garb/item/320186e70545079eb0f2bce7bea02dca9da4d7f2.png", 388 | "ver": 1695098318, 389 | "package_url": "https://i0.hdslb.com/bfs/garb/zip/23362a35bfdcc5f3e556689045c632c8bb126bb3.zip", 390 | "package_md5": "155279760465acbe213d21b6e4382ad3", 391 | "data": 392 | { 393 | "color_mode": "dark", 394 | "color": "#ffffff", 395 | "color_second_page": "#1a7bbf", 396 | "side_bg_color": "", 397 | "tail_color": "#90ffee", 398 | "tail_color_selected": "#ebffe3", 399 | "tail_icon_ani": true, 400 | "tail_icon_ani_mode": "once", 401 | "head_myself_mp4_play": "loop", 402 | "pub_btn_shade_color_top": "", 403 | "pub_btn_shade_color_bottom": "", 404 | "pub_btn_plus_color": "#6dfff9", 405 | "tail_icon_mode": "img" 406 | } 407 | }, 408 | { 409 | "id": 1679479030001, 410 | "name": "奶蓝梦境", 411 | "preview": "https://i0.hdslb.com/bfs/garb/c8d384c60d5b32a0373f1c7544143faa79a1bcf7.jpg", 412 | "ver": 1679575410, 413 | "package_url": "https://i0.hdslb.com/bfs/garb/zip/1c55154e72c4557ac1e4395d7c4e980b75a52ec9.zip", 414 | "package_md5": "d06e78cc6330dec66db9c791677524af", 415 | "data": 416 | { 417 | "color_mode": "light", 418 | "color": "#000000", 419 | "color_second_page": "#FFFFFF", 420 | "side_bg_color": "", 421 | "tail_color": "#606D90", 422 | "tail_color_selected": "#E980A2", 423 | "tail_icon_ani": false, 424 | "tail_icon_ani_mode": "once", 425 | "head_myself_mp4_play": "loop", 426 | "pub_btn_shade_color_top": "", 427 | "pub_btn_shade_color_bottom": "", 428 | "pub_btn_plus_color": "", 429 | "tail_icon_mode": "img" 430 | } 431 | }, 432 | { 433 | "id": 1680162579001, 434 | "name": "领结猫", 435 | "preview": "https://i0.hdslb.com/bfs/garb/1b8aedd4a4ea7dccbbecd08892aa311e5ea59f83.jpg", 436 | "ver": 1680233134, 437 | "package_url": "https://i0.hdslb.com/bfs/garb/zip/49f66876cef15333c0f73c3e054feb300b631383.zip", 438 | "package_md5": "41209e0d25a96ea61941f8fe92a9eeca", 439 | "data": 440 | { 441 | "color_mode": "dark", 442 | "color": "#ffffff", 443 | "color_second_page": "#010046", 444 | "side_bg_color": "", 445 | "tail_color": "#8A9FC6", 446 | "tail_color_selected": "#051856", 447 | "tail_icon_ani": false, 448 | "tail_icon_ani_mode": "once", 449 | "head_myself_mp4_play": "loop", 450 | "pub_btn_shade_color_top": "", 451 | "pub_btn_shade_color_bottom": "", 452 | "pub_btn_plus_color": "", 453 | "tail_icon_mode": "img" 454 | } 455 | }, 456 | { 457 | "id": 1680348700001, 458 | "name": "幻想乡的日常 第1弹", 459 | "preview": "https://i0.hdslb.com/bfs/garb/41f8974a016ccd8e47bc892d945316e227c6e94b.jpg", 460 | "ver": 1680573803, 461 | "package_url": "https://i0.hdslb.com/bfs/garb/zip/c5d3ceb305754e7b222d67b93ad3de21882c20c4.zip", 462 | "package_md5": "95806a78585ac34276a90d680a8f152a", 463 | "data": 464 | { 465 | "color_mode": "light", 466 | "color": "#000000", 467 | "color_second_page": "#99C9E3", 468 | "side_bg_color": "", 469 | "tail_color": "#7D4E28", 470 | "tail_color_selected": "#B6268C", 471 | "tail_icon_ani": false, 472 | "tail_icon_ani_mode": "once", 473 | "head_myself_mp4_play": "loop", 474 | "pub_btn_shade_color_top": "", 475 | "pub_btn_shade_color_bottom": "", 476 | "pub_btn_plus_color": "", 477 | "tail_icon_mode": "img" 478 | } 479 | }, 480 | { 481 | "id": 1680580240001, 482 | "name": "乐正绫八周年生日纪念", 483 | "preview": "https://i0.hdslb.com/bfs/garb/0eb2b6c4575f231be90b16ae22f8454209ff8220.jpg", 484 | "ver": 1680597997, 485 | "package_url": "https://i0.hdslb.com/bfs/garb/zip/9becf2f86ac3073d22e607cc8a09263ef850d229.zip", 486 | "package_md5": "a5d13b485e47309411affeeeebbc4886", 487 | "data": 488 | { 489 | "color_mode": "dark", 490 | "color": "#ffffff", 491 | "color_second_page": "#1F286D", 492 | "side_bg_color": "", 493 | "tail_color": "#E9E9E9", 494 | "tail_color_selected": "#FFE556", 495 | "tail_icon_ani": false, 496 | "tail_icon_ani_mode": "once", 497 | "head_myself_mp4_play": "loop", 498 | "pub_btn_shade_color_top": "", 499 | "pub_btn_shade_color_bottom": "", 500 | "pub_btn_plus_color": "", 501 | "tail_icon_mode": "img" 502 | } 503 | }, 504 | { 505 | "id": 1680591891001, 506 | "name": "恬豆发芽了", 507 | "preview": "https://i0.hdslb.com/bfs/garb/8d0dfc3140709359fdc2c51cb1268dde4749d97e.jpg", 508 | "ver": 1682263027, 509 | "package_url": "https://i0.hdslb.com/bfs/garb/zip/d4bd126da21434ba31e35d3a7906e410f05c5559.zip", 510 | "package_md5": "409ee27c71a255f163c60321189e4312", 511 | "data": 512 | { 513 | "color_mode": "light", 514 | "color": "#000000", 515 | "color_second_page": "#9ED4FA", 516 | "side_bg_color": "", 517 | "tail_color": "#454433", 518 | "tail_color_selected": "#3283C8", 519 | "tail_icon_ani": false, 520 | "tail_icon_ani_mode": "once", 521 | "head_myself_mp4_play": "loop", 522 | "pub_btn_shade_color_top": "", 523 | "pub_btn_shade_color_bottom": "", 524 | "pub_btn_plus_color": "", 525 | "tail_icon_mode": "img" 526 | } 527 | }, 528 | { 529 | "id": 1682047060001, 530 | "name": "生日快乐", 531 | "preview": "https://i0.hdslb.com/bfs/garb/73bf17dd1e22606a8f065b44f4efafcf0d02b71b.jpg", 532 | "ver": 1682066416, 533 | "package_url": "https://i0.hdslb.com/bfs/garb/zip/03238fa6749db7ba564bdb57ad45826f94ea30ac.zip", 534 | "package_md5": "2bd66f54a4b535fb5b5f9bbee1928fb2", 535 | "data": 536 | { 537 | "color_mode": "light", 538 | "color": "#000000", 539 | "color_second_page": "#FFEBD8", 540 | "side_bg_color": "", 541 | "tail_color": "#3F251B", 542 | "tail_color_selected": "#C23C52", 543 | "tail_icon_ani": false, 544 | "tail_icon_ani_mode": "once", 545 | "head_myself_mp4_play": "loop", 546 | "pub_btn_shade_color_top": "", 547 | "pub_btn_shade_color_bottom": "", 548 | "pub_btn_plus_color": "", 549 | "tail_icon_mode": "img" 550 | } 551 | }, 552 | { 553 | "id": 1682268079001, 554 | "name": "仓鼠松鼠", 555 | "preview": "https://i0.hdslb.com/bfs/garb/9aa060fa3c16ecee3ae352cb3ac2d81fa5a9960f.jpg", 556 | "ver": 1682497086, 557 | "package_url": "https://i0.hdslb.com/bfs/garb/zip/514f50b0bf4654fa3f2c85445f7b95fc74072c93.zip", 558 | "package_md5": "039679403c3d29e8d7912793fb9c9155", 559 | "data": 560 | { 561 | "color_mode": "light", 562 | "color": "#000000", 563 | "color_second_page": "#F3C489", 564 | "side_bg_color": "", 565 | "tail_color": "#34200A", 566 | "tail_color_selected": "#FFFFFF", 567 | "tail_icon_ani": false, 568 | "tail_icon_ani_mode": "once", 569 | "head_myself_mp4_play": "loop", 570 | "pub_btn_shade_color_top": "", 571 | "pub_btn_shade_color_bottom": "", 572 | "pub_btn_plus_color": "", 573 | "tail_icon_mode": "img" 574 | } 575 | }, 576 | { 577 | "id": 1682400543001, 578 | "name": "大耳狗 甜品时刻", 579 | "preview": "https://i0.hdslb.com/bfs/garb/1d988e88c9b63f422127f18b7168468d5b28303c.png", 580 | "ver": 1683163632, 581 | "package_url": "https://i0.hdslb.com/bfs/garb/zip/48ee0b0b5c8853de809801a220fa2bc317e8686e.zip", 582 | "package_md5": "901f2bb7e88449787b568e1fed2c396c", 583 | "data": 584 | { 585 | "color_mode": "light", 586 | "color": "#000000", 587 | "color_second_page": "#D7E7F5", 588 | "side_bg_color": "", 589 | "tail_color": "#ACA097", 590 | "tail_color_selected": "#745943", 591 | "tail_icon_ani": false, 592 | "tail_icon_ani_mode": "once", 593 | "head_myself_mp4_play": "loop", 594 | "pub_btn_shade_color_top": "", 595 | "pub_btn_shade_color_bottom": "", 596 | "pub_btn_plus_color": "", 597 | "tail_icon_mode": "img" 598 | } 599 | }, 600 | { 601 | "id": 1682588261001, 602 | "name": "愿望成真 生日快乐2", 603 | "preview": "https://i0.hdslb.com/bfs/garb/a91e67b7ada4c2046ee90fa7f7a53d87f6fe4196.jpg", 604 | "ver": 1682601597, 605 | "package_url": "https://i0.hdslb.com/bfs/garb/zip/0b6363d79f070aa548fd1a7067851d2db76d5bd7.zip", 606 | "package_md5": "30f1cbf11c97daa0a2052a1469363790", 607 | "data": 608 | { 609 | "color_mode": "light", 610 | "color": "#000000", 611 | "color_second_page": "#FDE3C5", 612 | "side_bg_color": "", 613 | "tail_color": "#963040", 614 | "tail_color_selected": "#B63443", 615 | "tail_icon_ani": false, 616 | "tail_icon_ani_mode": "once", 617 | "head_myself_mp4_play": "loop", 618 | "pub_btn_shade_color_top": "", 619 | "pub_btn_shade_color_bottom": "", 620 | "pub_btn_plus_color": "", 621 | "tail_icon_mode": "img" 622 | } 623 | }, 624 | { 625 | "id": 1682863365001, 626 | "name": "小猫咪金的没烦恼", 627 | "preview": "https://i0.hdslb.com/bfs/garb/beb223310a2a244e032aed3389d8d331c600011c.png", 628 | "ver": 1682913734, 629 | "package_url": "https://i0.hdslb.com/bfs/garb/zip/86913b45793d61fa134bc55a99577a7c1bc91c70.zip", 630 | "package_md5": "caaedf3c9a4903c3e3dc09fc83739a77", 631 | "data": 632 | { 633 | "color_mode": "light", 634 | "color": "#000000", 635 | "color_second_page": "#FFF1E1", 636 | "side_bg_color": "", 637 | "tail_color": "#A45100", 638 | "tail_color_selected": "#FFB113", 639 | "tail_icon_ani": false, 640 | "tail_icon_ani_mode": "once", 641 | "head_myself_mp4_play": "loop", 642 | "pub_btn_shade_color_top": "", 643 | "pub_btn_shade_color_bottom": "", 644 | "pub_btn_plus_color": "", 645 | "tail_icon_mode": "img" 646 | } 647 | }, 648 | { 649 | "id": 1683039767001, 650 | "name": "章章梦工厂", 651 | "preview": "https://i0.hdslb.com/bfs/garb/555033074a243694e16f7ac26e30669920185fa3.jpg", 652 | "ver": 1683087502, 653 | "package_url": "https://i0.hdslb.com/bfs/garb/zip/4e658604421dca5c1f4bd081440d2c124c21df54.zip", 654 | "package_md5": "933f6c5cef56ce396ebd4e04fb11aa97", 655 | "data": 656 | { 657 | "color_mode": "light", 658 | "color": "#000000", 659 | "color_second_page": "#FEE5B4", 660 | "side_bg_color": "", 661 | "tail_color": "#BA6177", 662 | "tail_color_selected": "#782E41", 663 | "tail_icon_ani": false, 664 | "tail_icon_ani_mode": "once", 665 | "head_myself_mp4_play": "loop", 666 | "pub_btn_shade_color_top": "", 667 | "pub_btn_shade_color_bottom": "", 668 | "pub_btn_plus_color": "", 669 | "tail_icon_mode": "img" 670 | } 671 | }, 672 | { 673 | "id": 1683341615001, 674 | "name": "星光六角螈", 675 | "preview": "https://i0.hdslb.com/bfs/garb/b8a910356879ecddf35705157dab18eb016b23b3.png", 676 | "ver": 1683353506, 677 | "package_url": "https://i0.hdslb.com/bfs/garb/zip/5259062476c4fb8731ce2d7031a0d1c9aa299a0d.zip", 678 | "package_md5": "75d4f03caeafa73fd6440485c9e4a053", 679 | "data": 680 | { 681 | "color_mode": "light", 682 | "color": "#000000", 683 | "color_second_page": "#FFFFFF", 684 | "side_bg_color": "", 685 | "tail_color": "#9465B7", 686 | "tail_color_selected": "#E485CF", 687 | "tail_icon_ani": false, 688 | "tail_icon_ani_mode": "once", 689 | "head_myself_mp4_play": "loop", 690 | "pub_btn_shade_color_top": "", 691 | "pub_btn_shade_color_bottom": "", 692 | "pub_btn_plus_color": "", 693 | "tail_icon_mode": "img" 694 | } 695 | }, 696 | { 697 | "id": 1683355602001, 698 | "name": "脑洞波系列主题装扮-贝拉", 699 | "preview": "https://i0.hdslb.com/bfs/garb/7217b87aee2b2522f84970874307bab271db8b06.png", 700 | "ver": 1683630000, 701 | "package_url": "https://i0.hdslb.com/bfs/garb/zip/d87bf2d15462e2a00957593bb0a248e99448fae7.zip", 702 | "package_md5": "d5ad4ec45fb657ee2861de3107e3a849", 703 | "data": 704 | { 705 | "color_mode": "dark", 706 | "color": "#ffffff", 707 | "color_second_page": "#302C49", 708 | "side_bg_color": "", 709 | "tail_color": "#FFFFFF", 710 | "tail_color_selected": "#9AC8E2", 711 | "tail_icon_ani": false, 712 | "tail_icon_ani_mode": "once", 713 | "head_myself_mp4_play": "loop", 714 | "pub_btn_shade_color_top": "", 715 | "pub_btn_shade_color_bottom": "", 716 | "pub_btn_plus_color": "", 717 | "tail_icon_mode": "img" 718 | } 719 | }, 720 | { 721 | "id": 1683518214001, 722 | "name": "蜜桃猫情侣篇", 723 | "preview": "https://i0.hdslb.com/bfs/garb/2cf56cdbaecc803804b6636b183b4e3f73c72338.jpg", 724 | "ver": 1683522964, 725 | "package_url": "https://i0.hdslb.com/bfs/garb/zip/293a1db879bcbb6b13afd7913a74840fc2cdb3ee.zip", 726 | "package_md5": "c07353adfa361f061eeaf2e71f00478b", 727 | "data": 728 | { 729 | "color_mode": "light", 730 | "color": "#000000", 731 | "color_second_page": "#FFD6D6", 732 | "side_bg_color": "", 733 | "tail_color": "#FFFFFF", 734 | "tail_color_selected": "#FFE0B3", 735 | "tail_icon_ani": false, 736 | "tail_icon_ani_mode": "once", 737 | "head_myself_mp4_play": "loop", 738 | "pub_btn_shade_color_top": "", 739 | "pub_btn_shade_color_bottom": "", 740 | "pub_btn_plus_color": "", 741 | "tail_icon_mode": "img" 742 | } 743 | } 744 | ], 745 | "load_equip": 746 | [ 747 | { 748 | "id": 2531, 749 | "name": "初音未来13周年", 750 | "ver": "1598602035", 751 | "loading_url": "https://i0.hdslb.com/bfs/garb/item/9b12e8b5cc16a4c2e71e91c43796f09d5e132847.webp" 752 | }, 753 | { 754 | "id": 4125, 755 | "name": "良辰美景·不问天", 756 | "ver": "1612771141", 757 | "loading_url": "https://i0.hdslb.com/bfs/garb/item/4d6ac226ba78cc4fe14c3c97f3bd0bb2e7166c73.webp" 758 | }, 759 | { 760 | "id": 32263, 761 | "name": "EveOneCat2", 762 | "ver": "1632046310", 763 | "loading_url": "https://i0.hdslb.com/bfs/garb/item/880560233ce3fe7bde792f619bc02ac7b59fb02a.webp" 764 | }, 765 | { 766 | "id":33460, 767 | "name":"有栖mana", 768 | "ver":"1639638609", 769 | "loading_url":"https://i0.hdslb.com/bfs/garb/item/a6a0063cfb3855035191b50a5e8384911a83bf48.webp" 770 | }, 771 | { 772 | "id": 34811, 773 | "name": "嘉然个性装扮2.0", 774 | "ver": 1650337335, 775 | "loading_url": "https://i0.hdslb.com/bfs/garb/item/fed79dceb1ea584a3f336e58689fbe5ae93f69a6.webp" 776 | }, 777 | { 778 | "id": 49391, 779 | "name": "提摩西小队第二弹", 780 | "ver": "1677753596", 781 | "loading_url": "https://i0.hdslb.com/bfs/garb/item/a248fb3fe86cf2009ce68e7e4d485b7c6229f6aa.webp" 782 | }, 783 | { 784 | "id": 1680172285001, 785 | "name": "豆豆摇头晃脑", 786 | "ver": "1682766010", 787 | "loading_url": "https://i0.hdslb.com/bfs/baselabs/op/0de868e5c679962dd4ef1187c6754ea4059eec4d89f0467dc0378b77eaf5c1c4.webp" 788 | }, 789 | { 790 | "id": 1680280135001, 791 | "name": "幻想乡的日常 第1弹", 792 | "ver": "1680606000", 793 | "loading_url": "https://i0.hdslb.com/bfs/baselabs/op/6f33bea9f45c5dac7468ab82065a66e3c1b415cb582a3d66a843d68b142f9ebd.webp" 794 | } 795 | ] 796 | }, 797 | "Private": 798 | { 799 | } 800 | } 801 | } -------------------------------------------------------------------------------- /js/BiliBili.Modified.response.js: -------------------------------------------------------------------------------- 1 | const $ = new Env("📺 BiliBili: 👘 Modified v0.0.1(2) response"); 2 | const URL = new URLs(); 3 | const DataBase = { 4 | "Modified":{ 5 | "Settings":{ 6 | "Switch":true, 7 | "Skin":{ 8 | "user_equip":1682863365001, 9 | "load_equip":32263 10 | }, 11 | "Private":{ 12 | "coin":"", 13 | "bcoin":"", 14 | "follower":"", 15 | "level":"", 16 | "like":"", 17 | "vip":false 18 | } 19 | }, 20 | "Configs":{ 21 | "Skin":{ 22 | "user_equip":[ 23 | {"id":2529,"name":"初音未来-日版","preview":"https://i0.hdslb.com/bfs/garb/item/2fa16380b31b3cee6c889d645f2699de8e9d9faf.jpg","ver":1625570999,"package_url":"https://i0.hdslb.com/bfs/garb/zip/bbd834e1f783cef686569ff3cf94bdc3bc57f9e8.zip","package_md5":"b251980ad26b33b8c4a0a64049b14daf","data":{"color_mode":"light","color":"#212121","color_second_page":"#fff2d2","side_bg_color":"#ffe7ae","tail_color":"#996c00","tail_color_selected":"#0d6872","tail_icon_ani":true,"tail_icon_ani_mode":"once","head_myself_mp4_play":"once","pub_btn_shade_color_top":"#ffaf4c","pub_btn_shade_color_bottom":"#ffc37a","pub_btn_plus_color":"#fff6df","tail_icon_mode":"img"}},{"id":2530,"name":"初音未来-夜版","preview":"https://i0.hdslb.com/bfs/garb/item/51b5a4e7147c4fdcad1bb349e0b6ecd2ba6a82a6.jpg","ver":1625571046,"package_url":"https://i0.hdslb.com/bfs/garb/zip/14e2f377e601481e2befab34e0773c81886b7232.zip","package_md5":"e10f4ff37f3d964c6ecb3f8f2c8434c9","data":{"color_mode":"dark","color":"#ffffff","color_second_page":"#4c4974","side_bg_color":"#29244d","tail_color":"#ffffff","tail_color_selected":"#a2f3f7","tail_icon_ani":true,"tail_icon_ani_mode":"once","head_myself_mp4_play":"once","pub_btn_shade_color_top":"#40b7bb","pub_btn_shade_color_bottom":"#8edfe3","pub_btn_plus_color":"#4c4975","tail_icon_mode":"img"}},{"id":4124,"name":"良辰美景·不问天","preview":"https://i0.hdslb.com/bfs/garb/item/844860e8970ab045a4fd8e5c0923c902df25062f.jpg","ver":1625040105,"package_url":"https://i0.hdslb.com/bfs/garb/zip/5d83e72e2ca76b4c8c2b14dc7c5eb729d5c25e9a.zip","package_md5":"d1ae5d6445a9f12f388a097fe1dde9ad","data":{"color_mode":"dark","color":"#ffffff","color_second_page":"#b22d43","side_bg_color":"#8a2736","tail_color":"#ffbcbc","tail_color_selected":"#ffeaab","tail_icon_ani":true,"tail_icon_ani_mode":"once","head_myself_mp4_play":"once","pub_btn_shade_color_top":"#ffeaab","pub_btn_shade_color_bottom":"#ffdbb8","pub_btn_plus_color":"#c02e4b","tail_icon_mode":"img"}},{"id":32264,"name":"EveOneCat2","preview":"https://i0.hdslb.com/bfs/garb/item/af6ab166af22ed45d429bfde4e3962bb78f270c8.png","ver":1632051567,"package_url":"https://i0.hdslb.com/bfs/garb/zip/4f047ea64e0659dcbcf70092dd6e30c1eadb9390.zip","package_md5":"0f81680da60b12d0ca9ebe869b81e1b1","data":{"color_mode":"dark","color":"#ffffff","color_second_page":"#32376b","side_bg_color":"#32376b","tail_color":"#e9e9e9","tail_color_selected":"#fff57a","tail_icon_ani":true,"tail_icon_ani_mode":"once","head_myself_mp4_play":"loop","pub_btn_shade_color_top":"","pub_btn_shade_color_bottom":"","pub_btn_plus_color":"","tail_icon_mode":"img"}},{"id":33459,"name":"有栖mana","preview":"https://i0.hdslb.com/bfs/garb/item/5d98f29bcada07b06e07bc7b61d379111dc70cd0.jpg","ver":1639638559,"package_url":"https://i0.hdslb.com/bfs/garb/zip/a1dc66b63b3e29c7b7b56a257d766cce42c5406b.zip","package_md5":"e63c4df74b0337db58336b7cf4df5a08","data":{"color_mode":"dark","color":"#ffffff","color_second_page":"#d54358","side_bg_color":"#d54358","tail_color":"#2e0505","tail_color_selected":"#ff0344","tail_icon_ani":true,"tail_icon_ani_mode":"once","head_myself_mp4_play":"once","pub_btn_shade_color_top":"","pub_btn_shade_color_bottom":"","pub_btn_plus_color":"","tail_icon_mode":"img"}},{"id":34813,"name":"嘉然个性装扮2.0","preview":"https://i0.hdslb.com/bfs/garb/item/4d280c3ac38059c7c528a629b7e043a90bf5ff91.jpg","ver":1655707875,"package_url":"https://i0.hdslb.com/bfs/garb/zip/6349c29877c87ffb6967a13e01c17a237380197d.zip","package_md5":"80fbc07a421a3dd885b9ec7cf6884f66","data":{"side_bg_color":"","pub_btn_shade_color_top":"","color_mode":"dark","color_second_page":"#9cbcf5","tail_color_selected":"#526fff","color":"#ffffff","tail_color":"#2648a8","pub_btn_shade_color_bottom":"","head_myself_mp4_play":"loop","tail_icon_ani_mode":"once","tail_icon_ani":false,"tail_icon_mode":"img","pub_btn_plus_color":""}},{"id":34814,"name":"嘉然个性装扮2.0","preview":"https://i0.hdslb.com/bfs/garb/item/c45dd226c6eeee0dc43307995efb0b1529321e0a.jpg","ver":1655707892,"package_url":"https://i0.hdslb.com/bfs/garb/zip/14d71e4f8fda27e52a3aec6a93b358b5686cbada.zip","package_md5":"3522719bc452ad2b0c4562dd8611734a","data":{"side_bg_color":"","pub_btn_shade_color_top":"","color_mode":"light","color_second_page":"#fec9dd","tail_color_selected":"#155fe7","color":"#212121","tail_color":"#b93668","pub_btn_shade_color_bottom":"","head_myself_mp4_play":"loop","tail_icon_ani_mode":"once","tail_icon_ani":false,"tail_icon_mode":"img","pub_btn_plus_color":""}},{"id":38342,"name":"萌节六周年装扮","preview":"https://i0.hdslb.com/bfs/garb/item/ac688b44a0ebf682b1640f9f63058da93910f79a.jpg","ver":1664203693,"package_url":"https://i0.hdslb.com/bfs/garb/zip/ceaa31ef56926928071b3c16a7b3752bb18e183e.zip","package_md5":"71bc3d7ec18215d44d61fc49b31bf108","data":{"side_bg_color":"","pub_btn_shade_color_top":"","color_mode":"light","color_second_page":"#85c3fe","tail_color_selected":"#8080ef","color":"#212121","tail_color":"#252525","pub_btn_shade_color_bottom":"","head_myself_mp4_play":"once","tail_icon_ani_mode":"once","tail_icon_ani":true,"tail_icon_mode":"img","pub_btn_plus_color":""}},{"id":39859,"name":"眠眠兔","preview":"https://i0.hdslb.com/bfs/garb/item/aa6cc4ba42eb1ecb978c3c937852e89ea913ef0c.jpg","ver":1667550979,"package_url":"https://i0.hdslb.com/bfs/garb/zip/2bc9d734bd161ae80e29301952637c2aa9a15e62.zip","package_md5":"0d6c7322a49775e73dc8463ae0822ecd","data":{"color_mode":"light","color":"#212121","color_second_page":"#7b80ba","side_bg_color":"","tail_color":"#695785","tail_color_selected":"#ffffff","tail_icon_ani":true,"tail_icon_ani_mode":"once","head_myself_mp4_play":"once","pub_btn_shade_color_top":"","pub_btn_shade_color_bottom":"","pub_btn_plus_color":"","tail_icon_mode":"img"}},{"id":49390,"name":"提摩西小队第二弹","preview":"https://i0.hdslb.com/bfs/garb/item/3f825654a20dc6a936f539ec0d79600422d4c435.jpg","ver":1677753583,"package_url":"https://i0.hdslb.com/bfs/garb/zip/0598e721e0a42904224d2813ae405da9d5453cf2.zip","package_md5":"36a76686dfa20830c3ddb7dfb090db4f","data":{"color_mode":"dark","color":"#ffffff","color_second_page":"#819b50","side_bg_color":"","tail_color":"#fffbde","tail_color_selected":"#eaff88","tail_icon_ani":true,"tail_icon_ani_mode":"once","head_myself_mp4_play":"once","pub_btn_shade_color_top":"","pub_btn_shade_color_bottom":"","pub_btn_plus_color":"","tail_icon_mode":"img"}},{"id":50107,"name":"灰原哀","preview":"https://i0.hdslb.com/bfs/garb/item/6a12360353e80c9e9b2396bf5ae4678eb597d22e.jpg","ver":1680087164,"package_url":"https://i0.hdslb.com/bfs/garb/zip/e53d3456e925aeb0b32d501fa9a81d9f0a6379d7.zip","package_md5":"85ab095b4a27b3611de951f73f0d740a","data":{"color_mode":"dark","color":"#ffffff","color_second_page":"#4b2d8d","side_bg_color":"","tail_color":"#dad6d6","tail_color_selected":"#5ce233","tail_icon_ani":true,"tail_icon_ani_mode":"once","head_myself_mp4_play":"loop","pub_btn_shade_color_top":"","pub_btn_shade_color_bottom":"","pub_btn_plus_color":"","tail_icon_mode":"img"}},{"id":50605,"name":"铃芽之旅","preview":"https://i0.hdslb.com/bfs/garb/item/29fd3ec81a9d970cbc1c918eb9c256ef7442f24e.jpg","ver":1683363152,"package_url":"https://i0.hdslb.com/bfs/garb/zip/a1d0b1689f5803c2b5fe1015b8996075e5d77f02.zip","package_md5":"b116708315b872acb28e33722077cea7","data":{"color_mode":"dark","color":"#ffffff","color_second_page":"#3789c0","side_bg_color":"","tail_color":"#ffffff","tail_color_selected":"#00285a","tail_icon_ani":true,"tail_icon_ani_mode":"once","head_myself_mp4_play":"once","pub_btn_shade_color_top":"","pub_btn_shade_color_bottom":"","pub_btn_plus_color":"","tail_icon_mode":"img"}},{"id":50763,"name":"有兽焉","preview":"https://i0.hdslb.com/bfs/garb/item/60215faa57e4bc2a79a9109e5ced5ea9838f34e7.jpg","ver":1681406718,"package_url":"https://i0.hdslb.com/bfs/garb/zip/beda39e8106d37a5df698318457aea5057e005e9.zip","package_md5":"7102438eb052ab6826e7f82b25526759","data":{"color_mode":"light","color":"#212121","color_second_page":"#c5db9c","side_bg_color":"","tail_color":"#04191e","tail_color_selected":"#005a70","tail_icon_ani":true,"tail_icon_ani_mode":"once","head_myself_mp4_play":"once","pub_btn_shade_color_top":"","pub_btn_shade_color_bottom":"","pub_btn_plus_color":"","tail_icon_mode":"img"}},{"id":50874,"name":"樱花未来","preview":"https://i0.hdslb.com/bfs/garb/item/f148a31f00c195d8f8403061d7a24f376c2ed5b7.jpg","ver":1681469869,"package_url":"https://i0.hdslb.com/bfs/garb/zip/b8faab964ae2f61671e416cca22bcba546799c6d.zip","package_md5":"cb2b384cb6d8e7635a394f6f3100d53a","data":{"color_mode":"light","color":"#ffffff","color_second_page":"#ffced1","side_bg_color":"","tail_color":"#881337","tail_color_selected":"#ff3dc1","tail_icon_ani":true,"tail_icon_ani_mode":"once","head_myself_mp4_play":"once","pub_btn_shade_color_top":"","pub_btn_shade_color_bottom":"","pub_btn_plus_color":"","tail_icon_mode":"img"}},{"id":52484,"name":"JDG坚定信仰","preview":"https://i0.hdslb.com/bfs/garb/item/41e4ccbe678d1e91a58680c3884a1fb60a25d6f6.png","ver":1683352743,"package_url":"https://i0.hdslb.com/bfs/garb/zip/9bde3318fedc895962461c5582eed05300d40c44.zip","package_md5":"08c8a6568afd338b15efcdf5b7798f95","data":{"color_mode":"dark","color":"#ffffff","color_second_page":"#c8102e","side_bg_color":"","tail_color":"#fff5f7","tail_color_selected":"#c8102e","tail_icon_ani":true,"tail_icon_ani_mode":"once","head_myself_mp4_play":"once","pub_btn_shade_color_top":"","pub_btn_shade_color_bottom":"","pub_btn_plus_color":"","tail_icon_mode":"img"}},{"id":59580,"name":"创作之翼个性主题","preview":"https://i0.hdslb.com/bfs/garb/item/320186e70545079eb0f2bce7bea02dca9da4d7f2.png","ver":1695098318,"package_url":"https://i0.hdslb.com/bfs/garb/zip/23362a35bfdcc5f3e556689045c632c8bb126bb3.zip","package_md5":"155279760465acbe213d21b6e4382ad3","data":{"color_mode":"dark","color":"#ffffff","color_second_page":"#1a7bbf","side_bg_color":"","tail_color":"#90ffee","tail_color_selected":"#ebffe3","tail_icon_ani":true,"tail_icon_ani_mode":"once","head_myself_mp4_play":"loop","pub_btn_shade_color_top":"","pub_btn_shade_color_bottom":"","pub_btn_plus_color":"#6dfff9","tail_icon_mode":"img"}},{"id":1679479030001,"name":"奶蓝梦境","preview":"https://i0.hdslb.com/bfs/garb/c8d384c60d5b32a0373f1c7544143faa79a1bcf7.jpg","ver":1679575410,"package_url":"https://i0.hdslb.com/bfs/garb/zip/1c55154e72c4557ac1e4395d7c4e980b75a52ec9.zip","package_md5":"d06e78cc6330dec66db9c791677524af","data":{"color_mode":"light","color":"#000000","color_second_page":"#FFFFFF","side_bg_color":"","tail_color":"#606D90","tail_color_selected":"#E980A2","tail_icon_ani":false,"tail_icon_ani_mode":"once","head_myself_mp4_play":"loop","pub_btn_shade_color_top":"","pub_btn_shade_color_bottom":"","pub_btn_plus_color":"","tail_icon_mode":"img"}},{"id":1680162579001,"name":"领结猫","preview":"https://i0.hdslb.com/bfs/garb/1b8aedd4a4ea7dccbbecd08892aa311e5ea59f83.jpg","ver":1680233134,"package_url":"https://i0.hdslb.com/bfs/garb/zip/49f66876cef15333c0f73c3e054feb300b631383.zip","package_md5":"41209e0d25a96ea61941f8fe92a9eeca","data":{"color_mode":"dark","color":"#ffffff","color_second_page":"#010046","side_bg_color":"","tail_color":"#8A9FC6","tail_color_selected":"#051856","tail_icon_ani":false,"tail_icon_ani_mode":"once","head_myself_mp4_play":"loop","pub_btn_shade_color_top":"","pub_btn_shade_color_bottom":"","pub_btn_plus_color":"","tail_icon_mode":"img"}},{"id":1680348700001,"name":"幻想乡的日常 第1弹","preview":"https://i0.hdslb.com/bfs/garb/41f8974a016ccd8e47bc892d945316e227c6e94b.jpg","ver":1680573803,"package_url":"https://i0.hdslb.com/bfs/garb/zip/c5d3ceb305754e7b222d67b93ad3de21882c20c4.zip","package_md5":"95806a78585ac34276a90d680a8f152a","data":{"color_mode":"light","color":"#000000","color_second_page":"#99C9E3","side_bg_color":"","tail_color":"#7D4E28","tail_color_selected":"#B6268C","tail_icon_ani":false,"tail_icon_ani_mode":"once","head_myself_mp4_play":"loop","pub_btn_shade_color_top":"","pub_btn_shade_color_bottom":"","pub_btn_plus_color":"","tail_icon_mode":"img"}},{"id":1680580240001,"name":"乐正绫八周年生日纪念","preview":"https://i0.hdslb.com/bfs/garb/0eb2b6c4575f231be90b16ae22f8454209ff8220.jpg","ver":1680597997,"package_url":"https://i0.hdslb.com/bfs/garb/zip/9becf2f86ac3073d22e607cc8a09263ef850d229.zip","package_md5":"a5d13b485e47309411affeeeebbc4886","data":{"color_mode":"dark","color":"#ffffff","color_second_page":"#1F286D","side_bg_color":"","tail_color":"#E9E9E9","tail_color_selected":"#FFE556","tail_icon_ani":false,"tail_icon_ani_mode":"once","head_myself_mp4_play":"loop","pub_btn_shade_color_top":"","pub_btn_shade_color_bottom":"","pub_btn_plus_color":"","tail_icon_mode":"img"}},{"id":1680591891001,"name":"恬豆发芽了","preview":"https://i0.hdslb.com/bfs/garb/8d0dfc3140709359fdc2c51cb1268dde4749d97e.jpg","ver":1682263027,"package_url":"https://i0.hdslb.com/bfs/garb/zip/d4bd126da21434ba31e35d3a7906e410f05c5559.zip","package_md5":"409ee27c71a255f163c60321189e4312","data":{"color_mode":"light","color":"#000000","color_second_page":"#9ED4FA","side_bg_color":"","tail_color":"#454433","tail_color_selected":"#3283C8","tail_icon_ani":false,"tail_icon_ani_mode":"once","head_myself_mp4_play":"loop","pub_btn_shade_color_top":"","pub_btn_shade_color_bottom":"","pub_btn_plus_color":"","tail_icon_mode":"img"}},{"id":1682047060001,"name":"生日快乐","preview":"https://i0.hdslb.com/bfs/garb/73bf17dd1e22606a8f065b44f4efafcf0d02b71b.jpg","ver":1682066416,"package_url":"https://i0.hdslb.com/bfs/garb/zip/03238fa6749db7ba564bdb57ad45826f94ea30ac.zip","package_md5":"2bd66f54a4b535fb5b5f9bbee1928fb2","data":{"color_mode":"light","color":"#000000","color_second_page":"#FFEBD8","side_bg_color":"","tail_color":"#3F251B","tail_color_selected":"#C23C52","tail_icon_ani":false,"tail_icon_ani_mode":"once","head_myself_mp4_play":"loop","pub_btn_shade_color_top":"","pub_btn_shade_color_bottom":"","pub_btn_plus_color":"","tail_icon_mode":"img"}},{"id":1682268079001,"name":"仓鼠松鼠","preview":"https://i0.hdslb.com/bfs/garb/9aa060fa3c16ecee3ae352cb3ac2d81fa5a9960f.jpg","ver":1682497086,"package_url":"https://i0.hdslb.com/bfs/garb/zip/514f50b0bf4654fa3f2c85445f7b95fc74072c93.zip","package_md5":"039679403c3d29e8d7912793fb9c9155","data":{"color_mode":"light","color":"#000000","color_second_page":"#F3C489","side_bg_color":"","tail_color":"#34200A","tail_color_selected":"#FFFFFF","tail_icon_ani":false,"tail_icon_ani_mode":"once","head_myself_mp4_play":"loop","pub_btn_shade_color_top":"","pub_btn_shade_color_bottom":"","pub_btn_plus_color":"","tail_icon_mode":"img"}},{"id":1682400543001,"name":"大耳狗 甜品时刻","preview":"https://i0.hdslb.com/bfs/garb/1d988e88c9b63f422127f18b7168468d5b28303c.png","ver":1683163632,"package_url":"https://i0.hdslb.com/bfs/garb/zip/48ee0b0b5c8853de809801a220fa2bc317e8686e.zip","package_md5":"901f2bb7e88449787b568e1fed2c396c","data":{"color_mode":"light","color":"#000000","color_second_page":"#D7E7F5","side_bg_color":"","tail_color":"#ACA097","tail_color_selected":"#745943","tail_icon_ani":false,"tail_icon_ani_mode":"once","head_myself_mp4_play":"loop","pub_btn_shade_color_top":"","pub_btn_shade_color_bottom":"","pub_btn_plus_color":"","tail_icon_mode":"img"}},{"id":1682588261001,"name":"愿望成真 生日快乐2","preview":"https://i0.hdslb.com/bfs/garb/a91e67b7ada4c2046ee90fa7f7a53d87f6fe4196.jpg","ver":1682601597,"package_url":"https://i0.hdslb.com/bfs/garb/zip/0b6363d79f070aa548fd1a7067851d2db76d5bd7.zip","package_md5":"30f1cbf11c97daa0a2052a1469363790","data":{"color_mode":"light","color":"#000000","color_second_page":"#FDE3C5","side_bg_color":"","tail_color":"#963040","tail_color_selected":"#B63443","tail_icon_ani":false,"tail_icon_ani_mode":"once","head_myself_mp4_play":"loop","pub_btn_shade_color_top":"","pub_btn_shade_color_bottom":"","pub_btn_plus_color":"","tail_icon_mode":"img"}},{"id":1682863365001,"name":"小猫咪金的没烦恼","preview":"https://i0.hdslb.com/bfs/garb/beb223310a2a244e032aed3389d8d331c600011c.png","ver":1682913734,"package_url":"https://i0.hdslb.com/bfs/garb/zip/86913b45793d61fa134bc55a99577a7c1bc91c70.zip","package_md5":"caaedf3c9a4903c3e3dc09fc83739a77","data":{"color_mode":"light","color":"#000000","color_second_page":"#FFF1E1","side_bg_color":"","tail_color":"#A45100","tail_color_selected":"#FFB113","tail_icon_ani":false,"tail_icon_ani_mode":"once","head_myself_mp4_play":"loop","pub_btn_shade_color_top":"","pub_btn_shade_color_bottom":"","pub_btn_plus_color":"","tail_icon_mode":"img"}},{"id":1683039767001,"name":"章章梦工厂","preview":"https://i0.hdslb.com/bfs/garb/555033074a243694e16f7ac26e30669920185fa3.jpg","ver":1683087502,"package_url":"https://i0.hdslb.com/bfs/garb/zip/4e658604421dca5c1f4bd081440d2c124c21df54.zip","package_md5":"933f6c5cef56ce396ebd4e04fb11aa97","data":{"color_mode":"light","color":"#000000","color_second_page":"#FEE5B4","side_bg_color":"","tail_color":"#BA6177","tail_color_selected":"#782E41","tail_icon_ani":false,"tail_icon_ani_mode":"once","head_myself_mp4_play":"loop","pub_btn_shade_color_top":"","pub_btn_shade_color_bottom":"","pub_btn_plus_color":"","tail_icon_mode":"img"}},{"id":1683341615001,"name":"星光六角螈","preview":"https://i0.hdslb.com/bfs/garb/b8a910356879ecddf35705157dab18eb016b23b3.png","ver":1683353506,"package_url":"https://i0.hdslb.com/bfs/garb/zip/5259062476c4fb8731ce2d7031a0d1c9aa299a0d.zip","package_md5":"75d4f03caeafa73fd6440485c9e4a053","data":{"color_mode":"light","color":"#000000","color_second_page":"#FFFFFF","side_bg_color":"","tail_color":"#9465B7","tail_color_selected":"#E485CF","tail_icon_ani":false,"tail_icon_ani_mode":"once","head_myself_mp4_play":"loop","pub_btn_shade_color_top":"","pub_btn_shade_color_bottom":"","pub_btn_plus_color":"","tail_icon_mode":"img"}},{"id":1683355602001,"name":"脑洞波系列主题装扮-贝拉","preview":"https://i0.hdslb.com/bfs/garb/7217b87aee2b2522f84970874307bab271db8b06.png","ver":1683630000,"package_url":"https://i0.hdslb.com/bfs/garb/zip/d87bf2d15462e2a00957593bb0a248e99448fae7.zip","package_md5":"d5ad4ec45fb657ee2861de3107e3a849","data":{"color_mode":"dark","color":"#ffffff","color_second_page":"#302C49","side_bg_color":"","tail_color":"#FFFFFF","tail_color_selected":"#9AC8E2","tail_icon_ani":false,"tail_icon_ani_mode":"once","head_myself_mp4_play":"loop","pub_btn_shade_color_top":"","pub_btn_shade_color_bottom":"","pub_btn_plus_color":"","tail_icon_mode":"img"}},{"id":1683518214001,"name":"蜜桃猫情侣篇","preview":"https://i0.hdslb.com/bfs/garb/2cf56cdbaecc803804b6636b183b4e3f73c72338.jpg","ver":1683522964,"package_url":"https://i0.hdslb.com/bfs/garb/zip/293a1db879bcbb6b13afd7913a74840fc2cdb3ee.zip","package_md5":"c07353adfa361f061eeaf2e71f00478b","data":{"color_mode":"light","color":"#000000","color_second_page":"#FFD6D6","side_bg_color":"","tail_color":"#FFFFFF","tail_color_selected":"#FFE0B3","tail_icon_ani":false,"tail_icon_ani_mode":"once","head_myself_mp4_play":"loop","pub_btn_shade_color_top":"","pub_btn_shade_color_bottom":"","pub_btn_plus_color":"","tail_icon_mode":"img"}} 24 | ], 25 | "load_equip":[ 26 | {"id":2531,"name":"初音未来13周年","ver":"1598602035","loading_url":"https://i0.hdslb.com/bfs/garb/item/9b12e8b5cc16a4c2e71e91c43796f09d5e132847.webp"},{"id":4125,"name":"良辰美景·不问天","ver":"1612771141","loading_url":"https://i0.hdslb.com/bfs/garb/item/4d6ac226ba78cc4fe14c3c97f3bd0bb2e7166c73.webp"},{"id":32263,"name":"EveOneCat2","ver":"1632046310","loading_url":"https://i0.hdslb.com/bfs/garb/item/880560233ce3fe7bde792f619bc02ac7b59fb02a.webp"},{"id":33460,"name":"有栖mana","ver":"1639638609","loading_url":"https://i0.hdslb.com/bfs/garb/item/a6a0063cfb3855035191b50a5e8384911a83bf48.webp"},{"id":34811,"name":"嘉然个性装扮2.0","ver":1650337335,"loading_url":"https://i0.hdslb.com/bfs/garb/item/fed79dceb1ea584a3f336e58689fbe5ae93f69a6.webp"},{"id":49391,"name":"提摩西小队第二弹","ver":"1677753596","loading_url":"https://i0.hdslb.com/bfs/garb/item/a248fb3fe86cf2009ce68e7e4d485b7c6229f6aa.webp"},{"id":1680172285001,"name":"豆豆摇头晃脑","ver":"1682766010","loading_url":"https://i0.hdslb.com/bfs/baselabs/op/0de868e5c679962dd4ef1187c6754ea4059eec4d89f0467dc0378b77eaf5c1c4.webp"},{"id":1680280135001,"name":"幻想乡的日常 第1弹","ver":"1680606000","loading_url":"https://i0.hdslb.com/bfs/baselabs/op/6f33bea9f45c5dac7468ab82065a66e3c1b415cb582a3d66a843d68b142f9ebd.webp"} 27 | ] 28 | }, 29 | "Private":{ 30 | } 31 | } 32 | }, 33 | "Default": { 34 | "Settings":{"Switch":"true"} 35 | } 36 | }; 37 | 38 | /***************** Processing *****************/ 39 | (async () => { 40 | const { Settings, Caches, Configs } = setENV("BiliBili", "Modified", DataBase); 41 | $.log(`⚠ ${$.name}`, `Settings.Switch: ${Settings?.Switch}`, ""); 42 | switch (Settings?.Switch) { 43 | case true: 44 | default: 45 | let url = URL.parse($request?.url); 46 | const METHOD = $request?.method, HOST = url?.host, PATH = url?.path, PATHs = PATH.split("/"); 47 | // 解析格式 48 | const FORMAT = ($response?.headers?.["Content-Type"] ?? $response?.headers?.["content-type"])?.split(";")?.[0]; 49 | $.log(`⚠ ${$.name}`, `METHOD: ${METHOD}`, `HOST: ${HOST}`, `PATH: ${PATH}`, `FORMAT: ${FORMAT}`, ""); 50 | // 创建空数据 51 | let body = { "code": 0, "message": "0", "data": {} }; 52 | // 格式判断 53 | switch (FORMAT) { 54 | case undefined: // 视为无body 55 | break; 56 | case "application/x-www-form-urlencoded": 57 | case "text/plain": 58 | case "text/html": 59 | default: 60 | break; 61 | case "text/xml": 62 | case "text/plist": 63 | case "application/xml": 64 | case "application/plist": 65 | case "application/x-plist": 66 | break; 67 | case "text/json": 68 | case "application/json": 69 | body = JSON.parse($response.body); 70 | let data = body.data; 71 | // 解析链接 72 | switch (HOST) { 73 | case "www.bilibili.com": 74 | break; 75 | case "app.bilibili.com": 76 | case "app.biliapi.net": 77 | switch (PATH) { 78 | case "x/v2/splash/show": // 开屏页 79 | case "x/v2/splash/list": // 开屏页 80 | case "x/v2/splash/brand/list": // 开屏页 81 | case "x/v2/splash/event/list2": // 开屏页 82 | break; 83 | case "x/v2/feed/index": // 推荐页 84 | break; 85 | case "x/v2/feed/index/story": // 推荐story页 86 | break; 87 | case "x/v2/search/square": // 搜索页 88 | break; 89 | case "x/v2/account/myinfo": // 信息页 90 | if (Settings?.Private?.coin) { 91 | data.coins = Settings.Private.coin; 92 | } 93 | if (Settings?.Private.bcoin) { 94 | data.bcoin = Settings.Private.bcoin; 95 | } 96 | if (Settings?.Private.level) { 97 | data.level = Settings.Private.level; 98 | } 99 | if (Settings?.Private.vip) { 100 | data.vip = { 101 | type: 2, 102 | status: 1, 103 | due_date: 4102329600000, 104 | vip_pay_type: 0, 105 | theme_type: 0, 106 | label: { 107 | path: "", 108 | text: "年度大会员", 109 | label_theme: "hundred_annual_vip", 110 | text_color: "#FFFFFF", 111 | bg_style: 1, 112 | bg_color: "#FB7299", 113 | border_color: "", 114 | use_img_label: true, 115 | img_label_uri_hans: "", 116 | img_label_uri_hant: "", 117 | img_label_uri_hans_static: "https://i0.hdslb.com/bfs/vip/8d7e624d13d3e134251e4174a7318c19a8edbd71.png", 118 | img_label_uri_hant_static: "https://i0.hdslb.com/bfs/activity-plat/static/20220614/e369244d0b14644f5e1a06431e22a4d5/VEW8fCC0hg.png" 119 | }, 120 | avatar_subscript: 1, 121 | nickname_color: "#FB7299", 122 | role: 3, 123 | avatar_subscript_url: "", 124 | tv_vip_status: 1, 125 | tv_vip_pay_type: 0 126 | } 127 | } 128 | body.data = data; 129 | break; 130 | case "x/v2/account/mine": // 我的页 131 | if (Settings?.Private?.coin) { 132 | data.coin = Settings.Private.coin; 133 | } 134 | if (Settings?.Private?.bcoin) { 135 | data.bcoin = Settings.Private.bcoin; 136 | } 137 | if (Settings?.Private?.follower) { 138 | data.follower = Settings.Private.follower; 139 | } 140 | if (Settings?.Private?.level) { 141 | data.level = Settings.Private.level; 142 | } 143 | if (Settings?.Private?.vip) { 144 | data.senior_gate.identity = 2; 145 | data.senior_gate.member_text = "硬核会员"; 146 | data.vip_type = 2; 147 | data.achievement = { 148 | senior_gate_flash: 149 | {icon: "https://i0.hdslb.com/bfs/activity-plat/static/20220818/367d27000e27de458c114d7ca4ded948/6TQojRgCjO.webp"}, 150 | top_level_flash: 151 | {icon: "https://i0.hdslb.com/bfs/activity-plat/static/20220818/367d27000e27de458c114d7ca4ded948/t5iD0zNIbM.webp"} 152 | }; 153 | delete data.vip_section_v2; 154 | delete data.vip_section; 155 | data.vip = { 156 | status: 1, 157 | avatar_subscript: 1, 158 | nickname_color: "#FB7299", 159 | due_date: 4102329600000, 160 | role: 3, 161 | vip_pay_type: 0, 162 | avatar_subscript_url: "", 163 | label: { 164 | bg_color: "#FB7299", 165 | bg_style: 1, 166 | text: "年度大会员", 167 | border_color: "", 168 | path: "", 169 | image: "https://i0.hdslb.com/bfs/vip/8d7e624d13d3e134251e4174a7318c19a8edbd71.png", 170 | label_theme: "hundred_annual_vip", 171 | text_color: "#FFFFFF" 172 | }, 173 | type: 2, 174 | themeType: 0, 175 | theme_type: 0 176 | }; 177 | } 178 | body.data = data; 179 | break; 180 | case "x/v2/space": // 空间页 181 | if ($request.headers['x-bili-mid'] === data.card.mid) { //判断为用户本人,其他人不做修改 182 | if (Settings?.Private?.follower) { 183 | data.card.fans = Settings.Private.follower; 184 | } 185 | if (Settings?.Private?.level) { 186 | data.card.level_info.current_level = Settings.Private.level; 187 | } 188 | if (Settings?.Private?.vip) { 189 | data.card.level_info.senior_inquiry.inquiry_text = "硬核会员"; 190 | data.card.vip = { 191 | vipStatusWarn: "", 192 | vipType: 2, 193 | dueRemark: "", 194 | vipDueDate: 4102329600000, 195 | accessStatus: 0, 196 | vipStatus: 1, 197 | themeType: 0, 198 | label: { 199 | bg_color: "#FB7299", 200 | bg_style: 1, 201 | text: "年度大会员", 202 | border_color: "", 203 | path: "", 204 | image: "https://i0.hdslb.com/bfs/vip/8d7e624d13d3e134251e4174a7318c19a8edbd71.png", 205 | label_theme: "annual_vip", 206 | text_color: "#FFFFFF" 207 | } 208 | }; 209 | } 210 | if (Settings?.Private?.like) { 211 | data.card.likes.like_num = Settings.Private.like; 212 | } 213 | } 214 | body.data = data; 215 | break; 216 | case "x/resource/show/skin": // 皮肤页 217 | data.user_equip = Configs.Skin.user_equip.find(e => { 218 | if (Settings.Skin.user_equip.toString() === e.id.toString()) { 219 | $.log("切换皮肤为: "+ e.name); 220 | return e; 221 | } 222 | }); 223 | data.load_equip = Configs.Skin.load_equip.find(e => { 224 | if (Settings.Skin.load_equip.toString() === e.id.toString()) { 225 | $.log("切换加载动画为: "+ e.name); 226 | return e; 227 | } 228 | }); 229 | body.data = data; 230 | break; 231 | }; 232 | break; 233 | case "api.bilibili.com": 234 | case "api.biliapi.net": 235 | switch (PATH) { 236 | case "pgc/player/api/playurl": // 番剧-播放地址-api 237 | case "pgc/player/web/playurl": // 番剧-播放地址-web 238 | case "pgc/player/web/playurl/html5": // 番剧-播放地址-web-HTML5 239 | break; 240 | case "pgc/view/v2/app/season": // 番剧页面-内容-app 241 | break; 242 | case "pgc/view/web/season": // 番剧-内容-web 243 | case "pgc/view/pc/season": // 番剧-内容-pc 244 | break; 245 | case "pgc/page/bangumi": // 观影页 246 | case "pgc/page/cinema/tab": // 观影页 247 | break; 248 | case "x/vip/web/vip_center/combine": // 会员页 249 | if (Settings?.Private?.vip) { 250 | data.user.vip.theme_type = 0; 251 | data.user.vip.label = { 252 | img_label_uri_hans_static: "https://i0.hdslb.com/bfs/vip/8d7e624d13d3e134251e4174a7318c19a8edbd71.png", 253 | use_img_label: true, 254 | img_label_uri_hant_static: "https://i0.hdslb.com/bfs/vip/8d7e624d13d3e134251e4174a7318c19a8edbd71.png", 255 | bg_color: "#FB7299", 256 | bg_style: 1, 257 | text: "年度大会员", 258 | border_color: "", 259 | img_label_uri_hans: "", 260 | img_label_uri_hant: "", 261 | label_theme: "hundred_annual_vip", 262 | text_color: "#FFFFFF" 263 | } 264 | data.user.vip.vip_pay_type = 0, 265 | data.user.vip.vip_due_date = 4102329600000, 266 | data.user.vip.avatar_subscript = 1, 267 | data.user.vip.is_new_user = false, 268 | data.user.vip.tip_material = null, 269 | data.user.vip.vip_type = 2, 270 | data.user.vip.avatar_subscript_url = "https://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png", 271 | data.user.vip.vip_status = 1, 272 | data.user.vip.nickname_color = "#FB7299" 273 | data.user.account_exception_text = "", 274 | data.user.vip_keep_time = 946656000, 275 | data.user.notice = { 276 | tv_text: "", 277 | surplus_seconds: 0, 278 | tv_surplus_seconds: 0, 279 | type: 0, 280 | can_close: false, 281 | text: "" 282 | }, 283 | data.user.background_image_small = "", 284 | data.user.is_auto_renew = false, 285 | data.user.panel_sub_title = "", 286 | data.user.tv = { 287 | vip_pay_type: 0, 288 | status: 1, 289 | type: 1, 290 | due_date: 4102329600000 291 | }, 292 | data.user.background_image_big = "", 293 | data.user.vip_overdue_explain = "年度大会员有效期 2099/12/31", 294 | data.user.tv_overdue_explain = "超级大会员有效期 2099/12/31", 295 | data.user.renew = { 296 | link: "", 297 | text: "" 298 | } 299 | } 300 | body.data = data; 301 | break; 302 | case "x/vip/price/panel/lexi": // 会员页 303 | if (Settings?.Private?.vip) { 304 | data.basic.user_info = { 305 | vip_status: 1, 306 | vip_type: 2, 307 | vip_overdue_time: 4102329600000, 308 | tv_vip_overdue_time: 4102329600000, 309 | tv_vip_status: 1 310 | } 311 | } 312 | body.data = data; 313 | break; 314 | case "x/vip/top_panel_info": // 续费页 315 | if (Settings?.Private?.vip) { 316 | data.ever_vip = false; 317 | data.vip_overdue_time = 0; 318 | data.vip_type = 2; 319 | data.tv = "超级大会员:有效期至2099-12-31"; 320 | data.vip_status = 1; 321 | data.vip = "大会员:有效期至2099-12-31"; 322 | data.tv_vip_status = 1; 323 | } 324 | body.data = data; 325 | break; 326 | case "x/player/wbi/playurl": // UGC-用户生产内容-播放地址 327 | break; 328 | case "x/space/acc/info": // 用户空间-账号信息-pc 329 | case "x/space/wbi/acc/info": // 用户空间-账号信息-wbi 330 | switch (url.params?.vmid || url.params?.mid) { 331 | case "11783021": // 哔哩哔哩番剧出差 332 | case "1988098633": // b站_戲劇咖 333 | case "2042149112": // b站_綜藝咖 334 | break; 335 | default: 336 | break; 337 | }; 338 | break; 339 | 340 | }; 341 | break; 342 | case "api.live.bilibili.com": 343 | switch (PATH) { 344 | case "xlive/app-room/v1/index/getInfoByRoom": // 直播 345 | break; 346 | }; 347 | break; 348 | }; 349 | $response.body = JSON.stringify(body); 350 | break; 351 | case "application/x-protobuf": 352 | case "application/grpc": 353 | case "application/grpc+proto": 354 | case "applecation/octet-stream": 355 | let rawBody = $.isQuanX() ? new Uint8Array($response.bodyBytes) : $response.body; 356 | //$.log(`🚧 ${$.name}`, `isBuffer? ${ArrayBuffer.isView(rawBody)}: ${JSON.stringify(rawBody)}`, ""); 357 | /****************** initialization start *******************/ 358 | /****************** initialization finish ******************/ 359 | switch (FORMAT) { 360 | case "application/x-protobuf": 361 | break; 362 | case "application/grpc": 363 | case "application/grpc+proto": 364 | /****************** initialization finish ******************/ 365 | // 先拆分B站gRPC校验头和protobuf数据体 366 | let header = rawBody.slice(0, 5); 367 | body = rawBody.slice(5); 368 | // 处理response压缩protobuf数据体 369 | switch (header?.[0]) { 370 | case 0: // unGzip 371 | break; 372 | case 1: // Gzip 373 | body = pako.ungzip(body); 374 | header[0] = 0; // unGzip 375 | break; 376 | }; 377 | // 解析链接并处理protobuf数据 378 | switch (HOST) { 379 | case "grpc.biliapi.net": // HTTP/2 380 | case "app.bilibili.com": // HTTP/1.1 381 | /****************** initialization finish ******************/ 382 | switch (PATHs?.[0]) { 383 | case "bilibili.app.playurl.v1.PlayURL": // 普通视频 384 | switch (PATHs?.[1]) { 385 | case "PlayView": // 播放地址 386 | break; 387 | case "PlayConf": // 播放配置 388 | break; 389 | }; 390 | break; 391 | case "bilibili.app.dynamic.v2.Dynamic": // 动态 392 | switch (PATHs?.[1]) { 393 | case "DynAll": // 视频动态 394 | break; 395 | } 396 | break; 397 | case "bilibili.app.view.v1.View": // 视频 398 | switch (PATHs?.[1]) { 399 | case "View": // 视频播放页 400 | break; 401 | } 402 | break; 403 | case "bilibili.pgc.gateway.player.v2.PlayURL": // 番剧 404 | 405 | switch (PATHs?.[1]) { 406 | case "PlayView": { // 播放地址 407 | break; 408 | }; 409 | case "PlayConf": // 播放配置 410 | break; 411 | }; 412 | break; 413 | case "bilibili.app.nativeact.v1.NativeAct": // 活动-节目、动画、韩综(港澳台) 414 | switch (PATHs?.[1]) { 415 | case "Index": // 首页 416 | break; 417 | }; 418 | break; 419 | case "bilibili.app.interface.v1.Search": // 搜索框 420 | switch (PATHs?.[1]) { 421 | case "Suggest3": // 搜索建议 422 | break; 423 | }; 424 | break; 425 | case "bilibili.polymer.app.search.v1.Search": // 搜索结果 426 | /****************** initialization start *******************/ 427 | /****************** initialization finish *******************/ 428 | switch (PATHs?.[1]) { 429 | case "SearchAll": { // 全部结果(综合) 430 | /****************** initialization start *******************/ 431 | /****************** initialization finish *******************/ 432 | break; 433 | }; 434 | case "SearchByType": { // 分类结果(番剧、用户、影视、专栏) 435 | break; 436 | }; 437 | }; 438 | break; 439 | }; 440 | break; 441 | }; 442 | // protobuf部分处理完后,重新计算并添加B站gRPC校验头 443 | rawBody = newRawBody({ header, body }); // gzip压缩有问题,别用 444 | break; 445 | }; 446 | // 写入二进制数据 447 | if ($.isQuanX()) $response.bodyBytes = rawBody 448 | else $response.body = rawBody; 449 | break; 450 | }; 451 | break; 452 | case "false": 453 | break; 454 | } 455 | })() 456 | .catch((e) => $.logErr(e)) 457 | .finally(() => { 458 | switch ($response) { 459 | default: { // 有回复数据,返回回复数据 460 | const FORMAT = ($response?.headers?.["Content-Type"] ?? $response?.headers?.["content-type"])?.split(";")?.[0]; 461 | $.log(`🎉 ${$.name}, finally`, `$response`, `FORMAT: ${FORMAT}`, ""); 462 | //$.log(`🚧 ${$.name}, finally`, `$response: ${JSON.stringify($response)}`, ""); 463 | if ($response?.headers?.["Content-Encoding"]) $response.headers["Content-Encoding"] = "identity"; 464 | if ($response?.headers?.["content-encoding"]) $response.headers["content-encoding"] = "identity"; 465 | if ($.isQuanX()) { 466 | switch (FORMAT) { 467 | case undefined: // 视为无body 468 | // 返回普通数据 469 | $.done({ headers: $response.headers }); 470 | break; 471 | case "application/x-www-form-urlencoded": 472 | case "text/plain": 473 | case "text/html": 474 | case "text/xml": 475 | case "text/plist": 476 | case "application/xml": 477 | case "application/plist": 478 | case "application/x-plist": 479 | case "text/json": 480 | case "application/json": 481 | default: 482 | // 返回普通数据 483 | $.done({ headers: $response.headers, body: $response.body }); 484 | break; 485 | case "application/x-protobuf": 486 | case "application/grpc": 487 | case "application/grpc+proto": 488 | case "applecation/octet-stream": 489 | // 返回二进制数据 490 | //$.log(`${$response.bodyBytes.byteLength}---${$response.bodyBytes.buffer.byteLength}`); 491 | $.done({ headers: $response.headers, bodyBytes: $response.bodyBytes.buffer.slice($response.bodyBytes.byteOffset, $response.bodyBytes.byteLength + $response.bodyBytes.byteOffset) }); 492 | break; 493 | }; 494 | } else $.done($response); 495 | break; 496 | }; 497 | case undefined: { // 无回复数据 498 | break; 499 | }; 500 | }; 501 | }) 502 | 503 | /***************** Function *****************/ 504 | /** 505 | * Set Environment Variables 506 | * @author VirgilClyne 507 | * @param {String} name - Persistent Store Key 508 | * @param {Array} platforms - Platform Names 509 | * @param {Object} database - Default DataBase 510 | * @return {Object} { Settings, Caches, Configs } 511 | */ 512 | function setENV(name, platforms, database) { 513 | $.log(`☑️ ${$.name}, Set Environment Variables`, ""); 514 | let { Settings, Caches, Configs } = getENV(name, platforms, database); 515 | /***************** Settings *****************/ 516 | $.log(`✅ ${$.name}, Set Environment Variables`, `Settings: ${typeof Settings}`, `Settings内容: ${JSON.stringify(Settings)}`, ""); 517 | /***************** Caches *****************/ 518 | //$.log(`✅ ${$.name}, Set Environment Variables`, `Caches: ${typeof Caches}`, `Caches内容: ${JSON.stringify(Caches)}`, ""); 519 | /***************** Configs *****************/ 520 | return { Settings, Caches, Configs }; 521 | }; 522 | /** 523 | * Create New Raw Body 524 | * @author app2smile 525 | * @param {ArrayBuffer} header - unGzip Header 526 | * @param {ArrayBuffer} body - unGzip Body 527 | * @param {String} type - encoding type 528 | * @return {ArrayBuffer} new raw Body with Checksum Header 529 | */ 530 | function newRawBody({ header, body }, encoding = undefined) { 531 | //$.log(`⚠ ${$.name}, Create New Raw Body`, ""); 532 | // Header: 1位:是否校验数据 (0或者1) + 4位:校验值(数据长度) 533 | const flag = (encoding == "gzip") ? 1 : (encoding == "identity") ? 0 : (encoding == undefined) ? 0 : header?.[0] ?? 0; // encoding flag 534 | const checksum = Checksum(body.length); // 校验值为未压缩情况下的数据长度, 不是压缩后的长度 535 | if (encoding == "gzip") body = pako.gzip(body); // gzip压缩(有问题,别压) 536 | let rawBody = new Uint8Array(header.length + body.length); 537 | rawBody.set([flag], 0) // 0位:Encoding类型,当为1的时候, app会校验1-4位的校验值是否正确 538 | rawBody.set(checksum, 1) // 1-4位: 校验值(4位) 539 | rawBody.set(body, 5); // 5-end位:protobuf数据 540 | //$.log(`🎉 ${$.name}, Create New Raw Body`, ""); 541 | return rawBody; 542 | 543 | // 计算校验和 (B站为数据本体字节数) 544 | function Checksum(num) { 545 | let arr = new ArrayBuffer(4); // an Int32 takes 4 bytes 546 | let view = new DataView(arr); 547 | // 首位填充计算过的新数据长度 548 | view.setUint32(0, num, false); // byteOffset = 0; litteEndian = false 549 | return new Uint8Array(arr); 550 | }; 551 | }; 552 | 553 | /***************** Env *****************/ 554 | // prettier-ignore 555 | // https://github.com/chavyleung/scripts/blob/master/Env.min.js 556 | function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,a)=>{s.call(this,t,(t,s,r)=>{t?a(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.encoding="utf-8",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}getEnv(){return"undefined"!=typeof $environment&&$environment["surge-version"]?"Surge":"undefined"!=typeof $environment&&$environment["stash-version"]?"Stash":"undefined"!=typeof module&&module.exports?"Node.js":"undefined"!=typeof $task?"Quantumult X":"undefined"!=typeof $loon?"Loon":"undefined"!=typeof $rocket?"Shadowrocket":void 0}isNode(){return"Node.js"===this.getEnv()}isQuanX(){return"Quantumult X"===this.getEnv()}isSurge(){return"Surge"===this.getEnv()}isLoon(){return"Loon"===this.getEnv()}isShadowrocket(){return"Shadowrocket"===this.getEnv()}isStash(){return"Stash"===this.getEnv()}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const a=this.getdata(t);if(a)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,a)=>e(a))})}runScript(t,e){return new Promise(s=>{let a=this.getdata("@chavy_boxjs_userCfgs.httpapi");a=a?a.replace(/\n/g,"").trim():a;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[i,o]=a.split("@"),n={url:`http://${o}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":i,Accept:"*/*"},timeout:r};this.post(n,(t,e,a)=>s(a))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),a=!s&&this.fs.existsSync(e);if(!s&&!a)return{};{const a=s?t:e;try{return JSON.parse(this.fs.readFileSync(a))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),a=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):a?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const a=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of a)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,a)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[a+1])>>0==+e[a+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,a]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,a,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,a,r]=/^@(.*?)\.(.*?)$/.exec(e),i=this.getval(a),o=a?"null"===i?null:i||"{}":"{}";try{const e=JSON.parse(o);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),a)}catch(e){const i={};this.lodash_set(i,r,t),s=this.setval(JSON.stringify(i),a)}}else s=this.setval(t,e);return s}getval(t){switch(this.getEnv()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":return $persistentStore.read(t);case"Quantumult X":return $prefs.valueForKey(t);case"Node.js":return this.data=this.loaddata(),this.data[t];default:return this.data&&this.data[t]||null}}setval(t,e){switch(this.getEnv()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":return $persistentStore.write(t,e);case"Quantumult X":return $prefs.setValueForKey(t,e);case"Node.js":return this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0;default:return this.data&&this.data[e]||null}}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){switch(t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"],delete t.headers["content-type"],delete t.headers["content-length"]),this.getEnv()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":default:this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,a)=>{!t&&s&&(s.body=a,s.statusCode=s.status?s.status:s.statusCode,s.status=s.statusCode),e(t,s,a)});break;case"Quantumult X":this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:a,headers:r,body:i,bodyBytes:o}=t;e(null,{status:s,statusCode:a,headers:r,body:i,bodyBytes:o},i,o)},t=>e(t&&t.error||"UndefinedError"));break;case"Node.js":let s=require("iconv-lite");this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:a,statusCode:r,headers:i,rawBody:o}=t,n=s.decode(o,this.encoding);e(null,{status:a,statusCode:r,headers:i,rawBody:o,body:n},n)},t=>{const{message:a,response:r}=t;e(a,r,r&&s.decode(r.rawBody,this.encoding))})}}post(t,e=(()=>{})){const s=t.method?t.method.toLocaleLowerCase():"post";switch(t.body&&t.headers&&!t.headers["Content-Type"]&&!t.headers["content-type"]&&(t.headers["content-type"]="application/x-www-form-urlencoded"),t.headers&&(delete t.headers["Content-Length"],delete t.headers["content-length"]),this.getEnv()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":default:this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient[s](t,(t,s,a)=>{!t&&s&&(s.body=a,s.statusCode=s.status?s.status:s.statusCode,s.status=s.statusCode),e(t,s,a)});break;case"Quantumult X":t.method=s,this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:a,headers:r,body:i,bodyBytes:o}=t;e(null,{status:s,statusCode:a,headers:r,body:i,bodyBytes:o},i,o)},t=>e(t&&t.error||"UndefinedError"));break;case"Node.js":let a=require("iconv-lite");this.initGotEnv(t);const{url:r,...i}=t;this.got[s](r,i).then(t=>{const{statusCode:s,statusCode:r,headers:i,rawBody:o}=t,n=a.decode(o,this.encoding);e(null,{status:s,statusCode:r,headers:i,rawBody:o,body:n},n)},t=>{const{message:s,response:r}=t;e(s,r,r&&a.decode(r.rawBody,this.encoding))})}}time(t,e=null){const s=e?new Date(e):new Date;let a={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in a)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?a[e]:("00"+a[e]).substr((""+a[e]).length)));return t}queryStr(t){let e="";for(const s in t){let a=t[s];null!=a&&""!==a&&("object"==typeof a&&(a=JSON.stringify(a)),e+=`${s}=${a}&`)}return e=e.substring(0,e.length-1),e}msg(e=t,s="",a="",r){const i=t=>{switch(typeof t){case void 0:return t;case"string":switch(this.getEnv()){case"Surge":case"Stash":default:return{url:t};case"Loon":case"Shadowrocket":return t;case"Quantumult X":return{"open-url":t};case"Node.js":return}case"object":switch(this.getEnv()){case"Surge":case"Stash":case"Shadowrocket":default:{let e=t.url||t.openUrl||t["open-url"];return{url:e}}case"Loon":{let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}case"Quantumult X":{let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl,a=t["update-pasteboard"]||t.updatePasteboard;return{"open-url":e,"media-url":s,"update-pasteboard":a}}case"Node.js":return}default:return}};if(!this.isMute)switch(this.getEnv()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":default:$notification.post(e,s,a,i(r));break;case"Quantumult X":$notify(e,s,a,i(r));break;case"Node.js":}if(!this.isMuteLog){let t=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];t.push(e),s&&t.push(s),a&&t.push(a),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){switch(this.getEnv()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":case"Quantumult X":default:this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t);break;case"Node.js":this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack)}}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;switch(this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),this.getEnv()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":case"Quantumult X":default:$done(t);break;case"Node.js":process.exit(1)}}}(t,e)} 557 | 558 | /** 559 | * Get Environment Variables 560 | * @link https://github.com/VirgilClyne/GetSomeFries/blob/main/function/getENV/getENV.min.js 561 | * @author VirgilClyne 562 | * @param {String} key - Persistent Store Key 563 | * @param {Array} names - Platform Names 564 | * @param {Object} database - Default Database 565 | * @return {Object} { Settings, Caches, Configs } 566 | */ 567 | function getENV(key,names,database){let BoxJs=$.getjson(key,database),Argument={};if("undefined"!=typeof $argument&&Boolean($argument)){let arg=Object.fromEntries($argument.split("&").map((item=>item.split("="))));for(let item in arg)setPath(Argument,item,arg[item])}const Store={Settings:database?.Default?.Settings||{},Configs:database?.Default?.Configs||{},Caches:{}};Array.isArray(names)||(names=[names]);for(let name of names)Store.Settings={...Store.Settings,...database?.[name]?.Settings,...BoxJs?.[name]?.Settings,...Argument},Store.Configs={...Store.Configs,...database?.[name]?.Configs},BoxJs?.[name]?.Caches&&"string"==typeof BoxJs?.[name]?.Caches&&(BoxJs[name].Caches=JSON.parse(BoxJs?.[name]?.Caches)),Store.Caches={...Store.Caches,...BoxJs?.[name]?.Caches};return function traverseObject(o,c){for(var t in o){var n=o[t];o[t]="object"==typeof n&&null!==n?traverseObject(n,c):c(t,n)}return o}(Store.Settings,((key,value)=>("true"===value||"false"===value?value=JSON.parse(value):"string"==typeof value&&(value?.includes(",")?value=value.split(","):value&&!isNaN(value)&&(value=parseInt(value,10))),value))),Store;function setPath(object,path,value){path.split(".").reduce(((o,p,i)=>o[p]=path.split(".").length===++i?value:o[p]||{}),object)}} 568 | 569 | // https://github.com/VirgilClyne/GetSomeFries/blob/main/function/URL/URLs.embedded.min.js 570 | function URLs(t){return new class{constructor(t=[]){this.name="URL v1.2.2",this.opts=t,this.json={scheme:"",host:"",path:"",type:"",query:{}}}parse(t){let s=t.match(/(?:(?.+):\/\/(?[^/]+))?\/?(?[^?]+)?\??(?[^?]+)?/)?.groups??null;return s?.path?s.paths=s?.path?.split("/"):s.path="",s?.paths&&(s.type=s?.paths?.[s?.paths?.length-1]?.split(".")?.[1]),s?.query&&(s.query=Object.fromEntries(s.query.split("&").map((t=>t.split("="))))),s}stringify(t=this.json){let s="";return t?.scheme&&t?.host&&(s+=t.scheme+"://"+t.host),t?.path&&(s+=t?.host?"/"+t.path:t.path),t?.query&&(s+="?"+Object.entries(t.query).map((t=>t.join("="))).join("&")),s}}(t)} -------------------------------------------------------------------------------- /js/BiliBiliDailyBonus.js: -------------------------------------------------------------------------------- 1 | /* 2 | 哔哩哔哩每日任务(V1.5) 3 | 4 | 更新时间: 2025-05-16 5 | 脚本兼容: QuantumultX, Surge, Loon 6 | 脚本作者: MartinsKing(@ClydeTime) 7 | 软件功能: 登录/观看/分享/投币/直播签到/银瓜子转硬币/大会员积分签到/年度大会员每月B币券+等任务 8 | 注意事项: 9 | 抓取cookie时注意保证账号登录状态; 10 | 账号内须有一定数量的关注数,否则无法完成投币; 11 | 当硬币不足5枚,提示硬币不足,停止投币; 12 | 为保证投币任务成功, 脚本有重试机制(最多重试10次), 以确保任务完成, 前提需要您尽可能多的关注Up主; 13 | 年度大会员每月B币券会在每月1号、15号尝试领取,确保应用正常运行, 以防漏领; 14 | 年度大会员自动充电会在每次领劵之后进行, 默认为自己充电, B币多的用户可自行到boxjs设置,以防误充. 15 | 使用声明: ⚠️此脚本仅供学习与交流,请勿贩卖!⚠️ 16 | 脚本参考: Nobyda、Wyatt1026、ABreadTree、chavyleung、SocialSisterYi、catlair 17 | ************************ 18 | QX, Surge, Loon说明: 19 | ************************ 20 | 1.获取cookie 21 | ①后台退出手机B站客户端的情况下, 重新打开APP进入主页, 保持脚本常驻确保cookie不过期 22 | ②通过扫码方式获得长期cookie, 获取后关闭脚本, 注意如使用②方式, 必须关闭①方式, 否则无意义 23 | 如通知成功获取cookie, 则可以使用此签到脚本. 24 | 脚本将在每天上午7点30执行. 25 | 2.投币设置 26 | 定时任务脚本投币规则为: 随机获取关注列表Up主视频, 默认5视频5硬币, 不点赞. 27 | 用户如需要不投币的版本, 请使用boxjs订阅「https://raw.githubusercontent.com/ClydeTime/BiliBili/main/boxjs/BiliBili.boxjs.json」 28 | 将投币次数置为0, 并保存即可. 29 | /*********************** 30 | Surge 脚本配置: 31 | ************************ 32 | 33 | # B站每日等级任务 「请在模块中添加」 34 | https://raw.githubusercontent.com/ClydeTime/BiliBili/main/modules/BiliBiliDailyBonus.sgmodule 35 | 36 | ************************ 37 | QuantumultX 远程脚本配置: 38 | ************************ 39 | 40 | # B站每日等级任务 「请在重写中添加」 41 | https://raw.githubusercontent.com/ClydeTime/BiliBili/main/modules/BiliBiliDailyBonus.snippet 42 | 43 | ************************ 44 | Loon 远程脚本配置: 45 | ************************ 46 | 47 | # B站每日等级任务 「请在插件中添加」 48 | https://raw.githubusercontent.com/ClydeTime/BiliBili/main/modules/BiliBiliDailyBonus.plugin 49 | */ 50 | 51 | const format = (ts, fmt = 'yyyy-MM-dd HH:mm:ss') => { 52 | return $.time(fmt, ts) 53 | } 54 | 55 | const check = key => 56 | !config.hasOwnProperty(key) || 57 | !config[key].hasOwnProperty("time") || 58 | !(config[key]["num"] > 0) || 59 | format(new Date().toDateString()) > config[key].time 60 | 61 | const string2object = cookie => { 62 | let obj = {} 63 | let arr = cookie.split("; ") 64 | arr.forEach(function (val) { 65 | let array = val.split("=") 66 | obj[array[0]] = array[1] 67 | }) 68 | return obj 69 | } 70 | 71 | const isNotComplete = exec_times => 72 | config.user.num === 0 || 73 | config.watch.num === 0 || 74 | config.share.num === 0 || 75 | (config.coins.num < exec_times * 10 && Math.floor(config.user.money) > 5) 76 | 77 | const generateSign = body => md5( 78 | $.queryStr(Object.fromEntries(new Map(Array.from(Object.entries(body)).sort()))) 79 | + 'c2ed53a74eeefe3cf99fbd01d8c9c375' 80 | ) 81 | 82 | const persistentStore = config => { 83 | const PStoreConfig = $.getItem($.name + "_daily_bonus", {}) 84 | const isCookieValid = PStoreConfig.cookie?.bili_jct === config.cookie.bili_jct 85 | const isSameUser = PStoreConfig.cookie?.DedeUserID === config.cookie.DedeUserID 86 | if (PStoreConfig.cookie && !isCookieValid) { 87 | !isSameUser && (config = PStoreConfig?.Settings ? {...config, Settings: PStoreConfig.Settings} : config) 88 | config.FirstInsert = false 89 | } else if (PStoreConfig.cookie) { 90 | return $.log("- cookie未失效,无需更新") 91 | } else { 92 | config.FirstInsert = true 93 | } 94 | const isFirstInsert = config.FirstInsert 95 | delete config.FirstInsert 96 | const successMessage = $.setItem($.name + "_daily_bonus", $.toStr(config)) 97 | ? "🎉cookie存储成功" 98 | : "🤒cookie存储失败" 99 | $.msg($.name, isFirstInsert ? "首次获取cookie" : "检测到cookie已更新", successMessage) 100 | $.log($.name + ": " +`${isFirstInsert ? "首次获取cookie" : "检测到cookie已更新"}`) 101 | $.log(successMessage) 102 | } 103 | 104 | const $ = new Env("bilibili") 105 | const startTime = format() 106 | let cards = [] 107 | let config = $.getItem($.name + "_daily_bonus", {}); 108 | [['cookie'], ['user'], ['watch'], ['share'], ['coins']].forEach(key => !config[key] && (config[key] = {})) //init config 109 | 110 | const baseHeaders = { 111 | 'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_4_1 like Mac OS X) AppleWebKit/621.1.15.10.7 (KHTML, like Gecko) Mobile/22E252 BiliApp/84400100 os/ios model/iPhone 16 Pro Max mobi_app/iphone build/84400100 osVer/18.3 network/2 channel/AppStore c_locale/zh-Hans_CN s_locale/zh-Hans_CN disable_rcmd/0', 112 | 'cookie': config.cookieStr 113 | } 114 | 115 | !(async () => { 116 | if ("object" === typeof $response) { 117 | if(!config.matchTime || (Date.now() - config.matchTime) > 10000) { 118 | config.matchTime = Date.now() 119 | $.setItem($.name + "_daily_bonus", $.toStr(config)) 120 | } else { 121 | if ((Date.now() - config.matchTime) < 10000) return $.log("- Blocked: interval <10s") 122 | } 123 | $.log("- 正在获取cookie, 请稍后") 124 | await getCookie() 125 | } else if ("object" === typeof $request) { 126 | let Cookie = $request.headers.cookie || $request.headers.Cookie 127 | if (Cookie) { 128 | config.cookie = string2object(Cookie) 129 | if (config.cookie.DedeUserID) { 130 | const url = $request.url 131 | config.key = url.match(/.*access_key=(.*?)&/)?.[1] 132 | config.cookieStr = `DedeUserID=${config.cookie.DedeUserID}; DedeUserID__ckMd5=${config.cookie.DedeUserID__ckMd5}; SESSDATA=${config.cookie.SESSDATA}; bili_jct=${config.cookie.bili_jct}; sid=${config.cookie.sid}` 133 | } else { 134 | return $.msg($.name, "- 获取cookie信息异常") 135 | } 136 | persistentStore(config) 137 | } else { 138 | $.msg($.name, "- 未发现有效cookie信息") 139 | } 140 | } else { 141 | await signBiliBili() 142 | } 143 | })() 144 | .catch((e) => $.logErr(e)) 145 | .finally(() => $.done()) 146 | 147 | async function getCookie() { 148 | const qrCode = await getQrcode() 149 | if (qrCode === "0") return $.msg($.name, "- 获取二维码失败!") 150 | await $.wait(10000) 151 | await waitConfirmLoop(0, await loginConfirm(qrCode), qrCode) 152 | } 153 | 154 | async function signBiliBili() { 155 | if (config.cookie && await me()) { 156 | await queryStatus() 157 | const exec_times = Number(config.Settings?.exec ?? 5) 158 | const real_times = Math.max(0, exec_times - (Number(config.coins.num) / 10)) 159 | let flag = isNotComplete(exec_times) 160 | if (flag){ 161 | await dynamic() 162 | if (cards.length) { 163 | let item = cards[Math.floor(Math.random() * cards.length)] 164 | let card = $.toObj(item.card) 165 | short_link = encodeURIComponent(card?.short_link_v2.replace(/\\\//g, '/')) 166 | await watch(item.desc.rid, item.desc.bvid, card.cid) 167 | await share(item.desc.rid, card.cid, short_link) 168 | } else { 169 | $.log("- 获取视频失败,请重试或寻求帮助") 170 | } 171 | 172 | $.log("3️⃣ 投币任务") 173 | config.coins?.failures > 0 && (config.coins.failures = 0)//重置投币失败次数 174 | if (real_times === 0){ 175 | $.log(`- 今日已完成 记录于${config.coins.time}`) 176 | } else { 177 | for (let i = 0; i < real_times && (Math.floor(config.user.money) > 5 || ($.log("- 硬币不足,投币失败"), false)); i++) await coin() 178 | } 179 | $.log("---- 经验值任务已完成") 180 | } else { 181 | $.log("---- 经验值任务已完成") 182 | } 183 | 184 | //await liveSign() //已下线 185 | await silver2coin() 186 | let vipMessage = '' 187 | if (config.user.vipStatus === 1) { 188 | $.log("---- 开始大会员额外任务") 189 | const experience = await vipExtraExStatus() 190 | let vipExtraExRet = false 191 | experience === 0 ? $.log("- 大会员额外经验领取情况查询失败") 192 | : experience?.state === 0 ? vipExtraExRet = await vipExtraEx() 193 | : ($.log("- 今日额外经验任务已完成"), vipExtraExRet = true) 194 | const signStatus = await bigScoreSignStatus() 195 | let bigScoreSignRet = false 196 | signStatus === 0 ? $.log("- 大积分三日签到任务完成情况查询失败") 197 | : signStatus?.three_day_sign?.signed === false ? bigScoreSignRet = await bigScoreSign() 198 | : ($.log("- 今日大积分三日签到任务已完成"), bigScoreSignRet = true) 199 | const scoreStatus = await bigScoreStatus() 200 | if (scoreStatus === 0) $.log("- 大积分完成情况查询失败") 201 | 202 | const commonTaskItem = scoreStatus.task_info?.modules?.find(item => item.module_title === "日常任务")?.common_task_item || null 203 | const tasks = 204 | [{ code: "dress-view", fn: bigScoreDressView, title: "浏览装扮商城主页", success: false }, 205 | { code: "vipmallview", fn: bigScoreVipMallView, title: "浏览会员购页面10秒", success: false }, 206 | { code: "filmtab", fn: bigScoreFilmTab, title: "浏览影视频道页10秒", success: false }, 207 | { code: "animatetab", fn: bigScoreAnimateTab, title: "浏览追番频道页10秒", success: false }, 208 | { code: "ogvwatchnew", fn: bigScoreOgvWatchNew, title: "观看剧集内容", success: false }] 209 | if (!commonTaskItem) {//查询失败直接梭哈 210 | for (let t in tasks) tasks[t].success = await tasks[t].fn() 211 | } else { 212 | for (let t in tasks) commonTaskItem.find(i => i.task_code === tasks[t].code)?.state !== 3 ? tasks[t].success = ($.log(`#### 执行${tasks[t].title}任务`), await tasks[t].fn()) : ($.log(`- 今日${tasks[t].title}任务已完成`), tasks[t].success = true) 213 | } 214 | const unfinishedTask = tasks.filter(task => !task.success).map(task => task.title) 215 | let taskMessage = unfinishedTask.join(', ') 216 | taskMessage += taskMessage === "观看剧集内容" ? (config.task_id && config.token ? "等待完成" : "执行失败") : "执行失败" 217 | vipMessage += `\n` + '大会员额外经验领取' + `${vipExtraExRet ? "成功" : "失败"}\n` + 218 | '大积分三日签到' + `${bigScoreSignRet ? "成功" : "失败"}\n` + 219 | '大积分系列任务' + `${unfinishedTask.length === 0 ? "完成" : taskMessage}` 220 | //B币券每月尝试两次领取 221 | const day = $.time('dd') 222 | if (day === '1' || day === '15') { 223 | const privileges = 224 | [{ code: 1, title: "年度大会员每月B币券" }, 225 | { code: 2, title: "年度大会员每月会员购优惠券" }, 226 | { code: 3, title: "年度大会员每月漫画福利券成功" }, 227 | { code: 4, title: "年度大会员每月会员购包邮券成功" }, 228 | { code: 5, title: "年度大会员每月漫画商城优惠券成功" }, 229 | { code: 6, title: "大会员每月装扮体验卡成功" }, 230 | { code: 7, title: "大会员每月课堂优惠券成功" }] 231 | if (config.user.vipType === 2) { 232 | for (const {code, title} of privileges) await vipPrivilege(code) && (code === 1 ? $.msg(title, "🎉🎉🎉领取成功", `- 领取${title}成功`) : $.log(`- 领取${title}成功`)) 233 | await $.wait(800) //延迟执行,避免领劵失败 234 | await Charge(config.Settings?.charge_mid || config.user.mid, config.Settings?.bp_num || 5)//充电 235 | } else { 236 | for (const code of [6, 7]) await vipPrivilege(code) && $.log(`- 领取${privileges.find(p => p.code === code).title}成功`) 237 | } 238 | } 239 | } 240 | flag = !isNotComplete(exec_times) 241 | let title = `${$.name} 登录${config.user.num}/观看${config.watch.num}/分享${config.share.num}/投币${config.coins.num / 10}${flag ? "已完成" : "未完成"}` 242 | $.log(`#### ${title}`) 243 | $.log(`- 登录时间: ${config.user.time || "暂无"}`) 244 | $.log(`- 观看时间: ${config.watch.time || "暂无"}`) 245 | $.log(`- 分享时间: ${config.share.time || "暂无"}`) 246 | $.log(`- 投币时间: ${config.coins.time || "暂无"}`) 247 | 248 | notice = { 249 | title: `${$.name} [${config.user.uname}]`, 250 | subTitle: `${flag ? "✅任务完成" : "❗️有未完成的任务"}`, 251 | content: 252 | `任务:登录(观看)${check("watch") ? "失败" : "+10exp"} 分享${check("share") ? "失败" : "+5exp"} 投币${check("coins") ? "0" : `+${real_times * 10}exp`}\n` + 253 | `经验:当前${config.user.level_info.current_exp}/下级${config.user.level_info.next_exp}/满级28800\n` + 254 | `等级:当前${config.user.level_info.current_level}级 升满级最快需${Math.max(0, Math.ceil(config.user.v6_exp / 65))}天` + vipMessage 255 | } 256 | $.msg(notice.title, notice.subTitle, notice.content) 257 | } else { 258 | $.msg(`${$.name} 任务失败`,`📅 ${startTime}`, "🤒请更新cookie") 259 | } 260 | } 261 | 262 | //目前只循环三次,也可设置多次 263 | async function waitConfirmLoop(times, login_confirm, qrCode) { 264 | if (times >= 3) return $.msg("- 扫码确认失败!") 265 | if (login_confirm) return 266 | await $.wait(5000) 267 | await waitConfirmLoop(++times, await loginConfirm(qrCode), qrCode) 268 | } 269 | 270 | async function getQrcode() { 271 | const body = { 272 | appkey: "27eb53fc9058f8c3", 273 | local_id: 0, 274 | ts: $.getTimestamp(), 275 | mobi_app: 'iphone' 276 | } 277 | body.sign = generateSign(body) 278 | const myRequest = { 279 | url: "https://passport.bilibili.com/x/passport-tv-login/qrcode/auth_code", 280 | headers: { 281 | "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8" 282 | }, 283 | body: $.queryStr(body) 284 | } 285 | return await $.fetch(myRequest).then(response => { 286 | try { 287 | const body = $.toObj(response.body) 288 | if (body.code === 0 && body.message === "0") { 289 | let media_url = `https://tool.lu/qrcode/basic.html?text=https://passport.bilibili.com/x/passport-tv-login/h5/qrcode/auth?auth_code=${body.data.auth_code}&mobi_app=iphone` 290 | $.msg($.name + "扫码", "使用客户端扫描二维码", "请20s内完成扫码,长按推送放大二维码或点击推送跳转网页获取二维码", { 'open-url': media_url, 'media-url': media_url }) 291 | $.log("二维码已生成,如在通知中获取图片失败,请20s内使用浏览器打开以下地址\n" + `${media_url}`) 292 | return body.data.auth_code 293 | } else { 294 | $.log("- 生成Qrcode失败") 295 | return "0" 296 | } 297 | } catch (e) { 298 | $.logErr(e, response) 299 | } 300 | }) 301 | } 302 | 303 | async function loginConfirm(auth_code) { 304 | const body = { 305 | appkey: "27eb53fc9058f8c3", 306 | auth_code, 307 | local_id: 0, 308 | ts: $.getTimestamp() 309 | } 310 | body.sign = generateSign(body) 311 | const myRequest = { 312 | url: "https://passport.bilibili.com/x/passport-tv-login/qrcode/poll", 313 | headers: { 314 | "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8" 315 | }, 316 | body: $.queryStr(body) 317 | } 318 | return await $.fetch(myRequest).then(response => { 319 | try { 320 | const body = $.toObj(response.body) 321 | if (body.code === 0 && body.message === "0") { 322 | $.log("- 确认登录成功") 323 | const cookieStr = body.data.cookie_info.cookies.map(c => `${c.name}=${c.value}`).join('; '); 324 | [config.cookieStr, config.cookie, config.key] = [cookieStr, string2object(cookieStr), body.data.access_token]; 325 | persistentStore(config) 326 | } 327 | switch (body.code) { 328 | case 0: 329 | $.msg("- 扫码确认成功!") 330 | return true 331 | case 86038: 332 | $.msg("- 二维码已失效") 333 | return false 334 | case 86039: 335 | $.msg("- 二维码尚未确认") 336 | return false 337 | case 86090: 338 | $.msg("- 二维码已扫码未确认") 339 | return false 340 | default: 341 | return false 342 | } 343 | } catch (e) { 344 | $.logErr(e, response) 345 | } 346 | }) 347 | } 348 | 349 | async function watch(aid, bvid, cid) { 350 | $.log("1️⃣ 观看(登录)任务") 351 | if (check("watch")) { 352 | $.log(`- 正在观看(登录)(${bvid})`) 353 | const body = { 354 | aid, 355 | cid, 356 | bvid, 357 | mid: config.user.mid, 358 | csrf: config.cookie.bili_jct, 359 | played_time : 1, 360 | real_played_time: 1, 361 | realtime: 1, 362 | start_ts: $.getTimestamp(), 363 | type: 3, 364 | dt: 2, 365 | play_type: 0, 366 | from_spmid: 0, 367 | spmid: 0, 368 | auto_continued_play: 0, 369 | refer_url: "https%3A%2F%2Ft.bilibili.com%2F", 370 | bsource: "" 371 | } 372 | const myRequest = { 373 | url: 'https://api.bilibili.com/x/click-interface/web/heartbeat', 374 | headers: { 375 | ...baseHeaders, 376 | "referrer": `https://www.bilibili.com/video/${bvid}` 377 | }, 378 | body: $.queryStr(body) 379 | } 380 | await $.fetch(myRequest).then(response => { 381 | const body = $.toObj(response.body) 382 | if (body?.code === 0) { 383 | $.log(`- 累计观看(登录)次数 ${(config.watch.num || 0) + 1}`) 384 | config.user.num = (config.user.num || 0) + 1 385 | config.watch.num = (config.watch.num || 0) + 1 386 | $.setItem($.name + "_daily_bonus", $.toStr(config)) 387 | } else { 388 | $.log("- 观看失败, 原因: " + body?.message) 389 | } 390 | }) 391 | } else { 392 | $.log(`- 今日已观看 记录于${config.watch.time}`) 393 | } 394 | } 395 | 396 | async function share(aid, cid, short_link) { 397 | $.log("2️⃣ 分享任务") 398 | if (check("share")) { 399 | $.log("- 正在分享") 400 | const body = { 401 | access_key: config.key, 402 | actionKey: 'appkey', 403 | appkey: '27eb53fc9058f8c3', 404 | build: '72700100', 405 | c_locale: 'zh-Hans_CN', 406 | device: 'phone', 407 | disable_rcmd: 0, 408 | link: short_link, 409 | mobi_app: 'iphone', 410 | object_extra_fields: '%7B%7D', 411 | oid: aid, 412 | panel_type: 1, 413 | platform: 'ios', 414 | s_locale:'zh-Hans_CN', 415 | share_channel: 'WEIXIN', 416 | share_id: 'main.ugc-video-detail.0.0.pv', 417 | share_origin: 'vinfo_share', 418 | sid: cid, 419 | spm_id: 'main.ugc-video-detail.0.0', 420 | statistics: '%7B%22appId%22%3A1%2C%22version%22%3A%228.44.0%22%2C%22abtest%22%3A%22%22%2C%22platform%22%3A1%7D', 421 | success: 1, 422 | ts: $.getTimestamp() 423 | } 424 | body.sign = generateSign(body) 425 | const myRequest = { 426 | url: 'https://api.bilibili.com/x/share/finish', 427 | headers: {}, 428 | body: $.queryStr(Object.fromEntries(new Map(Array.from(Object.entries(body)).sort()))) 429 | } 430 | await $.fetch(myRequest).then(response => { 431 | const body = $.toObj(response.body) 432 | if (body?.code === 0) { 433 | config.share.num = (config.share.num || 0) + 1 434 | $.log("- 分享成功") 435 | $.setItem($.name + "_daily_bonus", $.toStr(config)) 436 | } else { 437 | $.log("- 分享失败, 原因: " + body?.message) 438 | } 439 | }) 440 | } else { 441 | $.log(`- 今日已分享 记录于${config.share.time}`) 442 | } 443 | } 444 | 445 | async function coin() { 446 | if (config.coins.num >= 50) { 447 | $.log(`- 今日已完成 记录于${config.coins.time}`) 448 | return 449 | } 450 | let like_uid_list = await getFavUid() 451 | if (like_uid_list && like_uid_list.length > 0) { 452 | let aid = await getFavAid(like_uid_list) 453 | //$.log("即将投币的视频aid: " + aid) 454 | if (aid !== 0) { 455 | const body = { 456 | access_key: config.key, 457 | aid, 458 | multiply: 1, 459 | select_like: 0, 460 | } 461 | const myRequest = { 462 | url: "https://app.bilibili.com/x/v2/view/coin/add", 463 | headers: { 464 | ...baseHeaders, 465 | 'accept-encoding': 'gzip, deflate, br', 466 | 'content-type': 'application/x-www-form-urlencoded', 467 | 'app-key': 'iphone' 468 | }, 469 | body: $.queryStr(body) 470 | } 471 | await $.fetch(myRequest).then(async response => { 472 | try { 473 | const body = $.toObj(response.body) 474 | if (body?.code === 0 && body?.message === "0") { 475 | $.log("- 投币成功") 476 | config.user.money -= 1 477 | config.coins.num += 10 478 | config.coins.time = startTime 479 | $.setItem($.name + "_daily_bonus", $.toStr(config)) 480 | } else { 481 | $.log("- 投币失败,原因 " + body.message) 482 | config.coins.failures = (config.coins.failures === 0 || typeof config.coins.failures === 'undefined' ? 1 : config.coins.failures + 1) 483 | $.setItem($.name + "_daily_bonus", $.toStr(config)) 484 | if (config.coins.failures < 11) { 485 | $.log("- 正在重试...重试次数 " + (config.coins.failures - 1) + "(超过十次不再重试)") 486 | await $.wait(300) //减少频繁请求报错概率 487 | await coin() 488 | } 489 | } 490 | } catch (e) { 491 | $.logErr(e, response) 492 | } 493 | }) 494 | } else { 495 | $.log("- 获取随机投币视频失败") 496 | } 497 | } else { 498 | $.log("- 获取随机关注用户列表失败") 499 | } 500 | } 501 | 502 | async function getFavUid() { 503 | const myRequest = { 504 | url: `https://api.bilibili.com/x/relation/followings?vmid=${config.cookie.DedeUserID}&ps=10&order_type=attention`, 505 | headers: { 506 | ...baseHeaders 507 | } 508 | } 509 | return await $.fetch(myRequest).then(response => { 510 | try { 511 | const body = $.toObj(response.body) 512 | let like_uid_list = new Array() 513 | if (body?.code === 0) { 514 | $.log("- 获取关注列表成功") 515 | let like_list = body?.data?.list 516 | //let $.name_list = new Array() 517 | for (let i = 0; i < like_list.length; i ++) { 518 | //$.name_list[i] = like_list[i].u$.name 519 | like_uid_list[i] = like_list[i].mid 520 | } 521 | return like_uid_list 522 | //$.log($.toStr($.name_list)) 523 | } else { 524 | $.log("- 获取关注列表成失败") 525 | $.log("- 原因 " + body?.message) 526 | return like_uid_list 527 | } 528 | } catch (e) { 529 | $.logErr(e, response) 530 | } 531 | }) 532 | } 533 | 534 | async function getFavAid(arr) { 535 | //$.log("- 获取关注列表中的随机视频") 536 | let random_int = Math.floor((Math.random()*arr.length)) 537 | let random_mid = arr[random_int] 538 | let wbiSigns = getWbiSigns({mid: random_mid}) 539 | const myRequest = { 540 | url: `https://api.bilibili.com/x/space/wbi/arc/search?${wbiSigns}`, 541 | headers: { 542 | ...baseHeaders, 543 | 'referer': 'https://space.bilibili.com' 544 | } 545 | } 546 | return await $.fetch(myRequest).then(response => { 547 | try { 548 | const body = $.toObj(response.body) 549 | if (body?.code === 0 && body.data?.list?.vlist.some(Boolean)) { 550 | $.log("- 获取投币视频成功") 551 | let vlist = body.data?.list?.vlist 552 | let random_v_int = Math.floor((Math.random() * vlist.length)) 553 | let aid = vlist[random_v_int]?.aid 554 | $.log("- 作者: " + vlist[random_v_int]['author'] + "; 视频标题: " + vlist[random_v_int]['title']) 555 | return aid 556 | } else { 557 | $.log("- 获取投币视频失败") 558 | $.log("- 原因 " + body?.message) 559 | return 0 560 | } 561 | } catch (e) { 562 | $.logErr(e, response) 563 | } 564 | }, reason => { 565 | $.log("- 获取投币视频失败") 566 | $.log("- 原因 " + $.toStr(reason)) 567 | return 0 568 | }) 569 | } 570 | 571 | async function silver2coin() { 572 | $.log("#### 银瓜子兑换硬币任务") 573 | const body = { 574 | csrf: config.cookie.bili_jct, 575 | csrf_token: config.cookie.bili_jct 576 | } 577 | const myRequest = { 578 | url: "https://api.live.bilibili.com/xlive/revenue/v1/wallet/silver2coin", 579 | headers: { 580 | 'cookie': config.cookieStr 581 | }, 582 | body: $.queryStr(body) 583 | } 584 | await $.fetch(myRequest).then(response => { 585 | try { 586 | const body = $.toObj(response.body) 587 | // 兑换成功 588 | if (body && body.code === 0) { 589 | $.log(`- 成功兑换: ${body.data.coin}个硬币`) 590 | $.log(`当前银瓜子: ${body.data.silver} , 当前金瓜子: ${body.data.gold}`) 591 | } 592 | // 兑换中止(重复兑换&银瓜子不足) 593 | else if (body && body.code === 403) { 594 | $.log("- 未成功兑换") 595 | $.log(`- 原因: ${body.message}`) 596 | } 597 | // 兑换失败 598 | else { 599 | let subTitle = "- 兑换失败" 600 | let detail = `- 原因: ${body.message}` 601 | $.log(subTitle) 602 | $.log(detail) 603 | } 604 | } catch (e) { 605 | $.logErr(e, response) 606 | } 607 | }) 608 | } 609 | 610 | async function liveSign() { 611 | $.log("#### 直播签到任务") 612 | const myRequest = { 613 | url: "https://api.live.bilibili.com/xlive/web-ucenter/v1/sign/DoSign", 614 | headers: { 615 | ...baseHeaders 616 | } 617 | } 618 | await $.fetch(myRequest).then(response => { 619 | try { 620 | const body = $.toObj(response.body) 621 | if (body?.code === 0) { 622 | $.log("- 签到成功") 623 | $.log(`签到奖励:${body.data.text},连续签到${body.data.hadSignDays}天`) 624 | } else if (body && body.code === 1011040){ 625 | $.log("- 今日已完成") 626 | } else { 627 | $.log("- 签到失败") 628 | $.log("- 原因 " + body?.message) 629 | } 630 | } catch (e) { 631 | $.logErr(e, response) 632 | } 633 | }) 634 | } 635 | 636 | async function bigScoreSign() { 637 | $.log("#### 大会员大积分签到任务") 638 | if (check("score")) { 639 | const myRequest = { 640 | url: `https://api.bilibili.com/pgc/activity/score/task/sign2?csrf=${config.cookie.bili_jct}`, 641 | headers: { 642 | ...baseHeaders, 643 | 'Referer': 'https://big.bilibili.com/mobile/bigPoint/task', 644 | }, 645 | body: { t: startTime, device: "phone", ts: $.getTimestamp() } 646 | } 647 | return await $.fetch(myRequest).then(response => { 648 | try { 649 | const body = $.toObj(response.body) 650 | if (body?.code === 0 && body?.message === "success") { 651 | $.log("- 签到成功") 652 | return true 653 | } else { 654 | $.log("- 签到失败") 655 | $.log("- 原因 " + body?.message) 656 | return false 657 | } 658 | } catch (e) { 659 | $.logErr(e, response) 660 | } 661 | }) 662 | } else { 663 | $.log("- 今日已完成") 664 | } 665 | } 666 | 667 | async function vipExtraExStatus() { 668 | const myRequest = { 669 | url: `https://api.bilibili.com/x/vip/web/vip_center/v2?csrf=${config.cookie.bili_jct}&access_key=${config.key}&appkey=27eb53fc9058f8c3&statistics=%7B%22appId%22%3A1%2C%22version%22%3A%228.44.0%22%2C%22abtest%22%3A%22%22%2C%22platform%22%3A1%7D`, 670 | headers: { 671 | ...baseHeaders 672 | } 673 | } 674 | return await $.fetch(myRequest).then(response => { 675 | try { 676 | const body = $.toObj(response.body) 677 | if (body?.code === 0) { 678 | return body.data.experience 679 | } else { 680 | return 0 681 | } 682 | } catch (e) { 683 | $.logErr(e, response) 684 | } 685 | }) 686 | } 687 | 688 | async function vipExtraEx() { 689 | $.log("#### 大会员每日额外经验值") 690 | const body = { 691 | csrf: config.cookie.bili_jct, 692 | ts: $.getTimestamp(), 693 | buvid: config.cookie.Buvid, 694 | mobi_app: 'iphone', 695 | platform: 'ios', 696 | appkey: '27eb53fc9058f8c3', 697 | access_key: config.key 698 | } 699 | body.sign = generateSign(body) 700 | const myRequest = { 701 | url: "https://api.bilibili.com/x/vip/experience/add", 702 | headers: { 703 | 'accept': 'application/json, text/plain, */*', 704 | 'app-key': 'iphone' 705 | }, 706 | body: $.queryStr(body) 707 | } 708 | return await $.fetch(myRequest).then(response => { 709 | try { 710 | const body = $.toObj(response.body) 711 | if (body?.code === 0 && body?.message === "0") { 712 | $.log("- 成功获得10经验值") 713 | return true 714 | } else { 715 | $.log("- 每日额外经验任务失败") 716 | $.log("- 原因 " + body?.message) 717 | return false 718 | } 719 | } catch (e) { 720 | $.logErr(e, response) 721 | } 722 | }) 723 | } 724 | 725 | async function bigScoreSignStatus() { 726 | const myRequest = { 727 | url: `https://api.bilibili.com/x/vip/vip_center/sign_in/three_days_sign?csrf=${config.cookie.bili_jct}&access_key=${config.key}&appkey=27eb53fc9058f8c3&statistics=%7B%22appId%22%3A1%2C%22version%22%3A%228.44.0%22%2C%22abtest%22%3A%22%22%2C%22platform%22%3A1%7D`, 728 | headers: { 729 | ...baseHeaders 730 | } 731 | } 732 | return await $.fetch(myRequest).then(response => { 733 | try { 734 | const body = $.toObj(response.body) 735 | if (body?.code === 0 && body?.message === "0") { 736 | return body.data 737 | } else { 738 | return 0 739 | } 740 | } catch (e) { 741 | $.logErr(e, response) 742 | } 743 | }) 744 | } 745 | 746 | async function bigScoreStatus() { 747 | const myRequest = { 748 | url: `https://api.bilibili.com/x/vip_point/task/combine?csrf=${config.cookie.bili_jct}&build=84400100&mobi_app=iphone&access_key=${config.key}&appkey=27eb53fc9058f8c3&statistics=%7B%22appId%22%3A1%2C%22version%22%3A%228.44.0%22%2C%22abtest%22%3A%22%22%2C%22platform%22%3A1%7D`, 749 | headers: { 750 | ...baseHeaders 751 | } 752 | } 753 | return await $.fetch(myRequest).then(response => { 754 | try { 755 | const body = $.toObj(response.body) 756 | if (body?.code === 0) { 757 | return body.data 758 | } else { 759 | return 0 760 | } 761 | } catch (e) { 762 | $.logErr(e, response) 763 | } 764 | }) 765 | } 766 | 767 | async function bigScoreVipMallView() { 768 | const myRequest = { 769 | url: "https://show.bilibili.com/api/activity/fire/common/event/dispatch", 770 | headers: { 771 | ...baseHeaders, 772 | 'Content-Type' : 'application/json', 773 | }, 774 | body: `{"eventId":"hevent_oy4b7h3epeb"}` 775 | } 776 | return await $.fetch(myRequest).then(response => { 777 | try { 778 | const body = $.toObj(response.body) 779 | if (body?.code === 0 && body?.message === "SUCCESS") { 780 | $.log("- 成功获得10点大积分") 781 | return true 782 | } else { 783 | $.log("- 浏览会员购任务失败") 784 | $.log("- 原因 " + body?.message) 785 | return false 786 | } 787 | } catch (e) { 788 | $.logErr(e, response) 789 | } 790 | }) 791 | } 792 | 793 | async function bigScoreAnimateTab() { 794 | const myRequest = { 795 | url: `https://api.bilibili.com/pgc/activity/deliver/task/complete?access_key=${config.key}&appkey=27eb53fc9058f8c3&position=jp_channel&statistics=%7B%22appId%22%3A1%2C%22version%22%3A%228.44.0%22%2C%22abtest%22%3A%22%22%2C%22platform%22%3A1%7D`, 796 | method: "POST", 797 | headers: {} 798 | } 799 | return await $.fetch(myRequest).then(response => { 800 | try { 801 | const body = $.toObj(response.body) 802 | if (body?.code === 0 && body?.message === "success") { 803 | $.log("- 成功获得10点大积分") 804 | return true 805 | } else { 806 | $.log("- 浏览追番频道任务失败") 807 | $.log("- 原因 " + body?.message) 808 | return false 809 | } 810 | } catch (e) { 811 | $.logErr(e, response) 812 | } 813 | }) 814 | } 815 | 816 | async function bigScoreFilmTab() { 817 | const myRequest = { 818 | url: `https://api.bilibili.com/pgc/activity/deliver/task/complete?access_key=${config.key}&appkey=27eb53fc9058f8c3&position=tv_channel&statistics=%7B%22appId%22%3A1%2C%22version%22%3A%228.44.0%22%2C%22abtest%22%3A%22%22%2C%22platform%22%3A1%7D`, 819 | method: "POST", 820 | headers: {} 821 | } 822 | return await $.fetch(myRequest).then(response => { 823 | try { 824 | const body = $.toObj(response.body) 825 | if (body?.code === 0 && body?.message === "success") { 826 | $.log("- 成功获得10点大积分") 827 | return true 828 | } else { 829 | $.log("- 浏览影视频道任务失败") 830 | $.log("- 原因 " + body?.message) 831 | return false 832 | } 833 | } catch (e) { 834 | $.logErr(e, response) 835 | } 836 | }) 837 | } 838 | 839 | async function bigScoreDressView() { 840 | const body = { 841 | csrf: config.cookie.bili_jct, 842 | ts: $.getTimestamp(), 843 | taskCode: 'dress-view', 844 | statistics: '%7B%22appId%22%3A1%2C%22version%22%3A%228.44.0%22%2C%22abtest%22%3A%22%22%2C%22platform%22%3A1%7D', 845 | appkey: '27eb53fc9058f8c3', 846 | access_key: config.key 847 | } 848 | const myRequest = { 849 | url: 'https://api.bilibili.com/pgc/activity/score/task/complete/v2', 850 | headers: {}, 851 | body: $.queryStr(body) 852 | } 853 | return await $.fetch(myRequest).then(response => { 854 | try { 855 | const body = $.toObj(response.body) 856 | if (body?.code === 0 && body?.message === "success") { 857 | $.log("- 成功获得10点大积分") 858 | return true 859 | } else { 860 | $.log("- 浏览装扮商城主页任务失败") 861 | return false 862 | } 863 | } catch (e) { 864 | $.logErr(e, response) 865 | } 866 | }) 867 | } 868 | 869 | async function bigScoreOgvWatchNew() { 870 | const body = { 871 | csrf: config.cookie.bili_jct, 872 | ts: $.getTimestamp(), 873 | taskCode: 'ogvwatchnew', 874 | mobi_app: 'iphone', 875 | platform: 'ios', 876 | appkey: '27eb53fc9058f8c3', 877 | access_key: config.key 878 | } 879 | body.sign = generateSign(body) 880 | const myRequest = { 881 | url: 'https://api.bilibili.com/pgc/activity/score/task/receive/v2', 882 | headers: { 883 | ...baseHeaders, 884 | 'Content-Type': 'application/x-www-form-urlencoded', 885 | 'Referer': 'https://big.bilibili.com/mobile/bigPoint/task' 886 | }, 887 | body: $.queryStr(body) 888 | } 889 | return await $.fetch(myRequest).then(async response => { 890 | try { 891 | const body = $.toObj(response.body) 892 | if (body?.code === 0 && body?.message === "success") { 893 | if (config.task_id && config.token) { 894 | await bigScoreOgvWatchComplete(config.task_id, config.token) 895 | delete config.task_id, delete config.token 896 | $.setItem($.name + "_daily_bonus", $.toStr(config)) 897 | return true 898 | } 899 | delete config.task_id, delete config.token 900 | const bangumi = await getBangumi() 901 | const episode = bangumi.episodes[Math.floor(Math.random() * bangumi.episodes.length)] 902 | if (bangumi) { 903 | const { task_id, token } = await bigScoreOgvWatchMaterial(bangumi.season_id, episode.ep_id) || {} 904 | Object.assign(config, { task_id, token }) 905 | } else { 906 | $.log("- 获取剧集明细失败") 907 | } 908 | $.setItem($.name + "_daily_bonus", $.toStr(config)) 909 | } else { 910 | $.log("- 大会员观看剧集任务接取失败") 911 | $.log("- 原因 " + body?.message) 912 | } 913 | return false 914 | } catch (e) { 915 | $.logErr(e, response) 916 | } 917 | }) 918 | } 919 | 920 | async function bigScoreOgvWatchMaterial(season_id, epid) { 921 | const myRequest = { 922 | url: `https://api.bilibili.com/pgc/activity/deliver/material/receive?access_key=${config.key}&appkey=27eb53fc9058f8c3&build=84400100&ep_id=${epid}&mobi_app=iphone&season_id=${season_id}`, 923 | headers: { 924 | ...baseHeaders, 925 | 'Content-Type': 'application/json', 926 | 'Referer': 'https://big.bilibili.com/mobile/bigPoint/task' 927 | }, 928 | method: "POST" 929 | } 930 | return await $.fetch(myRequest).then(response => { 931 | try { 932 | const body = $.toObj(response.body) 933 | if (body?.code === 0 && body?.message === "success") { 934 | $.log("- 任务计时开始,等待十分钟...") 935 | return body.data.watch_count_down_cfg 936 | } else { 937 | $.log("- 任务计时失败") 938 | $.log("- 原因 " + body?.message) 939 | return 0 940 | } 941 | } catch (e) { 942 | $.logErr(e, response) 943 | } 944 | }) 945 | } 946 | 947 | async function bigScoreOgvWatchComplete(task_id, token) { 948 | const timestamp =($.startTime / 1000 + (Math.floor(Math.random() * 900) + 100) / 1000000).toFixed(6) 949 | const task_sign = md5(`${timestamp}#df2a46fd53&${token}`).toUpperCase() 950 | const myRequest = { 951 | url: `https://api.bilibili.com/pgc/activity/deliver/task/complete?access_key=${config.key}&appkey=27eb53fc9058f8c3&task_id=${task_id}&task_sign=${task_sign}×tamp=${timestamp}&token=${token}`, 952 | method: "POST", 953 | headers: {} 954 | } 955 | await $.fetch(myRequest).then(async response => { 956 | try { 957 | const body = $.toObj(response.body) 958 | if (body?.code === 0 && body?.message === "success") { 959 | $.log("- 大会员观看剧集任务完成") 960 | } else { 961 | $.log("- 大会员观看剧集任务失败") 962 | $.log("- 原因 " + body?.message) 963 | } 964 | } catch (e) { 965 | $.logErr(e, response) 966 | } 967 | }) 968 | } 969 | 970 | async function getBangumi() { 971 | const myRequest = { 972 | url: 'https://api.bilibili.com/pgc/view/web/season?season_id=33378' 973 | } 974 | return await $.fetch(myRequest).then(response => { 975 | try { 976 | const body = $.toObj(response.body) 977 | if (body?.code === 0 && body?.message === "success") { 978 | return body.result 979 | } else { 980 | return 0 981 | } 982 | } catch (e) { 983 | $.logErr(e, response) 984 | } 985 | }) 986 | } 987 | 988 | async function vipPrivilege(type) { 989 | const body = { 990 | csrf: config.cookie.bili_jct, 991 | type 992 | } 993 | const myRequest = { 994 | url: 'https://api.bilibili.com/x/vip/privilege/receive', 995 | headers: { 996 | 'Cookie': config.cookieStr 997 | }, 998 | body: $.queryStr(body) 999 | } 1000 | return await $.fetch(myRequest).then(response => { 1001 | try { 1002 | const body = $.toObj(response.body) 1003 | if (body?.code === 0) { 1004 | return true 1005 | } else { 1006 | $.log("- 领取大会员每月福利失败") 1007 | $.log("- 原因 " + body?.message) 1008 | if (type === 1) { 1009 | $.msg("年度大会员月度福利", "B币券领取失败", "原因: " + body?.message) 1010 | } 1011 | return false 1012 | //其他福利没什么用,失败也无需单独通知 1013 | } 1014 | } catch (e) { 1015 | $.logErr(e, response) 1016 | } 1017 | }) 1018 | } 1019 | 1020 | async function Charge(mid, bp_num) { 1021 | $.log("#### B币券自动充电") 1022 | const body = { 1023 | bp_num, 1024 | is_bp_remains_prior: true, 1025 | up_mid: mid, 1026 | otype: 'up', 1027 | oid: mid, 1028 | csrf: config.cookie.bili_jct 1029 | } 1030 | const myRequest = { 1031 | url: 'https://api.bilibili.com/x/ugcpay/web/v2/trade/elec/pay/quick', 1032 | headers: { 1033 | ...baseHeaders 1034 | }, 1035 | body: $.queryStr(body) 1036 | } 1037 | await $.fetch(myRequest).then(response => { 1038 | try { 1039 | const body = $.toObj(response.body) 1040 | if (body?.code === 0) { 1041 | if (body?.data?.status === 4) { 1042 | if (mid === config.user.mid) { 1043 | $.log("- 为自己充电成功") 1044 | } else { 1045 | $.log(`- 为用户id为${mid}的用户充电成功`) 1046 | } 1047 | } else if (body?.data?.status === -4) { 1048 | $.log("- 充电失败, B币不足") 1049 | } else { 1050 | $.log("- 充电失败") 1051 | $.log("- 原因 " + body?.message) 1052 | } 1053 | } else { 1054 | $.log("- 充电失败") 1055 | $.log("- 原因 " + body?.message) 1056 | } 1057 | } catch (e) { 1058 | $.logErr(e, response) 1059 | } 1060 | }) 1061 | } 1062 | 1063 | async function me() { 1064 | $.log("#### 用户信息") 1065 | const myRequest = { 1066 | url: 'https://api.bilibili.com/x/web-interface/nav', 1067 | headers: { 1068 | ...baseHeaders 1069 | } 1070 | } 1071 | return await $.fetch(myRequest).then(response => { 1072 | try { 1073 | const body = $.toObj(response.body) 1074 | if (body?.code) { 1075 | $.log("- ❌❌获取用户信息失败(请更新cookie)") 1076 | $.setItem($.name + "_daily_bonus", (config = config?.Settings && Object.keys(config.Settings).length ? { Settings: config.Settings } : null) && $.toStr(config))//清空cookie但保留boxjs设置 1077 | return false 1078 | } else { 1079 | $.log("- 🎉cookie有效任务即将开始🎉") 1080 | config.user = body?.data 1081 | config.user.num = check("user") ? 1 : (config.user.num || 0) + 1 1082 | $.setItem($.name + "_daily_bonus", $.toStr(config)) 1083 | 1084 | config.user.mext_exp = config.user.level_info.next_exp - config.user.level_info.current_exp 1085 | config.user.next_day = Math.ceil(config.user.mext_exp / 15) 1086 | config.user.v6_exp = 28800 - config.user.level_info.current_exp 1087 | config.user.v6_day = Math.ceil(config.user.v6_exp / 15) 1088 | 1089 | if (config.user.vipStatus === 1) { 1090 | $.log("- 💖尊贵的" + config.user.vip_label.text + "用户💖") 1091 | $.log("- 您的大会员过期时间为:" + format(config.user.vipDueDate, 'yyyy-MM-dd') + "日") 1092 | } 1093 | $.log("- 用户名称: " + config.user.uname) 1094 | $.log("- 用户ID: " + config.user.mid) 1095 | $.log("- 用户硬币: " + Math.floor(config.user.money)) 1096 | $.log("- 用户B币: " + config.user.wallet.bcoin_balance) 1097 | $.log("- 用户等级: " + config.user.level_info.current_level) 1098 | $.log( 1099 | `- 当前经验: ${config.user.level_info.current_exp}/${config.user.level_info.next_exp}` 1100 | ) 1101 | $.log(`- 升级还需经验: ${config.user.mext_exp}`) 1102 | $.log( 1103 | `- 距离下级还需: ${config.user.next_day}天(登录 观看 分享)` 1104 | ) 1105 | $.log( 1106 | `- 距离满级还需: ${Math.max(0, config.user.v6_day)}天(登录 观看 分享)` 1107 | ) 1108 | $.log(`- 剩余硬币最多可投: ${Math.floor((config.user.money)/5)}天`) 1109 | $.log( 1110 | "- 距离满级最快还需: " + 1111 | Math.max(0, Math.ceil(config.user.v6_exp / 65)) + 1112 | "天(日常 + 投币*5)" 1113 | ) 1114 | return true 1115 | } 1116 | } catch (e) { 1117 | $.logErr(e, response) 1118 | } 1119 | }, reason => { 1120 | $.msg($.name, "- 获取用户信息失败", $.toStr(reason)) 1121 | return false 1122 | }) 1123 | 1124 | } 1125 | 1126 | async function queryStatus() { 1127 | $.log("#### 检查任务进行状况") 1128 | const myRequest = { 1129 | url: "https://api.bilibili.com/x/member/web/exp/reward", 1130 | headers: { 1131 | ...baseHeaders 1132 | } 1133 | } 1134 | await $.fetch(myRequest).then(response => { 1135 | try { 1136 | const body = $.toObj(response.body) 1137 | if (body?.code === 0) { 1138 | if (body.data.login) { 1139 | $.log("- 今日已登录") 1140 | config.user.num = config.user?.num || 1 1141 | if (!config['user'].hasOwnProperty("time")) config.user.time = startTime 1142 | } else { 1143 | $.log("! 今日尚未登录") 1144 | config.user.num = 0 1145 | } 1146 | if (body.data.watch){ 1147 | $.log("- 今日已观看") 1148 | config.watch.num = config.watch?.num || 1 1149 | if (!config['watch'].hasOwnProperty("time")) config.watch.time = startTime 1150 | } else { 1151 | $.log("! 今日尚未观看") 1152 | config.watch.num = 0 1153 | } 1154 | if (body.data.share){ 1155 | $.log("- 今日已分享") 1156 | config.share.num = config.share?.num || 1 1157 | if (!config['share'].hasOwnProperty("time")) config.share.time = startTime 1158 | } else { 1159 | $.log("! 今日尚未分享") 1160 | config.share.num = 0 1161 | } 1162 | if (body.data.coins === 50){ 1163 | $.log("- 今日已投币") 1164 | if (!config['coins'].hasOwnProperty("time")) config.coins.time = startTime 1165 | } else if ((body.data.coins / 10) >= Number(config.Settings?.exec ?? 5)) { 1166 | if (!config['coins'].hasOwnProperty("time")) config.coins.time = startTime 1167 | $.log("- 今日已投币(达到用户设定数量)") 1168 | } else if (config.user.money <= 5) { 1169 | $.log("! 硬币数不足") 1170 | } else { 1171 | $.log("! 今日投币未完成") 1172 | } 1173 | config.coins.num = body.data.coins 1174 | $.setItem($.name + "_daily_bonus", $.toStr(config)) 1175 | } else { 1176 | $.log("- 查询失败") 1177 | $.log("- 原因 " + body?.message) 1178 | } 1179 | } catch (e) { 1180 | $.logErr(e, response) 1181 | } 1182 | }) 1183 | } 1184 | 1185 | async function dynamic() { 1186 | const myRequest = { 1187 | url: `https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/dynamic_new?uid=${config.cookie.DedeUserID}&type_list=8&from=&platform=web`, 1188 | headers: { 1189 | ...baseHeaders 1190 | } 1191 | } 1192 | await $.fetch(myRequest).then(response => { 1193 | try { 1194 | const body = $.toObj(response.body) 1195 | if (body?.data?.cards) { 1196 | cards = body.data.cards 1197 | const { user, watch, share } = config 1198 | user.time = watch.time = share.time = startTime 1199 | } 1200 | } catch (e) { 1201 | $.logErr(e, response) 1202 | } 1203 | }) 1204 | } 1205 | 1206 | // Wbi签名获取 1207 | function getWbiSigns(r){function t(r){let t="";return e.forEach(s=>{t+=r[s]}),t.slice(0,32)}function s(r,s,u){const e=t(s+u),i=parseInt($.startTime/1e3);let n="";r=Object.assign(r,{wts:i}),n=$.queryStr(Object.fromEntries(new Map(Array.from(Object.entries(r)).sort())));const l=md5(n+e);return n+"&w_rid="+l}function u(){return img_url=config.user.wbi_img.img_url,sub_url=config.user.wbi_img.sub_url,{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]}}const e=[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],i=u();return s(r,i.img_key,i.sub_key)} 1208 | 1209 | // md5(32位) 1210 | function md5(r){function n(r,n){return r<>>32-n}function t(r,n){var t,o,e,u,f;return e=2147483648&r,u=2147483648&n,t=1073741824&r,o=1073741824&n,f=(1073741823&r)+(1073741823&n),t&o?2147483648^f^e^u:t|o?1073741824&f?3221225472^f^e^u:1073741824^f^e^u:f^e^u}function o(r,n,t){return r&n|~r&t}function e(r,n,t){return r&t|n&~t}function u(r,n,t){return r^n^t}function f(r,n,t){return n^(r|~t)}function i(r,e,u,f,i,a,c){return r=t(r,t(t(o(e,u,f),i),c)),t(n(r,a),e)}function a(r,o,u,f,i,a,c){return r=t(r,t(t(e(o,u,f),i),c)),t(n(r,a),o)}function c(r,o,e,f,i,a,c){return r=t(r,t(t(u(o,e,f),i),c)),t(n(r,a),o)}function C(r,o,e,u,i,a,c){return r=t(r,t(t(f(o,e,u),i),c)),t(n(r,a),o)}function g(r){for(var n,t=r.length,o=t+8,e=(o-o%64)/64,u=16*(e+1),f=Array(u-1),i=0,a=0;a>>29,f}function h(r){var n,t,o="",e="";for(t=0;t<=3;t++)n=r>>>8*t&255,e="0"+n.toString(16),o+=e.slice(-2);return o}function d(r){r=r.replace(/\r\n/g,"\n");for(var n="",t=0;t127&&o<2048?(n+=String.fromCharCode(o>>6|192),n+=String.fromCharCode(63&o|128)):(n+=String.fromCharCode(o>>12|224),n+=String.fromCharCode(o>>6&63|128),n+=String.fromCharCode(63&o|128))}return n}var m,S,v,l,A,s,y,p,w,L=Array(),b=7,j=12,k=17,q=22,x=5,z=9,B=14,D=20,E=4,F=11,G=16,H=23,I=6,J=10,K=15,M=21;for(r=d(r),L=g(r),s=1732584193,y=4023233417,p=2562383102,w=271733878,m=0;mObject(e)[t]),e);return void 0===a?s:a}lodash_set(e={},t="",s){return Array.isArray(t)||(t=this.toPath(t)),t.slice(0,-1).reduce(((e,s,a)=>Object(e[s])===e[s]?e[s]:e[s]=/^\d+$/.test(t[a+1])?[]:{}),e)[t[t.length-1]]=s,e}toPath(e){return e.replace(/\[(\d+)\]/g,".$1").split(".").filter(Boolean)}getItem(e=new String,t=null){let s=t;switch(e.startsWith("@")){case!0:const{key:t,path:a}=e.match(/^@(?[^.]+)(?:\.(?.*))?$/)?.groups;e=t;let o=this.getItem(e,{});"object"!=typeof o&&(o={}),s=this.lodash_get(o,a);try{s=JSON.parse(s)}catch(e){}break;default:switch(this.platform()){case"Surge":case"Loon":case"Stash":case"Egern":case"Shadowrocket":s=$persistentStore.read(e);break;case"Quantumult X":s=$prefs.valueForKey(e);break;default:s=this.data?.[e]||null;break}try{s=JSON.parse(s)}catch(e){}break}return s??t}setItem(e=new String,t=new String){let s=!1;switch(typeof t){case"object":t=JSON.stringify(t);break;default:t=String(t);break}switch(e.startsWith("@")){case!0:const{key:a,path:o}=e.match(/^@(?[^.]+)(?:\.(?.*))?$/)?.groups;e=a;let r=this.getItem(e,{});"object"!=typeof r&&(r={}),this.lodash_set(r,o,t),s=this.setItem(e,r);break;default:switch(this.platform()){case"Surge":case"Loon":case"Stash":case"Egern":case"Shadowrocket":s=$persistentStore.write(t,e);break;case"Quantumult X":s=$prefs.setValueForKey(t,e);break;default:s=this.data?.[e]||null;break}break}return s}async fetch(e={}||"",t={}){switch(e.constructor){case Object:e={...e,...t};break;case String:e={url:e,...t};break}e.method||(e.method=e.body??e.bodyBytes?"POST":"GET"),e.headers?.Host,e.headers?.[":authority"],e.headers?.["Content-Length"],e.headers?.["content-length"];const s=e.method.toLocaleLowerCase();switch(this.platform()){case"Loon":case"Surge":case"Stash":case"Egern":case"Shadowrocket":default:return e.policy&&(this.isLoon()&&(e.node=e.policy),this.isStash()&&this.lodash_set(e,"headers.X-Stash-Selected-Proxy",encodeURI(e.policy))),e.followRedirect&&((this.isSurge()||this.isLoon())&&(e["auto-redirect"]=!1),this.isQuanX()&&(e.opts?e.opts.redirection=!1:e.opts={redirection:!1})),e.bodyBytes&&!e.body&&(e.body=e.bodyBytes,delete e.bodyBytes),await new Promise(((t,a)=>{$httpClient[s](e,((s,o,r)=>{s?a(s):(o.ok=/^2\d\d$/.test(o.status),o.statusCode=o.status,r&&(o.body=r,1==e["binary-mode"]&&(o.bodyBytes=r)),t(o))}))}));case"Quantumult X":return e.policy&&this.lodash_set(e,"opts.policy",e.policy),"boolean"==typeof e["auto-redirect"]&&this.lodash_set(e,"opts.redirection",e["auto-redirect"]),e.body instanceof ArrayBuffer?(e.bodyBytes=e.body,delete e.body):ArrayBuffer.isView(e.body)?(e.bodyBytes=e.body.buffer.slice(e.body.byteOffset,e.body.byteLength+e.body.byteOffset),delete object.body):e.body&&delete e.bodyBytes,await $task.fetch(e).then((e=>(e.ok=/^2\d\d$/.test(e.statusCode),e.status=e.statusCode,e)),(e=>Promise.reject(e.error)))}}time(e,t=null){const s=t?new Date(t):new Date;let a={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(e)&&(e=e.replace(RegExp.$1,(s.getFullYear()+"").slice(4-RegExp.$1.length)));for(let t in a)new RegExp("("+t+")").test(e)&&(e=e.replace(RegExp.$1,1==RegExp.$1.length?a[t]:("00"+a[t]).slice((""+a[t]).length)));return e}getBaseURL(e){return e.replace(/[?#].*$/,"")}isAbsoluteURL(e){return/^[a-z][a-z0-9+.-]*:/.test(e)}getURLParameters(e){return(e.match(/([^?=&]+)(=([^&]*))/g)||[]).reduce(((e,t)=>(e[t.slice(0,t.indexOf("="))]=t.slice(t.indexOf("=")+1),e)),{})}getTimestamp(e=new Date){return Math.floor(e.getTime()/1e3)}queryStr(e){let t=[];for(let s in e)e.hasOwnProperty(s)&&t.push(`${s}=${e[s]}`);return t.join("&")}queryObj(e){let t={},s=e.split("&");for(let e of s){let s=e.split("="),a=s[0],o=s[1]||"";a&&(t[a]=o)}return t}msg(e=this.name,t="",s="",a={}){const o=e=>{const{$open:t,$copy:s,$media:a,$mediaMime:o}=e;switch(typeof e){case void 0:return e;case"string":switch(this.platform()){case"Surge":case"Stash":case"Egern":default:return{url:e};case"Loon":case"Shadowrocket":return e;case"Quantumult X":return{"open-url":e}}case"object":switch(this.platform()){case"Surge":case"Stash":case"Egern":case"Shadowrocket":default:{const r={};let i=e.openUrl||e.url||e["open-url"]||t;i&&Object.assign(r,{action:"open-url",url:i});let n=e["update-pasteboard"]||e.updatePasteboard||s;n&&Object.assign(r,{action:"clipboard",text:n});let l=e.mediaUrl||e["media-url"]||a;if(l){let e,t;if(l.startsWith("http"));else if(l.startsWith("data:")){const[s]=l.split(";"),[,a]=l.split(",");e=a,t=s.replace("data:","")}else{e=l,t=(e=>{const t={JVBERi0:"application/pdf",R0lGODdh:"image/gif",R0lGODlh:"image/gif",iVBORw0KGgo:"image/png","/9j/":"image/jpg"};for(var s in t)if(0===e.indexOf(s))return t[s];return null})(l)}Object.assign(r,{"media-url":l,"media-base64":e,"media-base64-mime":o??t})}return Object.assign(r,{"auto-dismiss":e["auto-dismiss"],sound:e.sound}),r}case"Loon":{const o={};let r=e.openUrl||e.url||e["open-url"]||t;r&&Object.assign(o,{openUrl:r});let i=e.mediaUrl||e["media-url"]||a;i&&Object.assign(o,{mediaUrl:i});let n=e["update-pasteboard"]||e.updatePasteboard||s;return n&&Object.assign(o,{clipboard:n}),o}case"Quantumult X":{const o={};let r=e["open-url"]||e.url||e.openUrl||t;r&&Object.assign(o,{"open-url":r});let i=e.mediaUrl||e["media-url"]||a;i&&Object.assign(o,{"media-url":i});let n=e["update-pasteboard"]||e.updatePasteboard||s;return n&&Object.assign(o,{"update-pasteboard":n}),o}}default:return}};if(!this.isMute)switch(this.platform()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":default:$notification.post(e,t,s,o(a));break;case"Quantumult X":$notify(e,t,s,o(a));break}}log(...e){e.length>0&&(this.logs=[...this.logs,...e]),console.log(e.join(this.logSeparator))}logErr(e,t){switch(this.platform()){case"Surge":case"Loon":case"Stash":case"Egern":case"Shadowrocket":case"Quantumult X":default:this.log("",`❗️${this.name}, 错误!`,e,t);break}}wait(e){return new Promise((t=>setTimeout(t,e)))}done(e={}){const t=((new Date).getTime()-this.startTime)/1e3;switch(this.log("",`🔔${this.name}, 结束! 🕛 ${t} 秒`),this.platform()){case"Surge":e.policy&&this.lodash_set(e,"headers.X-Surge-Policy",e.policy),$done(e);break;case"Loon":e.policy&&(e.node=e.policy),$done(e);break;case"Stash":e.policy&&this.lodash_set(e,"headers.X-Stash-Selected-Proxy",encodeURI(e.policy)),$done(e);break;case"Egern":$done(e);break;case"Shadowrocket":default:$done(e);break;case"Quantumult X":e.policy&&this.lodash_set(e,"opts.policy",e.policy),delete e["auto-redirect"],delete e["auto-cookie"],delete e["binary-mode"],delete e.charset,delete e.host,delete e.insecure,delete e.method,delete e.opt,delete e.path,delete e.policy,delete e["policy-descriptor"],delete e.scheme,delete e.sessionIndex,delete e.statusCode,delete e.timeout,e.body instanceof ArrayBuffer?(e.bodyBytes=e.body,delete e.body):ArrayBuffer.isView(e.body)?(e.bodyBytes=e.body.buffer.slice(e.body.byteOffset,e.body.byteLength+e.body.byteOffset),delete e.body):e.body&&delete e.bodyBytes,$done(e);break}}}(e,t)} 1217 | --------------------------------------------------------------------------------