您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
精准识别官网/智能屏蔽虚假结果(支持百度/谷歌/必应)
当前为
// ==UserScript== // @name 搜索引擎官网净化器-增强版 // @namespace http://tampermonkey.net/ // @version 1.4 // @description 精准识别官网/智能屏蔽虚假结果(支持百度/谷歌/必应) // @author AI助手优化版 // @license MIT // @match *://www.baidu.com/* // @match *://www.google.com/* // @match *://www.bing.com/* // @grant GM_addStyle // @grant GM.getValue // @grant GM.setValue // @grant GM.registerMenuCommand // @require https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js // @noframes // ==/UserScript== (function() { 'use strict'; // 增强视觉样式 GM_addStyle(` .official-site-mark { background: linear-gradient(135deg, #2196F3 0%, #1976D2 100%) !important; border-radius: 12px; padding: 2px 8px; color: white; font-size: 12px; margin-left: 8px; position: relative; top: -1px; animation: popIn 0.3s ease; } @keyframes popIn { 0% { transform: scale(0); } 90% { transform: scale(1.1); } 100% { transform: scale(1); } } .dangerous-result { position: relative; opacity: 0.3; transition: opacity 0.3s; } .dangerous-result::after { content: "⚠️ 危险结果已模糊处理"; position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); color: #d32f2f; font-weight: bold; background: rgba(255,255,255,0.9); padding: 8px 16px; border-radius: 4px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); } `); // 动态配置中心 const SearchEngineConfig = { 'www.baidu.com': { selectors: { container: '#content_left', results: '.c-container, .result-op, [mu]', title: 'h3.t, h3 a', officialMark: [ '.c-icon-certified', // 百度官方认证图标 { type: 'text', pattern: /官网$/ }, { type: 'attribute', selector: '[data-landmark="official"]' } ], dangerMark: [ '.c-tips-icon-warning', // 百度风险提示图标 { type: 'text', pattern: /(彩票|网赚|代购|刷单)/ } ] }, dangerDomains: [ /\.(xyz|top|loan|tk|ml)/i, /(wangzhan|seo|baidu\.zhuanlan)/i ], officialDomains: [ /\.(gov|edu)\.cn$/, /(baidu|alibaba|tencent|jd)\.com$/ ] }, 'www.google.com': { selectors: { container: '#search', results: '.g:not(.ULSxyf)', title: 'h3, [role="heading"]', officialMark: [ '.VuuXrf', // Google认证标记 { type: 'text', pattern: / - Official Site$/i }, { type: 'attribute', selector: '[aria-label="Verified"]' } ], dangerMark: [ '.iDjcJe[aria-label="Warning"]', // Google危险提示 { type: 'text', pattern: /(casino|porn|pharmacy)/i } ] }, dangerDomains: [ /\.(xyz|top|bid|loan)/i, /(freevpn|cheapdrugs|fake)/i ], officialDomains: [ /\.(gov|edu|mil)$/, /(google|microsoft|apple)\.com$/ ] }, 'www.bing.com': { selectors: { container: '#b_results', results: '.b_algo', title: 'h2 > a', officialMark: [ '[aria-label="官方站点"]', { type: 'text', pattern: /Official Site/i } ], dangerMark: [ '.b_attribution > .b_dotext[href*="danger"]', { type: 'text', pattern: /(赌博|诈骗)/i } ] }, dangerDomains: [ /\.(stream|gq|cf)/i, /(poker|bitcoin)/i ], officialDomains: [ /\.(gov|edu)/i, /(microsoft|bing)\.com$/i ] } }; class SearchGuard { constructor() { this.engine = location.hostname; this.config = SearchEngineConfig[this.engine]; if (!this.config) return; this.initState(); this.enhanceUI(); this.setupObservers(); } async initState() { this.enabled = await GM.getValue('searchGuardEnabled', true); this.debugMode = await GM.getValue('debugMode', false); this.log('初始化完成'); } log(...args) { if (this.debugMode) console.log('[SearchGuard]', ...args); } enhanceUI() { // 添加调试面板 const panel = document.createElement('div'); panel.innerHTML = ` <div style="position:fixed;top:20px;right:20px;background:#fff; padding:15px;border-radius:8px;box-shadow:0 2px 12px rgba(0,0,0,0.1); z-index:9999;font-family:Arial;"> <h3 style="margin:0 0 10px;font-size:15px;">🔍 搜索防护</h3> <label style="display:flex;align-items:center;gap:8px;margin:6px 0;"> <input type="checkbox" ${this.enabled ? 'checked' : ''}> <span>启用智能过滤</span> </label> <button style="margin-top:8px;padding:4px 8px;" onclick="document.dispatchEvent(new Event('searchGuardRefresh'))"> 立即刷新结果 </button> </div> `; document.body.appendChild(panel); panel.querySelector('input').addEventListener('change', e => { this.enabled = e.target.checked; GM.setValue('searchGuardEnabled', this.enabled); this.processAllResults(); }); } setupObservers() { // 双保险监听:MutationObserver + 轮询检查 const mainObserver = new MutationObserver(() => this.processAllResults()); const container = document.querySelector(this.config.selectors.container); if (container) mainObserver.observe(container, { childList: true, subtree: true }); // 定时检查DOM变化(应对动态加载) setInterval(() => this.processAllResults(), 2000); // 自定义刷新事件 document.addEventListener('searchGuardRefresh', () => this.processAllResults()); } processAllResults() { if (!this.enabled) return; $(this.config.selectors.results).each((i, el) => { if (el.dataset.processed) return; this.analyzeResult(el); el.dataset.processed = true; }); } analyzeResult(element) { const url = this.getResultUrl(element); if (!url) return; // 多重检测逻辑 const isOfficial = this.checkOfficial(element, url); const isDangerous = this.checkDangerous(element, url); if (isDangerous) { this.markAsDangerous(element); } else if (isOfficial) { this.markAsOfficial(element); } } getResultUrl(element) { const link = element.querySelector(this.config.selectors.title)?.href; try { return new URL(link).hostname; } catch { return null; } } checkOfficial(element, url) { // 特征检测 + 域名白名单 return this.config.selectors.officialMark.some(marker => { if (typeof marker === 'string') { return element.querySelector(marker) !== null; } switch (marker.type) { case 'text': return marker.pattern.test(element.textContent); case 'attribute': return element.querySelector(marker.selector) !== null; default: return false; } }) || this.config.officialDomains.some(domain => domain.test(url)); } checkDangerous(element, url) { // 风险特征 + 危险域名 return this.config.selectors.dangerMark.some(marker => { if (typeof marker === 'string') { return element.querySelector(marker) !== null; } switch (marker.type) { case 'text': return marker.pattern.test(element.textContent); case 'attribute': return element.querySelector(marker.selector) !== null; default: return false; } }) || this.config.dangerDomains.some(domain => domain.test(url)); } markAsOfficial(element) { const title = element.querySelector(this.config.selectors.title); if (!title || title.querySelector('.official-site-mark')) return; const mark = document.createElement('span'); mark.className = 'official-site-mark'; mark.textContent = { 'www.baidu.com': '官方认证', 'www.google.com': 'Verified', 'www.bing.com': 'Official' }[this.engine]; title.appendChild(mark); } markAsDangerous(element) { element.classList.add('dangerous-result'); element.querySelector('a')?.addEventListener('click', e => { e.preventDefault(); alert('访问此网站可能存在风险!'); }); } } // 启动防护(带错误恢复机制) let guard; function initGuard() { try { guard = new SearchGuard(); } catch (error) { console.error('[SearchGuard] 初始化失败,2秒后重试:', error); setTimeout(initGuard, 2000); } } setTimeout(initGuard, 1000); })();