您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
哔哩哔哩网页端视频评论显示ip属地
// ==UserScript== // @name bilibili reply-location enable // @namespace http://tampermonkey.net/ // @version 1.0.0 // @description 哔哩哔哩网页端视频评论显示ip属地 // @author wyh00040 // @license MIT // @match *://www.bilibili.com/video/av* // @match *://www.bilibili.com/video/BV* // @match *://www.bilibili.com/list/* // @match *://www.bilibili.com/bangumi/play/ep* // @match *://www.bilibili.com/bangumi/play/ss* // @match *://www.bilibili.com/cheese/play/ep* // @match *://www.bilibili.com/cheese/play/ss* // @icon https://www.bilibili.com/favicon.ico?v=1 // @grant none // ==/UserScript== (function() { 'use strict'; let root_total = 0; const oldEventListener = EventTarget.prototype.addEventListener; EventTarget.prototype.addEventListener = function (...args) { return oldEventListener.call(this, ...args); }; let oldFetch = fetch; function hookFetch(url, init) { if(/\/\/api\.bilibili\.com\/x\/v2\/reply\/wbi\/main\?/.test(arguments[0])){ return new Promise((resolve, reject) => { oldFetch.apply(this, arguments).then((response) => { const oldJson = response.json; response.json = function () { return new Promise((resolve, reject) => { oldJson.apply(this, arguments).then((result) => { setTimeout(()=>{ let res = result; let reply_items = document.getElementsByClassName("reply-item"); if(res.data.replies.length){ let replies = res.data.replies; let i = 0; for(let x in replies){ let root_reply_id = reply_items[i+root_total].children[1].children[0].getAttribute("data-root-reply-id"); if( root_reply_id == replies[i].rpid_str){ let reply_location = document.createElement("span"); reply_location.style = "margin:0 20px 0 0"; reply_location.className = "root-reply-location"; if(replies[i].reply_control.location){ reply_location.innerHTML = replies[i].reply_control.location; }else{ reply_location.innerHTML = "IP属地:未知"; } reply_items[i+root_total].children[1].getElementsByClassName("reply-time")[0].after(reply_location); let sub_replies = res.data.replies[i].replies; let j = 0; for(let x in sub_replies){ let sub_reply_location = document.createElement("span"); sub_reply_location.style = "margin:0 20px 0 0"; sub_reply_location.className = "sub-reply-location"; if(sub_replies[j].reply_control.location){ sub_reply_location.innerHTML = sub_replies[j].reply_control.location; }else{ sub_reply_location.innerHTML = "IP属地:未知"; } reply_items[i+root_total].children[2].getElementsByClassName("sub-reply-time")[j].after(sub_reply_location); j++; } } i++; } root_total+=i; } }); resolve(result); }); }); }; resolve(response); }); }); }else if(/\/\/api\.bilibili\.com\/x\/v2\/reply\/reply\?/.test(arguments[0])){ return new Promise((resolve, reject) => { oldFetch.apply(this, arguments).then((response) => { const oldJson = response.json; response.json = function () { return new Promise((resolve, reject) => { oldJson.apply(this, arguments).then((result) => { setTimeout(()=>{ let res = result; let reply_items = document.getElementsByClassName("reply-item"); if(res.data.replies.length){ let sub_replies = res.data.replies; let i = 0; for(let x in reply_items){ let root_reply_id = reply_items[i].children[1].children[0].getAttribute("data-root-reply-id"); if( root_reply_id == res.data.root.rpid_str){ let j = 0; for(let x in sub_replies){ if(reply_items[i].children[2].getElementsByClassName("sub-reply-info")[j].getElementsByClassName("sub-reply-location").length == 0){ let sub_reply_location = document.createElement("span"); sub_reply_location.style = "margin:0 20px 0 0"; sub_reply_location.className = "sub-reply-location"; if(sub_replies[j].reply_control.location){ sub_reply_location.innerHTML = sub_replies[j].reply_control.location; }else{ sub_reply_location.innerHTML = "IP属地:未知"; } reply_items[i].children[2].getElementsByClassName("sub-reply-time")[j].after(sub_reply_location); } j++; } break; } i++; } } }); resolve(result); }); }); }; resolve(response); }); }); }else{ return oldFetch.apply(this, arguments); } } window.fetch = hookFetch; })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址