您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
显示b站评论的ip地址和屏蔽首页特定视频或up主
// ==UserScript== // @name b站ip开盒和首页屏蔽视频、up主 // @namespace http://quhou-ip-kaihe.top/ // @version 1.0.5 // @description 显示b站评论的ip地址和屏蔽首页特定视频或up主 // @author You // @match https://www.bilibili.com/video/* // @match https://www.bilibili.com/* // @icon https://www.google.com/s2/favicons?sz=64&domain=bilibili.com // @license MIT // @grant none // @run-at document-start // ==/UserScript== (function() { 'use strict'; console.log("b站ip开盒脚本已注入!,如果脚本失效请联系作者:https://gf.qytechs.cn/zh-CN/users/1083212-xygodcyx!") function handleIP(data){ return data.map(r=>{ r.member.uname += ` (${getIPText(r)}) ` r.replies.map(r=>{ r.member.uname += ` (${getIPText(r)}) ` return r }) return r }) } function handleTopIP(data){ data.member.uname += ` (${getIPText(data)}) ` data.replies.map(r=>{ r.member.uname += ` (${getIPText(r)}) ` return r }) return data } function handleTopRepliesIP(data){ return data.map(r=>{ r.member.uname += ` (${getIPText(r)}) ` r.replies.map(r=>{ r.member.uname += ` (${getIPText(r)}) ` return r }) return r }) } function getIPText(data){ return data.reply_control.location || "IP属地:未显示" } //自己修改时注意: //数组的格式为:[123,456] 或 ["关键词1","关键词2"],注意:数字不要加引号,字符串要加引号,每一个由英文逗号","分割的数据都是独立的 const filterTitleKey = ["大型纪录片","纪录片传奇","为您播出","已成艺术"] //屏蔽视频标题 const filterUpNameKey = ["话题"] //屏蔽up主的名字或类似名字 const whiteUpMid = [1308065752] //这里填要加入白名单中的up的uid/mid,这里是我的uid/mid,pc端在个人资料查看,app端在个人简介下方查看 //处理首页的推荐 function handleItem(data){ return data.filter(r=>r.goto === "ad" ? false : (filterTitleKey.every(fk=>!r.title.includes(fk)) && filterUpNameKey.every(fu=>!r.owner.name.includes(fu))) || whiteUpMid.includes(r.owner.mid) ) } const _fetch = window.fetch window.fetch = function(...params){ const url = params[0] if(url.includes("//api.bilibili.com/x/v2/reply/wbi/main")){ return new Promise(async (reslove,reject)=>{ _fetch(...params).then(async response=>{ try{ const originalData = await response.json(); const processedData = { ...originalData, }; if(processedData.data.top && processedData.data.top.upper){ processedData.data.top.upper = handleTopIP(processedData.data.top.upper) processedData.data.top_replies = handleTopRepliesIP(processedData.data.top_replies) } processedData.data.replies = handleIP(processedData.data.replies) const newResponse = new Response(JSON.stringify(processedData), { status: response.status, statusText: response.statusText, headers: { 'Content-Type': 'application/json', } }); return reslove(newResponse) }catch(err){ return reject(err) } }) }) } else if(url.includes("//api.bilibili.com/x/v2/reply/reply")){ return new Promise(async (reslove,reject)=>{ _fetch(...params).then(async response=>{ try{ const originalData = await response.json(); const processedData = { ...originalData, }; processedData.data.replies = handleIP(processedData.data.replies) const newResponse = new Response(JSON.stringify(processedData), { status: response.status, statusText: response.statusText, headers: { 'Content-Type': 'application/json', } }); return reslove(newResponse) }catch(err){ return reject(err) } }) }) } else if(url.includes("//api.bilibili.com/x/web-interface/wbi/index/top/feed/rcmd")){ return new Promise(async (reslove,reject)=>{ _fetch(...params).then(async response=>{ try{ const originalData = await response.json(); const processedData = { ...originalData, }; processedData.data.item = handleItem(processedData.data.item) const newResponse = new Response(JSON.stringify(processedData), { status: response.status, statusText: response.statusText, headers: { 'Content-Type': 'application/json', } }); return reslove(newResponse) }catch(err){ return reject(err) } }) }) } else{ return _fetch(...params) } } // Your code here... })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址