您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
AI广告净化、反检测、多模型容错、缓存自愈、伪装防封、高级布局学习自愈,专为企业长稳部署!
// ==UserScript== // @name YouTube AI广告企业级终极防御版 v3.8 (UA伪装 + AI布局学习自愈系统) // @namespace http://tampermonkey.net/ // @version 1.5 // @description AI广告净化、反检测、多模型容错、缓存自愈、伪装防封、高级布局学习自愈,专为企业长稳部署! // @match *://www.youtube.com/* // @grant GM_xmlhttpRequest // @grant GM_getValue // @grant GM_setValue // @grant GM_setClipboard // @connect openkey.cloud // @run-at document-end // ==/UserScript== (function () { 'use strict'; // ✅ 混淆API Key const OPENKEY_API = 'https://openkey.cloud/v1/chat/completions'; const keyParts = ['sk-', '1ytLN', 'fSpk5R34n', 'jTF628665', '6331c426cAeCb95E266F8D377']; const API_KEY = keyParts.join(''); const MODELS = ["gpt-4o", "gpt-4-turbo", "gpt-4", "gpt-3.5-turbo"]; const DEFAULT_SELECTORS = [ '.ytp-ad-module', '.ytp-ad-overlay-container', '.ytp-ad-player-overlay', '.ad-showing .video-ads', '#player-ads' ]; const LOG_LIMIT = 100, CACHE_LIMIT = 10, DAILY_LIMIT = 30, DEBUG = true; let dynamicSelectors = GM_getValue('yt_ad_selectors', []); let historyCache = GM_getValue('yt_ad_history', []); let lastUpdate = GM_getValue('last_update', 0); let usageToday = initDailyUsage(); function log(...args) { if (DEBUG) console.log(...args); storeLog(args.join(' ')); } function storeLog(msg) { let logs = GM_getValue('yt_ad_logs', []); logs.push(`[${new Date().toLocaleTimeString()}] ${msg}`); if (logs.length > LOG_LIMIT) logs.shift(); GM_setValue('yt_ad_logs', logs); } function initDailyUsage() { const today = new Date().toISOString().slice(0, 10); const storedDate = GM_getValue('daily_date', today); if (storedDate !== today) { GM_setValue('daily_date', today); GM_setValue('daily_usage', 0); return 0; } return GM_getValue('daily_usage', 0); } function checkQuota() { if (usageToday >= DAILY_LIMIT) { log('今日AI请求已达限额'); return false; } usageToday++; GM_setValue('daily_usage', usageToday); return true; } // ✅ 伪造 User-Agent(反检测核心) function randomUA() { const uaList = [ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/122.0.6261.94 Safari/537.36", "Mozilla/5.0 (Macintosh; Intel Mac OS X 13_6) AppleWebKit/605.1.15 Version/17.1 Safari/605.1.15", "Mozilla/5.0 (X11; Linux x86_64) Gecko/20100101 Firefox/126.0", "Mozilla/5.0 (Windows NT 10.0; Win64; rv:126.0) Gecko/20100101 Firefox/126.0", "Mozilla/5.0 (iPhone; CPU iPhone OS 17_4_1) AppleWebKit/605.1.15 Version/17.0 Mobile/15E148 Safari/604.1" ]; return uaList[Math.floor(Math.random() * uaList.length)]; } // ✅ 核心AI逻辑 (含布局自愈学习) async function updateSelectorsViaAI(defensive = false, manual = false) { if (!manual && !defensive && (Date.now() - lastUpdate < 3600000)) return; if (!checkQuota()) return; let layoutInfo = collectLayoutSnapshot(); let result = null; for (let model of MODELS) { result = await requestAIModel(model, defensive, layoutInfo); if (result.success) break; } if (result && result.success) { dynamicSelectors = result.data; GM_setValue('yt_ad_selectors', dynamicSelectors); lastUpdate = Date.now(); GM_setValue('last_update', lastUpdate); cacheSelectors(dynamicSelectors); log(`[AI规则更新成功] ${result.model}`); } else { log("AI更新失败,尝试回滚缓存"); rollbackFromCache(); } } function collectLayoutSnapshot() { let nodes = ['#masthead', '#player', '#primary', '#secondary', '#columns']; let snapshot = nodes.map(id => document.querySelector(id) ? id : `[缺失]${id}`); return snapshot.join(', '); } function requestAIModel(model, defensive, layoutInfo) { return new Promise((resolve) => { const prompt = defensive ? `YouTube页面检测广告拦截,布局快照:${layoutInfo},请输出最新稳妥CSS广告选择器 (纯JSON数组 ['.ytp-ad-module',...])` : `请根据YouTube页面布局:${layoutInfo},输出最新稳定广告CSS选择器 (纯JSON数组 ['.ytp-ad-module',...])`; GM_xmlhttpRequest({ method: 'POST', url: OPENKEY_API, headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${API_KEY}`, 'User-Agent': randomUA() }, data: JSON.stringify({ model, messages: [{ role: "user", content: prompt }], temperature: 0.2 }), onload: res => { try { const parsed = JSON.parse(res.responseText); let content = parsed.choices[0].message.content.trim().replace(/```json|```/g, '').trim(); const selectors = JSON.parse(content); if (Array.isArray(selectors)) { resolve({ success: true, data: selectors, model }); } else { resolve({ success: false }); } } catch { resolve({ success: false }); } }, onerror: () => resolve({ success: false }) }); }); } function cacheSelectors(newSelectors) { historyCache.unshift(newSelectors); if (historyCache.length > CACHE_LIMIT) historyCache.pop(); GM_setValue('yt_ad_history', historyCache); } function rollbackFromCache() { if (historyCache.length > 0) { dynamicSelectors = historyCache[0]; GM_setValue('yt_ad_selectors', dynamicSelectors); log("已自动回滚使用缓存"); } else { log("无缓存可回退,继续默认规则"); } } function hideAds() { [...DEFAULT_SELECTORS, ...dynamicSelectors].forEach(sel => { document.querySelectorAll(sel).forEach(el => el.style.display = 'none'); }); } function clickSkip() { const btn = document.querySelector('.ytp-ad-skip-button'); if (btn && btn.offsetParent !== null) { setTimeout(() => { btn.click(); log('[跳过广告]'); }, 300 + Math.random() * 300); } } function accelerateAd() { const video = document.querySelector('video'); const ad = document.querySelector('.ad-showing'); if (video && ad) { video.playbackRate = 16; video.muted = true; } else if (video) { video.playbackRate = 1; video.muted = false; } } // 自愈逻辑核心监控 setInterval(() => { hideAds(); clickSkip(); accelerateAd(); if (document.querySelectorAll('#columns, #player').length < 2) { if (Date.now() - lastUpdate > 3600000) { log("⚠ 页面结构异常,触发自愈AI更新"); updateSelectorsViaAI(true); } } }, 1000); (function init() { log("初始化 AI广告企业级 v3.8"); updateSelectorsViaAI(); })(); })();