// ==UserScript== // @name Adblock4limbo——导航及各类功能函数合集.[github] // @namespace https://limbopro.com/Adguard/Adblock4limbo.function.js // @version 0.2025.12.25 // @license CC BY-NC-SA 4.0 // @description 实用网站导航 —— 沉浸式翻译纯JS版本;M3U8/MP4资源链接提取;广告元素屏蔽器;费在线影视/前端学习/开发者社区/新闻/建站/下载工具/格式转换工具/电子书/新闻/写作/免费漫画等; // @author limbopro // @match https://*/* // @match https://twitter.com/* // @match https://www.xvideos.com/* // @match https://www.youtube.com/* // @match https://developer.mozilla.org/* // @match https://venus-av.com/* // @exclude https://limbopro.com/* // @icon https://www.google.com/s2/favicons?sz=64&domain=limbopro.com // @run-at document-end // @grant none // ==/UserScript== /** * --------------------------- * 毒奶去网页广告计划 * Author: limbopro * 使用教程:https://limbopro.com/archives/12904.html * 联系博主:https://t.me/limboprobot * 电报群组:https://t.me/Adblock4limbo * FAQ:https://t.me/Adblock4limbo/21 常见问题与回答 * Github:https://github.com/limbopro/Adblock4limbo * --------------------------- */ // 各种 function 的集合 (function () { const css = ` /* 给到悬浮窗用 Adblock4limbo 4 function */ /* 遮罩层 */ .confirm-mask { position: fixed; inset: 0; background: rgba(0, 0, 0, .5) !important; display: flex !important; justify-content: center !important; align-items: center; z-index: 114154 !important; opacity: 0; visibility: hidden; transition: opacity .2s, visibility .2s; } .confirm-mask.show { opacity: 1; visibility: visible; } /* 弹窗本体 */ .confirm-dialog { background: #fff !important; border-radius: 8px; width: 320px; max-width: 90vw; box-shadow: 0 4px 20px rgba(0, 0, 0, .2); animation: pop .2s ease-out; } @keyframes pop { from { transform: scale(.8); opacity: 0; } to { transform: scale(1); opacity: 1; } } .confirm-header { padding: 16px 20px 8px; font-weight: 600; font-size: 18px; color: #333 !important; } .confirm-body { padding: 0 20px 16px; color: #555 !important; } .confirm-footer { padding: 0 20px 16px; display: flex; gap: 12px; justify-content: flex-end; } .confirm-footer button { min-width: 72px; padding: 6px 12px; border: none; border-radius: 4px; cursor: pointer; font-size: 14px; } .confirm-footer .cancel { background: #f0f0f0 !important; color: #333 !important; } .confirm-footer .ok { background: #007bff !important; color: #fff !important; } .confirm-footer .ok:hover { background: #0056b3 !important; } .confirm-footer .cancel:hover { background: #e0e0e0 !important; } `; const style = document.createElement('style'); style.textContent = css; (document.head || document.documentElement).appendChild(style); })(); // 设置 cookie 饼 window.fcsetCookie = function fcsetCookie(cname, cvalue, exdays) { var d = new Date(); d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); var expires = "expires=" + d.toGMTString(); document.cookie = cname + "=" + cvalue + "; path=/;" + expires; } fcsetCookie('daohangMode_global', 'true', 400); // 您的防御性检查逻辑现在是安全的 /* if (document.getElementById('dh_pageContainer') !== null) { return; // ✅ 合法的 return 语句,退出这个匿名函数 } */ // 获取M3U8文件资源链接 var repeat_regex = ["https:?\/\/.*?hls.*?\.m3u8", "https:?\/\/.*?phncdn.*?hls.*?\.m3u8", "https:?\/\/.*?mushroomtrack.*?\.m3u8"] function m3u8_tempt(x) { var i, url_result; var url_regex = new RegExp(x, "gi") var ele = ["script", "a"]; var ele_catch = document.querySelectorAll(ele); for (i = 0; i < ele_catch.length; i++) { if ((url_result = url_regex.exec(ele_catch[i].innerHTML)) != null) { document.getElementById("copy").value = url_result; console.log("Catch it") } } } /* 循环播放 */ function video_loopPlay() { setInterval(function () { var ele = ["video[preload='none', 'common'],video#player"]; var ele_catch = document.querySelector(ele); if (ele_catch) { ele_catch.play() //console.log("视频已开启循环播放;") } }, 1000) } /* 延后播放 */ function video_delayPlay(time) { setTimeout(function () { var ele = ["video[preload='none', 'common'],video#player"]; var ele_catch = document.querySelector(ele); if (ele_catch) { ele_catch.play() //console.log("视频已延后播放;") } }, time) } function selector_one_by_one(x) { // 按选择器一个一个移除 if (document.querySelector(x)) { document.querySelectorAll(x).forEach((x) => { x.remove() }) } } /* 删除所有cookies */ function cookiesRemove() { let qi = confirm('导航设置已重置;🔔是否需要清空当前网站所有cookie以确保完全重置成功?(可选择不清理;清理🧹后需重新登录...)'); if (qi == true) { var exp = new Date(); var domain = "." + document.domain; exp.setTime(exp.getTime() + 0 * 24 * 60 * 60 * 1000); document.cookie.split(';').forEach(x => { if (x.search('=')) { document.cookie = x.split("=")[0] + "=''; " + "expires=" + exp.toGMTString() + ';' + "path=/;" + "domain=" + domain + ";"; document.cookie = x.split("=")[0] + "=''; " + "expires=" + exp.toGMTString() + ';' + "path=/;"; console.log(x.split("=")[0] + " ♻️🗑️...") } }) console.log(exp) } location.reload() } /* 连续点击4次空白处起导航🧭页面 */ function tripleClick() { var startTime = ''; var number = 0; const htmlbody = document.querySelectorAll('body')[0] htmlbody.addEventListener('click', function (e) { // 如果点击目标是 button 或 button 的后代元素,直接 return if (e.target.closest('button, a, [role="button"], .btn, label, input, select')) { return; } else { startTime = +new Date() number += 1; console.log(number) tripleClick_check(number) } }); function tripleClick_check(x) { setTimeout(() => { if (x >= 4 && /android|iphone|ipad|ipod|webos|iemobile/i.test(navigator.userAgent)) { // 逻辑成立时的代码 console.log("条件成立:x >= 4 且为移动设备"); console.log('连续点击超过' + x + "次") body_build('true') // 如果按钮出现,且其他如搜索不存在则可唤出导航页面 } else { number = 0; console.log("number被重设为0"); } }, 850) } } tripleClick(); /* 计算用户累计在本网站停留时间 */ (function () { function timerCount() { if (localStorage.getItem('timing') !== '' && localStorage.getItem('timing') !== 0) { // 如果 timing 不为空 localStorage.setItem('timing', Number(localStorage.getItem('timing')) + 1) } else { localStorage.setItem('timing', 1) // 初始化1秒 } } function itimer() { var time = localStorage.getItem('timing') parseInt(time / 60 / 60) + "小时" + parseInt(localStorage.getItem('timing') / 60) + "分" + time % 60 + "秒⌛️"; var currentTime_innerHTML = "你已在当前网站累计停留" + parseInt(localStorage.getItem('timing') / 60) + "分" + time % 60 + "秒⌛️"; if (document.getElementById('itimer') !== null) { var xr = document.getElementById('itimer'); xr.innerHTML = currentTime_innerHTML; } } var timerCount_interval = setInterval(function () { timerCount() itimer() }, 1000) })() // 重设导航/成人保护模式设置 // 定义一个正则表达式,用于匹配 URL 中是否包含特定的成人/视频/图片网站关键词 var weblist_regex = new RegExp(/\b(xiaobaotv|iyf|gimy|ddrk|ddys|olevod|hitomi|hltv|javlibrary|thisav|njav|missav|javlib|javbus|attackers|18comic|javday|hamnime|takara|tameikegoro|deeps|moodyz|s1s1s1|nagae|ideapocket|dasdas|oppai|kawaii|satsu|mgstage|manji-group|rocket|muku|dmm|beauty|gloryquest|javbus|supjav|jable|xvideos|pornhub|porn|wnacg|av)\b/i); // **逻辑块 1: 针对特定域名 (limbopro.com) 的设置** if (window.location.href.match('limbopro.com')) { // 如果当前网址是 limbopro.com,强制设置导航模式为“显示/启用” fcsetCookie('daohangMode_global', 'true', '400'); // 强制设置成人模式为“关闭/禁用” fcsetCookie('adultMode', 'false', '400'); // **逻辑块 2: 匹配成人网站列表 且 全局导航设置为空** } else if (weblist_regex.test(window.location.href.toLowerCase()) && getCookie('daohangMode_global') == '') { // 如果当前网址匹配到成人/视频列表,并且“全局导航模式”Cookie尚未设置 // 则将全局导航模式默认设置为“隐藏/禁用” fcsetCookie('daohangMode_global', 'true', '400'); // **逻辑块 3: 匹配成人网站列表 (非首次加载,或 Cookie 已设置)** } else if (weblist_regex.test(window.location.href.toLowerCase())) { // 如果当前网址匹配到成人/视频列表,但“全局导航模式”Cookie已经存在 // 此时不改变 Cookie 设置,而是按现有全局设置执行操作 console.log('该网址被匹配,将按全局设置执行相关操作...!') } /** * function wtf() * 这是一个定时执行的函数,主要职责是: * 1. 每 2.5 秒将 dh_buttonMain 元素的高度存储到浏览器的 localStorage 中,实现状态持久化。 * 2. 根据本地存储的导航器类型(移动端/PC端),管理 dh_button 元素的垂直位置 (top) 的存储。 */ function wtf() { // 设置一个定时器,每 2500 毫秒(2.5 秒)执行一次内部的逻辑 setInterval(() => { // --- 逻辑 1: dh_buttonMain 高度持久化 --- // 检查 'dh_buttonMain' 元素是否存在,并且其 style.height 属性值不为空 if (document.getElementById('dh_buttonMain') !== null && document.getElementById('dh_buttonMain').style !== null && document.getElementById('dh_buttonMain').style.height !== null) { // 将当前 dh_buttonMain 的高度值存储到 localStorage,键名为 'dh_buttonMain' localStorage.setItem('dh_buttonMain', document.getElementById('dh_buttonMain').style.height); // console.log("当前导航按钮高度[dh_buttonMain]" + localStorage.getItem('dh_buttonMain')) } // --- 逻辑 2: dh_button 位置 (top) 管理 --- // 检查是否为移动端环境,且非 PC 端 (localStorage.getItem('navigator_pc') == '') if (localStorage.getItem('navigator_mobile') == 'mobile' && localStorage.getItem('navigator_pc') == '') { // 移动端top (记录垂直位置) // 将当前 dh_button 的 top 样式值存储到 localStorage,键名为 'dh_button' localStorage.setItem('dh_button', document.getElementById('dh_button').style.top); // 原代码中有一个被注释掉的判断条件: // //if (localStorage.getItem('dh_button') !== 'px') { // 检查是否为移动端环境 (但上一条件未满足) } else if (localStorage.getItem('navigator_mobile') == 'mobile') { // 这可能是从 PC 切换到移动端时的清理/重置逻辑 // 清除 PC 标识 localStorage.setItem('navigator_pc', ''); // 重置 dh_button 的 top 位置为 'px' (一个无效值,可能是作为清除标识) localStorage.setItem('dh_button', 'px'); // 递归调用 wtf(),但由于 wtf() 内部已经设置了 setInterval, // 再次调用 wtf() 会创建一个新的定时器,可能导致重复执行和资源浪费。 // ⚠️ 建议:这个递归调用通常是不需要的,除非开发者有意让它在重置后立即启动一个新的定时器。 wtf(); } }, 2500); } wtf() function touchandmove(selector) { // 移动端导航按钮可托拽 // https://blog.csdn.net/weixin_46513544/article/details/105674150 var dh_buttonMain_touch = document.querySelectorAll(selector)[0] var startX = 0; var startY = 0; var x = 0; var y = 0; dh_buttonMain_touch.addEventListener('touchstart', function (e) { startX = e.targetTouches[0].pageX startY = e.targetTouches[0].pageY x = this.offsetLeft y = this.offsetTop }) dh_buttonMain_touch.addEventListener('touchmove', function (e) { var moveX = e.targetTouches[0].pageX - startX var moveY = e.targetTouches[0].pageY - startY //this.style.left = moveX + x + 'px' this.style.top = moveY + y + 'px' e.preventDefault(); }) } function height() { var height = '' if (navigator.userAgent.match('Mobile') !== null) { localStorage.setItem('navigator_mobile', 'mobile') height = window.screen.height + 'px' } else if (navigator.userAgent.match('Mobile') == null) { localStorage.setItem('navigator_pc', 'pc') if (localStorage.getItem('dh_buttonMain') !== null && localStorage.getItem('navigator_mobile') !== 'mobile') { height = localStorage.getItem('dh_buttonMain'); } else { localStorage.setItem('navigator_mobile', '') height = '520px' } } return height; } function bottom() { var bottom = '' if (navigator.userAgent.match('Mobile') !== null) { //height = window.screen.height + 'px' bottom = 'mobile' } else { //height = '420px' bottom = 'pc' } return bottom; } function bottom_wrapper() { if (navigator.userAgent.match('Mobile') !== null) { document.getElementById('dh_buttonContainer').classList.add('bottom-mobile') // 移动端新增类 } else if (document.getElementById('dh_buttonContainer').className.match('bottom-mobile') !== '') { document.getElementById('dh_buttonContainer').classList.remove('bottom-mobile') // PC端移除该类 } } function position() { if (navigator.userAgent.match('Mobile') !== null) { document.getElementById('dh_buttonMain').classList.add('positiondh_buttonMain') // 移动端新增类 } else if (document.getElementById('dh_buttonMain').className.match('positon') !== '') { document.getElementById('dh_buttonMain').classList.remove('positiondh_buttonMain') // PC端移除该类 } } // 先新建一个按钮 function initializeFloatingNavigationButton(x, csp) { if (typeof getResponsiveButtonSize == 'function') { x = getResponsiveButtonSize(); } if (document.getElementById('dh_buttonContainer')) return; // 新建 dh_buttonContainer let dh_buttonContainer = document.createElement('div'); dh_buttonContainer.id = 'dh_buttonContainer'; let body = document.body; document.querySelector('html').appendChild(dh_buttonContainer) // 新建 dh_buttonMain let dh_buttonMain = document.createElement('div'); // body 换为 div dh_buttonMain.id = 'dh_buttonMain'; // 高等悬挂 dh_buttonMain.style.height = height() document.getElementById('dh_buttonContainer').appendChild(dh_buttonMain) // 定义按钮 let _button = document.createElement('button') _button.id = 'dh_button'; _button.draggable = "true"; if (getCookie("daohangMode_global") == 'false' && getCookie("daohangMode_yourChoice") !== "show" || getCookie("daohangMode_global") == '') { _button.setAttribute("class", "cmsnone " + bottom()); } else if (getCookie("daohangMode_global") == 'true') { _button.setAttribute("class", "cms " + bottom()); } else { _button.setAttribute("class", "cms " + bottom()); } if (csp == 'nocsp') { console.log('创建不带CSP属性按钮...') const BUTTON_CSS = ` border-radius: 5px 0 0 5px; padding: 0; transition: height 666ms; z-index: 114154; position: fixed; right: 0; border: transparent; background: transparent url("https://raw.githubusercontent.com/limbopro/Adblock4limbo/main/Adguard/Adblock4limbo.png") no-repeat; background-size: 100%; `.replace(/\s+/g, ' ').trim() + ';'; _button.style.cssText = BUTTON_CSS; _button.setAttribute("onclick", "body_build('true')"); document.getElementById('dh_buttonMain').appendChild(_button); // 在 dh_buttonMain 下添加按钮 } else if (csp == 'csp') { console.log('创建带CSP属性按钮...') var csp = 'box-shadow:inset 0px 0px 15px 3px #23395e;background:linear-gradient(to bottom,#2e466e 5%,#415989 100%);background-color:#2e466e;border-radius:17px;border:1px solid #1f2f47;display:inline-block;cursor:pointer;color:#ffffff;font-family:Arial;font-size:15px;padding:6px 13px;text-decoration:none;text-shadow:0px 1px 0px #263666;padding:0px;transition-duration:666ms;transition-property:height;z-index:114154;bottom:15%;right:0.5%;/*position:fixed;*/border:transparent;border-radius:50%;'; _button.style = csp; _button.textContent = '导航'; document.getElementById('dh_buttonMain').appendChild(_button); // 在 dh_buttonMain 下添加按钮 document.getElementById('dh_button').style.height = x; document.getElementById('dh_button').style.width = x; if (window.innerHeight < 600) { document.querySelector('#dh_button').style.bottom = '30%'; } } if ((navigator.userAgent.match('Mobile') !== null)) { if (localStorage.getItem('dh_button') !== null) { _button.style.top = localStorage.getItem('dh_button') }; } else { _button.style.top = 'px'; } position(); bottom_wrapper(); touchandmove('#dh_button'); // 监控用户是否需要拖动导航按钮 document.getElementById('dh_button').addEventListener("mouseover", (event) => { document.getElementById('dh_buttonContainer').classList.remove('pointer-events-none') setTimeout(() => { document.getElementById('dh_buttonContainer')?.classList.add('pointer-events-none') }, 4000) }); } // 定义按钮尺寸 /** * getResponsiveButtonSize * 根据浏览器窗口宽度返回按钮的尺寸(CSS值)。 * * @returns {string} - 按钮的尺寸(例如 '45px')。 */ function getResponsiveButtonSize() { const window_innerWidth = window.innerWidth; let size; // 使用 let 声明变量,避免在 if/else 块中重复声明 var if (window_innerWidth <= 920) { // 窗口宽度小于等于 920px (通常视为移动端/平板或小窗口) size = '45px'; // 原始注释: 40px } else { // 窗口宽度大于 920px (通常视为 PC 端或大窗口) size = '45px'; // 原始注释: 55px } // 注意:尽管在 if 和 else 分支中返回的值都是 '45px', // 但保留 if/else 结构有助于未来根据注释 (40px 和 55px) 轻松调整响应式逻辑。 return size; } /** * updateNavigationButtonDisplay * 根据传入的参数控制导航按钮的尺寸和 z-index。 * @param {number} x - 控制显示逻辑的参数 (1 表示执行显示/尺寸调整)。 */ function updateNavigationButtonDisplay(x) { // 检查导航按钮主容器是否存在 const buttonContainer = document.getElementById('dh_button'); if (buttonContainer !== null) { const buttonMain = document.getElementById('dh_buttonMain'); // 当 x 等于 1 并且导航按钮主容器存在时,执行尺寸和 z-index 的设置 if (x == 1) { // 注意: 原代码中的 ! (document.getElementById('dh_button') === null) 已经通过外层的 if (buttonContainer !== null) 保证,因此可以简化。 buttonContainer.style.height = getResponsiveButtonSize(); buttonContainer.style.width = getResponsiveButtonSize(); // 确保按钮层级最高,处于“显示”状态 if (buttonMain) { buttonMain.style.zIndex = '114154'; } console.log('显示导航按钮🔘'); } // else 分支为空,可以移除以简化代码 } } // 为按钮添加监听事件 防止被破坏 function _onclick_button() { setTimeout(() => { if (document.querySelector('button#resetting')) { document.querySelector('button#resetting').addEventListener("click", function () { // 移动端 重置导航按钮高度记忆 localStorage.setItem('dh_buttonMain', '') localStorage.setItem('navigator_pc', '') document.getElementById('dh_button').style.top = null // PC端 重置导航按钮高度记忆 if (navigator.userAgent.match('Mobile') == null) { document.getElementById('dh_buttonMain').style.height = '420px' } fcsetCookie("daohangMode_yourChoice", 'show', 400) // 显示按钮 cookiesRemove() setTimeout(() => { location.reload(); }, 1000); }) } }, 1000) } var nsfw_regex = new RegExp(/\b(javlibrary|thisav|njav|missav|javlib|javbus|attackers|18comic|javday|hamnime|takara|tameikegoro|deeps|moodyz|s1s1s1|nagae|ideapocket|dasdas|oppai|kawaii|satsu|mgstage|manji-group|rocket|muku|dmm|beauty|gloryquest|javbus|supjav|jable|xvideos|pornhub|porn|wnacg|av)\b/i); var csp_regex = new RegExp(/\b(twitter|xvideos|google)\b/i); // 判断是否需要在当前页面插入导航按钮 window.fc_str_ua = navigator.userAgent.toLowerCase(); window.regexp = /(.*)(iphone\sos\s)(\d{2})(.*)/; window.ios_version = fc_str_ua.replace(regexp, '$3'); var csp = ['twitter', 'xvideos']; function create_dh_button() { const height = getResponsiveButtonSize() if (/\b(google|bing)\b/i.test(window.location.href.toLowerCase())) { // 谷歌和必应均不插入导航按钮 } else if (csp_regex.test(window.location.href.toLowerCase()) && !(/\b(mobile)\b/i.test(navigator.userAgent.toLowerCase()))) { // 如果是带有CSP的网站则带上参数 csp // 2333 initializeFloatingNavigationButton(height, 'csp'); _onclick_button(); } else { initializeFloatingNavigationButton(height, 'nocsp'); // 反之则不带 _onclick_button(); } } create_dh_button() // 初始化导航容器 /** * 初始化导航容器(一次性创建、填充内容、插入 DOM) * 采用文档片段 + 模板字符串 + 事件委托的方式,减少回流/重绘 */ function initNavigationContainer() { // 初始化导航容器 // 1. 创建容器(只创建一次) const container = Object.assign(document.createElement('div'), { id: 'dh_pageContainer', className: 'dh_pageContainer_css notranslate' }); // 2. 使用模板字符串(保持可读性) + 文档片段(避免多次 innerHTML 导致的重排) const fragment = document.createDocumentFragment(); const wrapper = document.createElement('div'); wrapper.id = 'dh_pageWrapper'; wrapper.className = 'dh_pageWrapper_css'; wrapper.innerHTML = getNavigationHTML(); // 纯 HTML 字符串 fragment.appendChild(wrapper); container.appendChild(fragment); // 3. 插入到 末尾(保持页面原有结构不变) document.documentElement.appendChild(container); } /** * 导航所有 HTML(集中管理,便于后期修改) * 使用模板字面量 + 换行保持可读性 */ function getNavigationHTML() { return `
标签包裹
return `${jsonString}`;
} catch (e) {
return `[对象 - 无法序列化: ${e.message}]`;
}
}
// 处理 undefined 和其他类型
if (result === undefined) {
return '无返回值 (undefined)';
}
if (result === null) {
return 'null';
}
return result;
}
/**
* 动态创建并注入 CSS 样式,用于悬浮窗。
* 包含了结果输出窗和代码输入窗的样式。
*/
function injectFloatingWindowStyles() {
const style = document.createElement('style');
style.textContent = `
/* 按钮和基础样式 */
#body { font-family: Arial, sans-serif; text-align: center; padding: 50px; }
#runButton { padding: 12px 25px; font-size: 18px; cursor: pointer; background-color: #007bff; color: white; border: none; border-radius: 5px; }
/* --- 结果输出窗 (Output Window) 样式 --- */
#floating-output-container {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 450px;
max-width: 90vw;
max-height: 80vh;
background-color: white;
border: 3px solid #007bff;
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.3);
z-index: 9999999;
display: none; /* 默认隐藏,需要时再显示 */
flex-direction: column;
border-radius: 8px;
overflow: hidden;
}
#floating-output-header {
padding: 10px 15px;
background-color: #007bff;
color: white;
font-size: 1.1em;
display: flex;
justify-content: space-between;
align-items: center;
}
#floating-output-content {
padding: 15px;
overflow-y: auto;
flex-grow: 1;
text-align: left;
}
.close-btn {
background: none;
border: none;
color: white;
font-size: 24px;
cursor: pointer;
line-height: 1;
padding: 0 5px;
}
/* 输出内容样式 */
.success { color: green; font-weight: bold; }
.error { color: red; font-weight: bold; }
.result-item { margin-bottom: 10px; padding-bottom: 5px; border-bottom: 1px dotted #ccc; }
/* --- 代码输入模态框 (Input Prompt Window) 样式 --- */
#input-prompt-container {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 500px;
max-width: 90vw;
padding: 20px;
background-color: #f9f9f9;
border: 5px solid #0056b3;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.4);
z-index: 10000000; /* 比输出窗高 */
border-radius: 10px;
display: none; /* 默认隐藏 */
}
/* 输入框工具栏样式 */
#input-controls {
display: flex; /* 使用 Flexbox 布局 */
justify-content: flex-end; /* 按钮靠右对齐 */
margin-bottom: 10px;
gap: 10px; /* 按钮间距 */
}
.tool-btn {
padding: 6px 12px;
cursor: pointer;
border: 1px solid #ccc;
border-radius: 4px;
font-size: 13px;
background-color: #e9e9e9;
}
.tool-btn:hover {
background-color: #ddd;
}
#input-code-textarea {
width: 100%;
min-height: 150px;
padding: 10px;
margin-bottom: 15px; /* 恢复为 15px,因为工具栏在输入框上方 */
box-sizing: border-box;
border: 1px solid #ccc;
border-radius: 5px;
font-family: monospace;
font-size: 14px;
resize: vertical;
}
#input-prompt-buttons {
text-align: right;
}
.input-prompt-btn {
padding: 10px 20px;
margin-left: 10px;
cursor: pointer;
border: none;
border-radius: 5px;
font-weight: bold;
}
#execute-code-btn {
background-color: #28a745;
color: white;
}
#cancel-code-btn {
background-color: #dc3545;
color: white;
}
`;
document.head.appendChild(style);
}
/**
* 动态创建悬浮窗的 DOM 结构,并将其添加到 body。
* @returns {HTMLElement} 悬浮窗的内容 DIV (用于输出)
*/
function createFloatingOutputDiv() {
const containerId = 'floating-output-container';
const contentId = 'floating-output-content';
let container = document.getElementById(containerId);
let contentDiv;
if (container) {
contentDiv = document.getElementById(contentId);
contentDiv.innerHTML = '';
container.style.display = 'flex';
return contentDiv;
}
// --- 1. 创建容器 DIV ---
container = document.createElement('div');
container.id = containerId;
container.className = 'notranslate'
// --- 2. 创建头部和关闭按钮 ---
const header = document.createElement('div');
header.id = 'floating-output-header';
header.innerHTML = '执行结果与状态';
const closeBtn = document.createElement('button');
closeBtn.className = 'close-btn';
closeBtn.innerHTML = '×';
closeBtn.onclick = () => {
container.style.display = 'none';
};
header.appendChild(closeBtn);
container.appendChild(header);
// --- 3. 创建内容 DIV (实际的输出区域) ---
contentDiv = document.createElement('div');
contentDiv.id = contentId;
container.appendChild(contentDiv);
// --- 4. 将容器添加到 body ---
document.body.appendChild(container);
container.style.display = 'flex';
return contentDiv;
}
/**
* 核心执行函数:如果参数是函数或可执行代码字符串,则执行。
* @param {string|Function} param 待执行的参数。
* @param {HTMLElement} outputDiv 用于显示输出结果的 DOM 元素。
*/
function attemptExecution(param, outputDiv) {
outputDiv.innerHTML += '--- **执行开始** ---';
if (typeof param === 'function') {
try {
const result = param();
outputDiv.innerHTML += `执行类型: [函数] 成功。
`;
outputDiv.innerHTML += `函数返回值: ${formatResult(result)}
`;
} catch (error) {
outputDiv.innerHTML += `执行类型: [函数] 失败!
`;
outputDiv.innerHTML += `错误信息: ${error.message}
`;
console.error("函数执行错误:", error);
}
}
else if (typeof param === 'string' && param.trim().length > 0) {
const code = param.trim();
try {
// *** 使用 eval() 执行用户代码,可访问全局变量 ***
const result = eval(code);
outputDiv.innerHTML += `执行类型: [代码字符串] 成功。
`;
outputDiv.innerHTML += `代码返回值: ${formatResult(result)}
`;
} catch (error) {
outputDiv.innerHTML += `执行类型: [代码字符串] 失败!
`;
outputDiv.innerHTML += `错误信息: ${error.message}
`;
outputDiv.innerHTML += `💡 提示:此错误可能是因为代码无法访问全局变量或语法错误。注意:代码通过 eval() 执行,具有全局访问权限。
`;
console.error(`代码执行失败。错误信息: ${error.message}`);
}
} else {
outputDiv.innerHTML += `参数类型不可执行 (${typeof param}) 或为空。
`;
}
outputDiv.innerHTML += '--- **执行结束** ---';
}
/**
* [新增] 集中处理代码执行流程
* @param {string} codeInput 待执行的代码字符串
*/
function executeCodeFromInput(codeInput) {
const outputDiv = createFloatingOutputDiv();
outputDiv.innerHTML = `准备执行
输入代码:
${codeInput}`;
attemptExecution(codeInput, outputDiv);
const container = document.getElementById('floating-output-container');
if (container) {
setTimeout(() => {
outputDiv.scrollTop = outputDiv.scrollHeight;
}, 50);
}
}
/**
* [修改] 创建并显示代码输入模态框,新增清空和粘贴按钮。
*/
function createInputPrompt() {
const containerId = 'input-prompt-container';
const textareaId = 'input-code-textarea';
const executeBtnId = 'execute-code-btn';
const cancelBtnId = 'cancel-code-btn';
// 新增按钮 ID
const clearBtnId = 'clear-code-btn';
const pasteBtnId = 'paste-code-btn';
let container = document.getElementById(containerId);
if (!container) {
// --- 1. 创建容器 ---
container = document.createElement('div');
container.id = containerId;
container.className = 'notranslate'
container.innerHTML = `
请输入要执行的 JavaScript 代码
`;
document.body.appendChild(container);
// --- 2. 绑定事件 ---
const codeTextarea = document.getElementById(textareaId);
const executeBtn = document.getElementById(executeBtnId);
const cancelBtn = document.getElementById(cancelBtnId);
// 新增:获取工具按钮
const clearBtn = document.getElementById(clearBtnId);
const pasteBtn = document.getElementById(pasteBtnId);
// 清空按钮逻辑
clearBtn.onclick = () => {
codeTextarea.value = '';
codeTextarea.focus();
};
// 粘贴按钮逻辑
pasteBtn.onclick = async () => {
// 使用 Clipboard API 读取剪贴板内容 (需要浏览器权限)
try {
const clipboardText = await navigator.clipboard.readText();
codeTextarea.value = clipboardText;
} catch (err) {
// 如果权限被拒绝或不支持
confirmndExecuteFC('无法访问剪贴板,请检查浏览器权限设置或手动粘贴。错误: ' + err.message);
}
codeTextarea.focus();
};
// 执行逻辑
executeBtn.onclick = () => {
const codeInput = codeTextarea.value;
container.style.display = 'none';
if (codeInput.trim()) {
executeCodeFromInput(codeInput);
} else {
const outputDiv = createFloatingOutputDiv();
outputDiv.innerHTML = '输入内容为空,执行中止。
';
}
};
// 取消逻辑
cancelBtn.onclick = () => {
container.style.display = 'none';
const outputDiv = createFloatingOutputDiv();
outputDiv.innerHTML = '用户已取消输入,执行中止。
';
};
codeTextarea.value = codeTextarea.value.trim();
}
return container;
}
/**
* 引导用户输入并执行的主函数
*/
window.promptAndExecute = function promptAndExecute() {
if (typeof body_build == 'function') {
body_build('false')
}
const inputContainer = createInputPrompt();
inputContainer.style.display = 'block';
const codeTextarea = document.getElementById('input-code-textarea');
if (codeTextarea) {
codeTextarea.focus();
}
// 隐藏结果输出框(如果它当前是打开的)
const outputContainer = document.getElementById('floating-output-container');
if (outputContainer) {
outputContainer.style.display = 'none';
}
}
// =========================================================
// 初始化和事件绑定
// =========================================================
/*
// 1. 注入 CSS 样式
injectFloatingWindowStyles();
// 2. 获取按钮并绑定事件监听器
window.runButton = document.getElementById('zhixingjs');
if (runButton) {
runButton.addEventListener('click', promptAndExecute);
}
*/
// End 运行js代码 zhixingjs
// 复制 input 内容
function copyText(id1, id2, Text) { // 复制文本按钮
let color = { // 定义常量
css: {
borderRight_copied: "6px solid white",
borderRight_recover: "6px solid #38a3fd",
backgroundColor_copied: "#00AC6A",
backgroundColor_recover: "#2563eb"
}
}
function border_color(ele, value) { // 制作一个循环
for (let i = 0; i < ele.length; i++) {
ele[i].style.borderRight = value
}
}
const ele_1 = document.getElementById(id1);
const ele_2 = document.getElementById(id2);
const ele_array = [ele_1, ele_2];
// 复制工作开始
// 现代复制方法
const input = document.querySelectorAll("input#copy");
input[0].select()
document.execCommand('copy')
// 旧版复制方法
/*
const range = document.createRange(); range.selectNode(input[0]); const selection = window.getSelection();
if (selection.rangeCount > 0) selection.removeAllRanges(); // 判断光标是否复制其他内容 如有则清除
selection.addRange(range); document.execCommand('copy');
*/
// 复制工作结束
ele_2.innerText = "复制成功!";
ele_2.style.backgroundColor = color.css.backgroundColor_copied;
border_color(ele_array, color.css.borderRight_copied)
setTimeout(() => {
ele_2.innerText = Text;
ele_2.style.backgroundColor = color.css.backgroundColor_recover;
border_color(ele_array, color.css.borderRight_recover)
}, 3000);
// 取消文本选中
window.getSelection().removeAllRanges();
// 移除焦点,防止键盘弹出
document.activeElement.blur();
}
// 在页面动态插入元素并赋予相应元素
function ele_dynamicAppend(selector, attribute, txt, style, func, id, array, tag) {
let new_ele = document.createElement(tag);
new_ele.innerHTML = txt;
new_ele.setAttribute(attribute, func);
new_ele.setAttribute("id", id);
new_ele.setAttribute("style", style);
var here = document.querySelectorAll(selector);
if (here.length > 0) {
here[0].insertBefore(new_ele, here[0].childNodes[array])
//here[0].appendChild(new_ele);
console.log("按钮已添加;")
}
}
// 在番号详情页追加在线预览链接
window.tmd = function tmd(parentSelector, code, titleText) {
const formattedCode = code.replace(/-/g, '00');
function createSearchLinks() {
// Creates search links for various platforms
const parentElement = document.querySelectorAll(parentSelector)[0];
const container = document.createElement('p'); // 创建容器
container.id = 'previewContainer';
container.style = 'margin:10px 0px 10px 0px; border-left:6px solid #38a3fd; font-size:14px; border-radius: 4px !important; box-shadow: rgb(151, 151, 151) 0px 0px 0px 0px inset; background:#10141f; color:chocolate; padding:0px 0px 0px 0px; word-break:break-all; border-radius:0px 0px 0px 0px';
const content = document.createElement('p'); // 创建内容包装器
content.style = 'gap:3px; margin-bottom: 0px;display: flex;flex-wrap: wrap;justify-content: flex-start;align-items: center;text-align: left;font-weight: inherit;padding: 6px;word-break: break-all;font-size: inherit;border-radius: 0px;';
content.id = 'contentWrapper';
container.appendChild(content); // 追加内容包装器到容器
parentElement.insertAdjacentElement('afterend', container);
const title = document.createElement('span'); // 创建标题
title.style = 'font-weight:bolder; font-size:medium; color:bisque;';
title.textContent = titleText;
content.appendChild(title);
function addLinkToContainer(siteName, baseUrl, searchCode) { // 添加链接到容器
const link = document.createElement('a');
const label = document.createElement('label');
label.style = 'font-weight:inherit; display:inline-block; max-width:100%; margin-right:10px;margin-bottom:0px;';
link.href = baseUrl + searchCode;
link.textContent = siteName;
link.target = '_blank';
link.style = 'color:inherit; font-weight:inherit';
label.appendChild(link);
content.appendChild(label);
}
addLinkToContainer('MissAV[720P]', 'https://missav.ws/search', '/' + code); // 添加各个搜索链接
addLinkToContainer('Jable[HD]', 'https://jable.tv/search', '/' + code + '/');
//addLinkToContainer('Supjav[ultraHD]', 'https://supjav.com/?s=', code);
addLinkToContainer('番号搜索[聚合]', 'https://limbopro.com/btsearch.html#gsc.tab=0&gsc.q=', code + '&gsc.sort=');
addLinkToContainer('谷歌搜索🔍', 'https://www.google.com/search?q=', code);
addLinkToContainer('Javbus📖', 'https://www.javbus.com/search/', code + '&type=&parent=ce');
addLinkToContainer('DMM🇯🇵', 'https://video.dmm.co.jp/av/list/?key=', formattedCode);
addLinkToContainer('🔞今晚看什么呢?', 'https://limbopro.com/tools/jwksm/', '');
console.log('Online preview links generated 🔗');
}
if (!document.querySelector('#previewContainer')) {
console.log('Generating online preview links...');
createSearchLinks(); // 调用函数创建搜索链接
}
}
//window.addEventListener('load', function () {
loadExternalResourceFireAndForget('script', 'https://limbopro.com/Adguard/huacisousuo.user.js', 'head', 'huacisearch') // 加载过滤脚本
// 划词搜索结束 END
// 沉浸式翻译开始 Start
window.initImmersiveTranslationManager = function () {
const SCRIPT_URL = 'https://limbopro.com/Adguard/Adblock4limbo.immersiveTranslation.user.js';
const STORAGE_KEY = 'gemini_immersive_translation_state';
// 1. 【核心:刷新即读取】先读 localstorage 判断是否要默认加载脚本
const savedState = localStorage.getItem(STORAGE_KEY) || 'off';
if (savedState === 'on') {
console.log('[Gemini] 存储值为 ON,立即加载脚本');
if (typeof loadExternalResourceFireAndForget === 'function') {
loadExternalResourceFireAndForget('script', SCRIPT_URL, 'head', 'immersiveTranslation');
} else {
const script = document.createElement('script');
script.src = SCRIPT_URL;
document.head.appendChild(script);
}
}
// 2. 【核心:UI 同步】判断要不要更新按钮文本和背景色
const btn = document.getElementById('cjsfy');
if (btn) {
// 修改 button 显示的文本和背景色
btn.dataset.state = savedState;
btn.style.background = (savedState === 'on') ? 'green' : 'red';
btn.innerText = `沉浸式翻译(${savedState.toUpperCase()})`;
// 绑定点击事件,切换状态并存储
btn.onclick = function () {
const currentState = btn.dataset.state;
const newState = currentState === 'off' ? 'on' : 'off';
// 存储到 localstorage
localStorage.setItem(STORAGE_KEY, newState);
// 修改显示
btn.dataset.state = newState;
btn.style.background = (newState === 'on') ? 'green' : 'red';
btn.innerText = `沉浸式翻译(${newState.toUpperCase()})`;
if (newState === 'on') {
if (typeof loadExternalResourceFireAndForget === 'function') {
loadExternalResourceFireAndForget('script', SCRIPT_URL, 'head', 'immersiveTranslation');
if (document.getElementById('translation-button')) {
document.getElementById('translation-button').classList.remove('scroll-hidden')
}
if (typeof confirmndExecuteFC === 'function') {
confirmndExecuteFC('脚本已加载,使用过程中1秒内连续点击页面空白处3次可切换显示或隐藏翻译按钮🔘');
} else {
confirm('脚本已加载,使用过程中1秒内连续点击页面空白处3次可切换显示或隐藏翻译按钮🔘')
}
}
} else {
if (typeof confirmndExecuteFC === 'function') {
confirmndExecuteFC('脚本已关闭,但已注入的逻辑可能需要刷新页面才能完全清除。');
} else {
if (document.getElementById('translation-button')) {
document.getElementById('translation-button').classList.add('scroll-hidden')
}
confirm('脚本已关闭,但已注入的逻辑可能需要刷新页面才能完全清除。')
}
}
};
}
};
// 执行初始化
window.initImmersiveTranslationManager();
// 沉浸式翻译结束 End
// 其他函数 媒体资源查找器 mtzyczq 开始 START
loadExternalResourceFireAndForget('script', 'https://limbopro.com/Adguard/m3u8Andmp4Finder.user.js', 'head', 'm3u8Andmp4Finder')
// 媒体资源M3U8&MP4资源链接查找器结束 END
/*debug*/
/* 用户反馈信息展示脚本 (重命名版) */
// Feedback 开始 START
/* 反馈信息展示脚本 (重命名版 - 已增强) */
loadExternalResourceFireAndForget('script', 'https://limbopro.com/Adguard/feedBackLinkMake.user.js', 'head', 'feedBackLinkMake')
// updateFeedbackLink()
// Feedback 结束 END
// 元素屏蔽器开始 START
loadExternalResourceFireAndForget('script', 'https://limbopro.com/Adguard/elementBlocker.user.js', 'head', 'elementBlocker')
// 元素屏蔽器 END
// 视频广告加速跳过 Start
loadExternalResourceFireAndForget('script', 'https://limbopro.com/Adguard/skipVideoAds.user.js', 'head', 'skipVideoAds')
// 视频广告加速跳过 END
// 测试小脚本 Start
loadExternalResourceFireAndForget('script', 'https://limbopro.com/Adguard/little.code.user.js', 'head', 'littleCode')
// 测试小脚本 END
/**
* WebDebugger.js 开始 START
* * 独立函数:Web 存储调试器 (Cookies/Local/Session/Config)
* * 描述: 创建一个悬浮可拖拽的面板,用于实时查看和编辑 Cookie, LocalStorage, SessionStorage,
* 并提取内嵌的 JSON 配置数据。
* * 调用方法:
* 1. 引入文件:
* 2. 执行: window.initWebDebugger();
*/
loadExternalResourceFireAndForget('script', 'https://limbopro.com/Adguard/WebDebugger.user.js', 'head', 'WebDebugger')
/* WebDebugger.js 结束 END
*/
// 查看页面上的脚本
loadExternalResourceFireAndForget('script', 'https://limbopro.com/Adguard/ScriptFind.user.js', 'head', 'ScriptFind')
// 查看页面上的脚本
// 更友好的确认框
loadExternalResourceFireAndForget('script', 'https://limbopro.com/Adguard/confirmndExecute.user.js', 'head', 'confirmndExecute')
loadExternalResourceFireAndForget('script', 'https://limbopro.com/Adguard/findAndDisplayExternalLinks.user.js', 'head', 'findAndDisplayExternalLinks')
// 示例调用:
// findAndDisplayExternalLinks();
// 循环清理透明元素
loadExternalResourceFireAndForget('script', 'https://limbopro.com/Adguard/clearLoop.user.js', 'head', 'clearLoop')
// 如何利用目标信息
loadExternalResourceFireAndForget('script', 'https://limbopro.com/Adguard/showLinkTipsModalOnce.user.js', 'head', 'showLinkTipsModalOnce')
// 加载 Adgurad 基础过滤器(CSS版) START
loadExternalResourceFireAndForget('script', 'https://limbopro.com/Adguard/Adguard.filter.user.js', 'head', 'AdguardFilter')
// 加载 Adgurad 基础过滤器(CSS版) END
// 脚本管理器 START
loadExternalResourceFireAndForget('script', 'https://limbopro.com/Adguard/showJsManager.user.js', 'head', 'showJsManager') // 加载过滤脚本
// 脚本管理器 END
// 成人保护模式 START
loadExternalResourceFireAndForget('script', 'https://limbopro.com/Adguard/pageProtect.user.js', 'head', 'pageProtect') // 加载过滤脚本
// 成人保护模式 END
// 检查脚本是否已正常挂载 START
loadExternalResourceFireAndForget('script', 'https://limbopro.com/Adguard/geminiScriptCheck.user.js', 'head', 'geminiScriptCheck') // 加载过滤脚本
// 检查脚本是否已正常挂载 END
// 狂野模式 START 会加载大量 ublock orgin 默认脚本
loadExternalResourceFireAndForget('script', 'https://limbopro.com/Adguard/crazyMode.user.js', 'head', '1crazyMode') // 加载过滤脚本
// 狂野模式 END
//});
// 这里存放导航页各类网站
// 备份数据列表
var dataListbak = {
"SpeedTest": [
{
"name": "Cloudflare",
"url": "https://speed.cloudflare.com/",
"target": "_blank",
"level": "better yellow"
},
{
"name": "SpeedTest",
"url": "https://www.speedtest.net/",
"target": "_blank",
"level": "common"
}, {
"name": "StairSpeedTest(机场测速)",
"url": "https://limbopro.com/archives/ssrspeed.html",
"target": "_blank",
"level": "special"
}
],
"PornMedia": [
{
"name": "FANZA|R18成人站",
"url": "https://www.dmm.co.jp/",
"target": "_blank",
"level": "better"
},
{
"name": "溜池ゴロー",
"url": "https://tameikegoro.jp/",
"target": "_blank",
"level": "better"
},
{
"name": "s1s1s1 S1/エスワンー",
"url": "https://s1s1s1.com/",
"target": "_blank",
"level": "better"
},
{
"name": "VENUSーS級熟女メーカ|S級熟女メーカー",
"url": "https://venus-av.com/",
"target": "_blank",
"level": "special"
},
{
"name": "SOD(ソフトオンデマンド)",
"url": "https://www.sod.co.jp/",
"target": "_blank",
"level": "special"
},
{
"name": "Glory Questー「禁断介護」や逆ショタ元祖",
"url": "https://www.gloryquest.tv/",
"target": "_blank",
"level": "special"
},
{
"name": "ながえSTYLE(NTR)",
"url": "https://www.nagae-style.com/",
"target": "_blank",
"level": "common"
},
{
"name": "Madonna(マドンナ)",
"url": "https://www.madonna-av.com/top/",
"target": "_blank",
"level": "common"
},
{
"name": "ATTACKERS(アタッカーズ)",
"url": "https://www.attackers.net/top/",
"target": "_blank",
"level": "common"
},
{
"name": "PRESTIGE(プレステージ)",
"url": "https://www.prestige-av.com/",
"target": "_blank",
"level": "common"
},
{
"name": "PREMIUM(プレミアム",
"url": "https://www.premium-beauty.com/top/",
"target": "_blank",
"level": "special"
},
{
"name": "MOODYZー",
"url": "https://www.moodyz.com/top/",
"target": "_blank",
"level": "common"
},
{
"name": "IDEAPOCKET (アイデアポケット)",
"url": "https://www.ideapocket.com/top/",
"target": "_blank",
"level": "common"
},
{
"name": "OPPAI(おっぱい)",
"url": "https://www.oppai-av.com/",
"target": "_blank",
"level": "common"
},
{
"name": "【kawaii*】公式サイト",
"url": "https://www.kawaiikawaii.jp/top/",
"target": "_blank",
"level": "common"
},
{
"name": "肉感あふれる女優",
"url": "https://www.fitch-av.com/top/",
"target": "_blank",
"level": "common"
},
{
"name": "タカラ映像 TAKARA",
"url": "https://www.takara-tv.jp/",
"target": "_blank",
"level": "common"
},
{
"name": "トップページ - AVメーカー【ダスッ!】公式サイト",
"url": "https://www.dasdas.jp/top/",
"target": "_blank",
"level": "common"
},
{
"name": "レズ・素人ナンパを中心",
"url": "https://deeps.net/",
"target": "_blank",
"level": "common"
},
{
"name": "変態紳士倶楽部】公式サイト",
"url": "https://www.to-satsu.com/top/",
"target": "_blank",
"level": "common"
},
{
"name": "wanzfactory(ワンズファクトリー)",
"url": "https://www.wanz-factory.com/top/",
"target": "_blank",
"level": "common"
},
{
"name": "【E-BODY(イーボディ)】公式サイト",
"url": "https://www.av-e-body.com/top/",
"target": "_blank",
"level": "common"
},
{
"name": "MGS動画は",
"url": "https://www.mgstage.com/",
"target": "_blank",
"level": "common"
},
{
"name": "ABC/妄想族(1302本)",
"url": "https://www.mousouzoku-av.com/top/",
"target": "_blank",
"level": "common"
},
{
"name": "JET「卍GROUP」のトップページです",
"url": "https://manji-group.com/top/",
"target": "_blank",
"level": "common"
},
{
"name": "!! ROCKET",
"url": "https://www.rocket-inc.net/top.php",
"target": "_blank",
"level": "common"
},
{
"name": "FANZA通販-アダルト通販ショッピング",
"url": "https://www.dmm.co.jp/mono/",
"target": "_blank",
"level": "common"
},
{
"name": "【無垢】公式サイトトーップページ | AVメーカ",
"url": "https://www.muku.tv/top/",
"target": "_blank",
"level": "common"
},
{
"name": "HHH(トリプルエイチ)| AVメーカ",
"url": "https://hhh-av.com/top/",
"target": "_blank",
"level": "common"
},
{
"name": "痴女ヘブンのトップページ| AVメーカ",
"url": "https://bi-av.com/top",
"target": "_blank",
"level": "common"
}
],
"poxrn": [
{
"name": "SOD(ソフトオンデマンド)",
"url": "https://www.sod.co.jp/",
"target": "_blank",
"level": "common"
}
],
"Tech": [
{
"name": "Github",
"url": "https://github.com/",
"target": "_blank",
"level": "common"
},
{
"name": "Wikipedia",
"url": "https://zh.wikipedia.org/wiki/Wikipedia:%E9%A6%96%E9%A1%B5",
"target": "_blank",
"level": "common"
}
],
"SocialMedia": [
{
"name": "Reddit",
"url": "https://www.reddit.com/",
"target": "_blank",
"level": "special yellow"
},
{
"name": "Quora",
"url": "https://www.quora.com/",
"target": "_blank",
"level": "common"
},
{
"name": "Twitter",
"url": "https://twitter.com/",
"target": "_blank",
"level": "special yellow"
},
{
"name": "Instagram",
"url": "https://www.instagram.com/",
"target": "_blank",
"level": "special"
},
{
"name": "Tiktok",
"url": "https://www.tiktok.com/",
"target": "_blank",
"level": "common"
},
{
"name": "Youtube",
"url": "https://m.youtube.com/",
"target": "_blank",
"level": "special"
}
],
"Media": [
{
"name": "Netflix",
"url": "https://www.netflix.com/browse",
"target": "_blank",
"level": "special yellow"
},
{
"name": "HBO",
"url": "https://www.hbo.com/",
"target": "_blank",
"level": "common"
},
{
"name": "Disney+",
"url": "https://www.disneyplus.com/en-hk",
"target": "_blank",
"level": "common"
},
{
"name": "Amazon Prime Video",
"url": "https://www.primevideo.com/",
"target": "_blank",
"level": "common"
}
],
"images": [
{
"name": "Pexels",
"url": "https://www.pexels.com/",
"target": "_blank",
"level": "common yellow"
},
{
"name": "Pixbay",
"url": "https://pixabay.com/",
"target": "_blank",
"level": "common"
}
],
"Developer": [
{
"name": "Github",
"url": "https://github.com/",
"target": "_blank",
"level": "special yellow"
},
{
"name": "v2ex",
"url": "https://www.v2ex.com/",
"target": "_blank",
"level": "yellow"
},
{
"name": "思否",
"url": "https://segmentfault.com/",
"target": "_blank",
"level": "special"
},
{
"name": "infoq",
"url": "https://www.infoq.cn/",
"target": "_blank",
"level": "special"
},
{
"name": "掘金",
"url": "https://juejin.cn/",
"target": "_blank",
"level": "special"
},
{
"name": "MDN",
"url": "https://developer.mozilla.org/zh-CN/",
"target": "_blank",
"level": "common yellow"
},
{
"name": "w3schools",
"url": "https://w3schools.cn/",
"target": "_blank",
"level": "common"
},
{
"name": "Stack Overflow",
"url": "https://stackoverflow.com/",
"target": "_blank",
"level": "common"
}
],
"Front-build": [
{
"name": "Typecho",
"url": "https://typecho.org/",
"target": "_blank",
"level": "special"
},
{
"name": "Vercel",
"url": "https://vercel.com/new",
"target": "_blank",
"level": "special"
},
{
"name": "Cloudflare Pages",
"url": "https://pages.cloudflare.com/",
"target": "_blank",
"level": "special"
},
{
"name": "Gitpages",
"url": "https://pages.github.com/",
"target": "_blank",
"level": "special"
},
{
"name": "Fly.io",
"url": "https://fly.io/",
"target": "_blank",
"level": "common"
}
],
"domain-buy": [
{
"name": "NameSilo",
"url": "https://www.namesilo.com/",
"target": "_blank",
"level": "better"
},
{
"name": "Cloudflare Domain",
"url": "https://www.cloudflare.com/products/registrar/",
"target": "_blank",
"level": "better"
},
{
"name": "NameCheap",
"url": "https://www.namecheap.com/",
"target": "_blank",
"level": "common"
},
{
"name": "freenom",
"url": "https://www.freenom.com/zh/freeandpaiddomains.html",
"target": "_blank",
"level": "common"
}
],
"xyellow": [
{
"name": "今晚看什么?",
"url": "https://limbopro.com/tools/jwksm/",
"target": "_blank",
"level": "special"
},
{
"name": "Jable",
"url": "https://jable.tv/",
"target": "_blank",
"level": "special"
},
{
"name": "Missav",
"url": "https://missav.ws/cn/",
"target": "_blank",
"level": "special"
},
{
"name": "Javbus",
"url": "https://www.javbus.com/",
"target": "_blank",
"level": "special"
},
{
"name": "JavLibrary",
"url": "https://www.javlibrary.com/cn/",
"target": "_blank",
"level": "better"
},
{
"name": "Pornhub",
"url": "https://cn.pornhub.com/",
"target": "_blank",
"level": "better"
},
{
"name": "Xvideos",
"url": "https://www.xvideos.com/",
"target": "_blank",
"level": "better"
},
{
"name": "Javday",
"url": "https://javday.tv/",
"target": "_blank",
"level": "better"
}, {
"name": "小黄书",
"url": "https://xchina.co/",
"target": "_blank",
"level": "better"
},
{
"name": "Njav",
"url": "https://24av.net/",
"target": "_blank",
"level": "better"
},
{
"name": "hanime1",
"url": "https://hanime1.me/comics",
"target": "_blank",
"level": "common"
}
,
{
"name": "Porn Dude",
"url": "https://theporndude.com/zh",
"target": "_blank",
"level": "common"
}
],
"knowledge": [
{
"name": "正则表达式",
"url": "https://limbopro.com/archives/Regular_Expressions.html",
"target": "_blank",
"level": "common"
},
{
"name": "快乐的命令行",
"url": "https://t.me/limboprossr/3197",
"target": "_blank",
"level": "special"
},
{
"name": "认知偏差手册",
"url": "https://s75w5y7vut.feishu.cn/docs/doccn3BatnScBJe7wD7K3S5poFf#RirzLG",
"target": "_blank",
"level": "common"
},
{
"name": "Bash 教程",
"url": "https://wangdoc.com/bash/",
"target": "_blank",
"level": "common"
},
{
"name": "SSH 教程",
"url": "https://wangdoc.com/ssh/",
"target": "_blank",
"level": "common"
},
{
"name": "Vim从入门到精通",
"url": "https://limbopro.com/archives/31058.html",
"target": "_blank",
"level": "common"
}
],
"ipcheck": [
{
"name": "ip地址查询(当前代理节点/本地IP信息)",
"url": "https://ip.skk.moe/",
"target": "_blank",
"level": "special"
},
{
"name": "域名被墙检测",
"url": "https://www.checkgfw.com/",
"target": "_blank",
"level": "common"
},
{
"name": "网站状态检测",
"url": "https://check-host.net/check-http?host=https://limbopro.com",
"target": "_blank",
"level": "special"
},
{
"name": "IP.SB",
"url": "https://ip.sb/",
"target": "_blank",
"level": "common"
},
{
"name": "BGP Toolkit ",
"url": "https://bgp.he.net/",
"target": "_blank",
"level": "common"
},
{
"name": "Baidu",
"url": "https://www.baidu.com/",
"target": "_blank",
"level": "common"
}
],
"search": [
{
"name": "Google",
"url": "https://www.google.com/",
"target": "_blank",
"level": "special yellow"
},
{
"name": "Bing",
"url": "https://www.bing.com/",
"target": "_blank",
"level": "common"
},
{
"name": "DuckDuckGo",
"url": "https://duckduckgo.com/",
"target": "_blank",
"level": "common"
},
{
"name": "Yahoo!)",
"url": "https://hk.yahoo.com/?p=us",
"target": "_blank",
"level": "common"
},
{
"name": "搜狗搜索",
"url": "https://www.sogou.com/",
"target": "_blank",
"level": "common"
},
{
"name": "Baidu",
"url": "https://www.baidu.com/",
"target": "_blank",
"level": "common"
}
],
"AICHAT": [
{
"name": "Grok",
"url": "https://grok.com/",
"target": "_blank",
"level": "special yellow"
},
{
"name": "Google Bard",
"url": "https://bard.google.com/?hl=en",
"target": "_blank",
"level": "special"
},
{
"name": "Github Copilot",
"url": "https://github.com/copilot",
"target": "_blank",
"level": "special"
},
{
"name": "ChatGPT",
"url": "https://chat.openai.com/auth/login",
"target": "_blank",
"level": "better"
},
{
"name": "Bing AI",
"url": "https://www.bing.com/search?q=Bing+AI&showconv=1&FORM=hpcodx",
"target": "_blank",
"level": "better"
},
{
"name": "Claude.ai",
"url": "https://claude.ai/",
"target": "_blank",
"level": "better"
}
],
"Tools": [
{
"name": "在线正则表达式测试",
"url": "https://tool.oschina.net/regex/",
"target": "_blanl",
"level": "special yellow"
},
{
"name": "在线文件格式转换器",
"url": "https://convertio.co/zh/",
"target": "_blank",
"level": "common"
},
{
"name": "PDF在线转换",
"url": "https://www.ilovepdf.com/zh-cn",
"target": "_blank",
"level": "common"
},
{
"name": "iconfont",
"url": "https://www.iconfont.cn/",
"target": "_blank",
"level": "common"
}
],
"comic18": [
{
"name": "hitomi",
"url": "https://hitomi.la/index-chinese.html",
"target": "_blank",
"level": "special yellow"
},
{
"name": "jcomic",
"url": "https://jcomic.net/",
"target": "_blank",
"level": "special"
},
{
"name": "绅士漫画",
"url": "https://www.wnacg.com/",
"target": "_blank",
"level": "common"
},
{
"name": "嗶咔picacg免費網頁版",
"url": "https://manhuapica.com/",
"target": "_blank",
"level": "common"
},
{
"name": "E-Hentai",
"url": "https://e-hentai.org/",
"target": "_blank",
"level": "common"
},
{
"name": "禁漫天堂",
"url": "https://18comic.vip/",
"target": "_blank",
"level": "common"
},
{
"name": "肉漫",
"url": "https://www.rouman5.com/",
"target": "_blank",
"level": "better"
},
{
"name": "dlsite",
"url": "https://www.dlsite.com/books/",
"target": "_blank",
"level": "better"
}
],
"seoandmore": [
{
"name": "博客优化",
"url": "https://limbopro.com/category/builder/",
"target": "_blank",
"level": "special"
},
{
"name": "博客防御",
"url": "https://limbopro.com/tag/Cloudflare/",
"target": "_blank",
"level": "common"
}
],
"bookreadanddownload": [
{
"name": "苦瓜书盘",
"url": "https://kgbook.com/",
"target": "_blank",
"level": "common"
},
{
"name": "Library Genesis",
"url": "https://www.libgen.is/",
"target": "_blank",
"level": "special"
},
{
"name": "Z-library",
"url": "https://limbopro.com/archives/30553.html",
"target": "_blank",
"level": "special yellow"
}
],
"front-end": [
{
"name": "网道",
"url": "https://wangdoc.com/",
"target": "_blank",
"level": "common"
},
{
"name": "Web 开发技术",
"url": "https://developer.mozilla.org/zh-CN/docs/Web",
"target": "_blank",
"level": "common"
},
{
"name": "现代 JavaScript 教程",
"url": "https://zh.javascript.info/",
"target": "_blank",
"level": "special"
},
{
"name": "JavaScript高级程序设计",
"url": "https://t.me/limboprossr/2812",
"target": "_blank",
"level": "common yellow"
},
{
"name": "CSS教程",
"url": "https://www.runoob.com/css/css-tutorial.html",
"target": "_blank",
"level": "common"
},
{
"name": "w3school 在线教程",
"url": "https://www.w3school.com.cn/index.html",
"target": "_blank",
"level": "common"
}
],
"downloading": [
{
"name": "M3U8下载?(Porn/Jable..)",
"url": "https://limbopro.com/archives/M3U8-Downloader.html",
"target": "_blank",
"level": "common yellow"
},
{
"name": "Twitter 视频下载(油猴脚本)",
"url": "https://limbopro.com/archives/27446.html#%E8%84%9A%E6%9C%AC%E7%9A%84%E5%AE%89%E8%A3%85%E4%B8%8E%E4%BD%BF%E7%94%A8",
"target": "_blank",
"level": "common yellow"
},
{
"name": "Instagram 视频下载(电报🤖)",
"url": "https://t.me/instasavegrambot",
"target": "_blank",
"level": "del"
},
{
"name": "YouTube 视频下载(电报🤖)",
"url": "https://t.me/yt_dbot",
"target": "_blank",
"level": "del"
},
{
"name": "Instagram 视频下载(iOS捷径)",
"url": "https://limbopro.com/archives/1053.html",
"target": "_blank",
"level": "common"
},
{
"name": "Instagram 视频下载(PC网页版)",
"url": "https://sssinstagram.com/",
"target": "_blank",
'level': 'del'
},
{
"name": "Youtube 视频下载(PC网页版)",
"url": "https://ssyoutube.com/",
"target": "_blank"
},
{
"name": "Pornhub 视频下载(PC网页版)",
"url": "https://www.saveporn.net/",
"target": "_blank"
},
{
"name": "More...",
"url": "https://limbopro.com/category/downloader/",
"target": "_blank"
}
],
"aigc": [
{
"name": "Stable Diffusion入门",
"url": "https://limbopro.com/archives/install_and_quickstart_Stable_Diffusion.html",
"target": "_blank",
"level": "special"
},
{
"name": "Civitai",
"url": "https://civitai.com/",
"target": "_blank",
"level": "better"
},
{
"name": "Midjourney",
"url": "https://midjourney.com/",
"target": "_blank",
"level": "better yellow"
},
{
"name": "Notion AI",
"url": "https://www.notion.so/product/ai",
"target": "_blank",
"level": "better"
}
],
"currentnews": [
{
"name": "网易新闻",
"url": "https://news.163.com/",
"target": "_blank",
"level": "better yellow"
},
{
"name": "谷歌新闻",
"url": "https://news.google.com/home?hl=zh-CN&gl=CN&ceid=CN:zh-Hans",
"target": "_blank",
"level": "common"
},
{
"name": "纽约时报",
"url": "https://cn.nytimes.com/zh-hant/",
"target": "_blank",
"level": "common"
},
{
"name": "华尔街日报",
"url": "https://cn.wsj.com/",
"target": "_blank",
"level": "common"
},
{
"name": "BBC News",
"url": "https://www.bbc.com/zhongwen/simp",
"target": "_blank",
"level": "common"
}
],
"writer": [
{
"name": "顶尖文案TOPYS",
"url": "https://www.topys.cn/",
"target": "_blank",
"level": "better"
},
{
"name": "广告门",
"url": "https://www.adquan.com/",
"target": "_blank",
"level": "special"
},
{
"name": "梅花网",
"url": "https://www.meihua.info/",
"target": "_blank",
"level": "common"
},
{
"name": "数英网",
"url": "https://www.digitaling.com/",
"target": "_blank",
"level": "special"
},
{
"name": "运营派",
"url": "https://www.yunyingpai.com/",
"target": "_blank",
"level": "common"
}
],
"technews": [
{
"name": "少数派",
"url": "https://sspai.com/",
"target": "_blank",
"level": "common yellow"
},
{
"name": "虎嗅",
"url": "https://huxiu.com/",
"target": "_blank",
"level": "common"
},
{
"name": "36Kr",
"url": "https://36kr.com/",
"target": "_blank",
"level": "common"
},
{
"name": "爱范儿",
"url": "https://www.ifanr.com/",
"target": "_blank",
"level": "common"
},
{
"name": "pingwest",
"url": "https://www.pingwest.com/",
"target": "_blank",
"level": "common"
}
],
"movies": [
{
"name": "低端影视",
"url": "https://ddys.pro/",
"target": "_blank",
"level": "special del"
},
{
"name": "小宝影视",
"url": "https://xiaobaotv.com/",
"target": "_blank",
"level": "special"
},
{
"name": "iyf爱壹帆",
"url": "https://www.iyf.tv/",
"target": "_blank",
"level": "better"
},
{
"name": "华人直播",
"url": "https://huaren.live/",
"target": "_blank",
"level": "better"
},
{
"name": "🆕努努影院",
"url": "https://nnyy.la/",
"target": "_blank",
"level": "better"
},
{
"name": "欧乐影视",
"url": "https://www.olevod.tv/",
"target": "_blank",
"level": "special"
},
{
"name": "剧迷网",
"url": "https://gimy.com.tw/",
"target": "_blank",
"level": "better"
}
],
"imusic": [
{
"name": "Raining FM",
"url": "https://raining.fm/",
"target": "_blank",
"level": "better"
},
{
"name": "SoundCloud",
"url": "https://soundcloud.com/",
"target": "_blank",
"level": "better"
},
{
"name": "Spotify",
"url": "https://open.spotify.com/",
"target": "_blank",
"level": "special"
},
{
"name": "YT Music",
"url": "https://www.youtube.com/channel/UC-9-kyTW8ZkZNDHQJ6FgpwQ",
"target": "_blank",
"level": "special"
},
{
"name": "网易云音乐",
"url": "https://music.163.com/",
"target": "_blank",
"level": "better"
},
{
"name": "QQ音乐",
"url": "https://y.qq.com/",
"target": "_blank",
"level": "better"
},
{
"name": "酷狗音乐",
"url": "https://www.kugou.com/",
"target": "_blank",
"level": "better"
}
],
"cheeseispower": [
{
"name": "leetcode",
"url": "ttps://leetcode.cn/",
"target": "_blank",
"level": "better"
},
{
"name": "炼码",
"url": "https://www.lintcode.com/",
"target": "_blank",
"level": "better"
},
{
"name": "菜鸟教程",
"url": "https://www.runoob.com/",
"target": "_blank",
"level": "better"
},
{
"name": "w3cschool",
"url": "https://www.w3school.com.cn/",
"target": "_blank",
"level": "better"
},
{
"name": "Stackoverflow",
"url": "https://stackoverflow.com/",
"target": "_blank",
"level": "better"
},
{
"name": "Github",
"url": "https://github.com/",
"target": "_blank",
"level": "better"
}
],
"learnlingenglish": [
{
"name": "BBC News",
"url": "https://www.bbc.com/",
"target": "_blank",
"level": "better yellow"
},
{
"name": "台北时报",
"url": "https://www.taipeitimes.com/",
"target": "_blank",
"level": "better"
},
{
"name": "NPR",
"url": "https://www.npr.org/",
"target": "_blank",
"level": "better"
},
{
"name": "Voice of America",
"url": "https://learningenglish.voanews.com/",
"target": "_blank",
"level": "better"
}, {
"name": "United Nations (UN) Official Website",
"url": "https://www.un.org/en",
"target": "_blank",
"level": "best"
},
{
"name": "TED",
"url": "https://www.ted.com/",
"target": "_blank",
"level": "better yellow"
}, {
"name": "TED Ideas",
"url": "https://ideas.ted.com/",
"target": "_blank",
"level": "better"
}, {
"name": "Good News",
"url": "https://www.goodnewsnetwork.org/",
"target": "_blank",
"level": "better yellow"
},
{
"name": "Breaking News English",
"url": "https://breakingnewsenglish.com/",
"target": "_blank",
"level": "best"
},
{
"name": "Elllo.org",
"url": "https://www.elllo.org/",
"target": "_blank",
"level": "better"
},
{
"name": "BBC Learning English",
"url": "https://www.bbc.co.uk/learningenglish/",
"target": "_blank",
"level": "best"
},
{
"name": "British Council LearnEnglish",
"url": "https://learnenglish.britishcouncil.org/",
"target": "_blank",
"level": "best"
},
{
"name": "Cambridge English",
"url": "https://www.cambridgeenglish.org/learning-english/",
"target": "_blank",
"level": "best yellow"
},
{
"name": "TalkEnglish.com",
"url": "https://www.talkenglish.com/",
"target": "_blank",
"level": "better"
},
{
"name": "Activities for ESL Students",
"url": "https://a4esl.org/",
"target": "_blank",
"level": "better"
},
{
"name": "ESL Bits",
"url": "http://www.esl-bits.net/",
"target": "_blank",
"level": "better"
},
{
"name": "Dave's ESL Cafe",
"url": "https://www.eslcafe.com/",
"target": "_blank",
"level": "better"
},
{
"name": "Quill.org",
"url": "https://www.quill.org/",
"target": "_blank",
"level": "better"
},
{
"name": "Howjsay",
"url": "https://www.howjsay.com/",
"target": "_blank",
"level": "better"
},
{
"name": "Sam Altman",
"url": "https://blog.samaltman.com/",
"target": "_blank",
"level": "better"
}
],
"test": [
{
"name": "Github",
"url": "https://github.com/",
"target": "_blank",
"level": "better"
}
]
}
// 这里存放导航页各类网站