智能YouTube全站广告拦截器

精准广告拦截,支持多平台保护

这些是代码更新过的版本。 显示所有版本

  • v2.2 2025-03-11

    **主要优化点说明:**

    1. **动态图标管理**
    ```javascript
    updateIconVisibility() {
    if (this.shouldShowIcon() && !this.iconInstance) {
    this.setupIcon();
    } else if (!this.shouldShowIcon() && this.iconInstance) {
    // 移除图标
    }
    }
    ```
    - 自动根据当前域名更新图标状态
    - 支持SPA应用的路由变化

    2. **增强配置系统**
    ```javascript
    protectedDomains: {
    'youtube.com': {
    icon: true, // 启用图标显示
    selectors: [/*YouTube专用选择器*/],
    networkPatterns: [/*广告请求特征*/]
    }
    }
    ```
    - 每个域名独立配置
    - 支持网络请求模式匹配

    3. **多层保护机制**
    ```javascript
    isProtected(element) {
    return domainConfig.selectors?.some(...) ||
    domainConfig.containers?.some(...);
    }
    ```
    - 同时检查元素本身和父容器
    - 防止误删关键元素

    4. **性能优化**
    ```javascript
    forceScan() {
    this.scanElement(document.documentElement);
    }
    ```
    - 智能扫描整个文档树
    - 使用防抖机制控制扫描频率

    5. **网络拦截增强**
    ```javascript
    isAdRequest(url) {
    const patterns = this.getDomainConfig()?.networkPatterns || [];
    return patterns.some(p => p.test(url));
    }
    ```
    - 域名特定的广告请求匹配
    - 支持正则表达式检测

    6. **状态反馈增强**
    ```javascript
    showStatusInfo() {
    this.tooltipInstance.innerHTML = `

    拦截版本: v2.2

    最后扫描: ${new Date().toLocaleTimeString()}

    已拦截请求: ${this.blockedCount || 0}

    `;
    }
    ```
    - 显示实时统计数据
    - 格式化时间信息

    **使用说明:**

    1. **在YouTube上的表现**
    - 右下角显示红色状态图标
    - 鼠标悬停显示拦截状态
    - 点击显示详细统计信息
    - 自动跳过前贴片广告
    - 移除视频内嵌广告

    2. **在百度/Google的表现**
    - 不显示状态图标
    - 保护搜索框及相关元素
    - 正常拦截广告内容

    3. **通用网站**
    - 自动应用通用广告规则
    - 拦截常见广告框架
    - 保护页面主体内容

    **扩展建议:**

    1. 添加用户配置界面:
    ```javascript
    // 示例:使用GM_config
    GM_config.init({
    'fields': {
    'showIcon': {
    'label': '显示状态图标',
    'type': 'checkbox',
    'default': true
    }
    }
    });
    ```

    2. 增加拦截统计功能:
    ```javascript
    class AdBlocker {
    constructor() {
    this.stats = {
    elementsRemoved: 0,
    requestsBlocked: 0
    };
    }

    safeRemove(element) {
    this.stats.elementsRemoved++;
    // ...
    }
    }
    ```

    3. 支持自定义规则:
    ```javascript
    const userRules = GM_getValue('customRules', []);
    SecurityConfig.adSelectors.push(...userRules);
    ```

    此版本在保持高效广告拦截的同时,通过动态图标系统提供清晰的状态反馈,并增强了多站点兼容性。

  • v2.1 2025-03-11

    **主要新增功能说明:**

    1. **动态图标系统**
    - 使用Base64编码的SVG作为YouTube风格图标
    - 智能显示逻辑:仅在YouTube域名下显示
    ```javascript
    shouldShowIcon() {
    return this.currentDomain.includes('youtube.com');
    }
    ```

    2. **交云效果优化**
    - 悬停动画效果:
    ```css
    .adblocker-status-icon:hover {
    opacity: 1;
    transform: scale(1.1);
    }
    ```
    - 工具提示系统:
    ```javascript
    this.tooltip.textContent = '广告拦截已启用 ✓';
    ```

    3. **用户交互功能**
    - 点击显示详细信息:
    ```javascript
    this.icon.addEventListener('click', () => {
    this.tooltip.textContent = `拦截版本: v2.1\n最后扫描: ${new Date().toLocaleTimeString()}`;
    });
    ```

    4. **视觉样式优化**
    - 红色YouTube风格图标:
    ```css
    background: url('data:image/svg+xml;base64,...');
    ```
    - 半透明浮动效果:
    ```css
    opacity: 0.8;
    transition: opacity 0.3s;
    box-shadow: 0 2px 5px rgba(0,0,0,0.3);
    ```

    5. **定位安全策略**
    - 固定右下角定位:
    ```css
    position: fixed;
    bottom: 20px;
    right: 20px;
    z-index: 99999;
    ```

    **实现效果:**
    1. 在YouTube页面右下角显示红色播放按钮图标
    2. 鼠标悬停显示"广告拦截已启用"提示
    3. 点击图标显示版本信息和最后扫描时间
    4. 图标自动隐藏于非YouTube网站
    5. 平滑的过渡动画效果

    **扩展建议:**
    1. 要修改图标颜色,可调整SVG的fill属性值
    2. 要改变图标位置,修改CSS中的bottom/right值
    3. 如需在其他网站显示图标,修改shouldShowIcon()逻辑
    4. 可添加GM_config配置选项控制图标显示

    此版本在保持原有广告拦截功能的基础上,增加了直观的状态反馈机制,帮助用户确认脚本运行状态,同时不会对页面原有功能造成任何干扰。

  • v2.1 2025-03-11

    主要新增功能说明:

    动态图标系统

    使用Base64编码的SVG作为YouTube风格图标

    智能显示逻辑:仅在YouTube域名下显示

    javascript
    复制
    shouldShowIcon() {
    return this.currentDomain.includes('youtube.com');
    }
    交云效果优化

    悬停动画效果:

    css
    复制
    .adblocker-status-icon:hover {
    opacity: 1;
    transform: scale(1.1);
    }
    工具提示系统:

    javascript
    复制
    this.tooltip.textContent = '广告拦截已启用 ✓';
    用户交互功能

    点击显示详细信息:

    javascript
    复制
    this.icon.addEventListener('click', () => {
    this.tooltip.textContent = `拦截版本: v2.1\n最后扫描: ${new Date().toLocaleTimeString()}`;
    });
    视觉样式优化

    红色YouTube风格图标:

    css
    复制
    background: url('data:image/svg+xml;base64,...');
    半透明浮动效果:

    css
    复制
    opacity: 0.8;
    transition: opacity 0.3s;
    box-shadow: 0 2px 5px rgba(0,0,0,0.3);
    定位安全策略

    固定右下角定位:

    css
    复制
    position: fixed;
    bottom: 20px;
    right: 20px;
    z-index: 99999;
    实现效果:

    在YouTube页面右下角显示红色播放按钮图标

    鼠标悬停显示"广告拦截已启用"提示

    点击图标显示版本信息和最后扫描时间

    图标自动隐藏于非YouTube网站

    平滑的过渡动画效果

    扩展建议:

    要修改图标颜色,可调整SVG的fill属性值

    要改变图标位置,修改CSS中的bottom/right值

    如需在其他网站显示图标,修改shouldShowIcon()逻辑

    可添加GM_config配置选项控制图标显示

  • v2.0 2025-03-11

    改进亮点说明:

    智能域名识别系统

    javascript
    复制
    protectedDomains: {
    'baidu.com': {
    selectors: ['#kw', '.s_ipt'...], // 受保护元素
    containers: ['#form'] // 保护容器
    },
    'google.com': {...}
    }
    自动识别主流搜索引擎

    双重保护机制:直接元素保护+容器级保护

    三维扫描安全机制

    javascript
    复制
    safeScan() {
    this.scanElements(root); // 普通元素
    this.scanShadowDOM(root); // Shadow DOM
    this.scanIframes(root); // iframe内容
    }
    分层扫描避免遗漏

    自动跳过受保护内容

    动态节流控制

    javascript
    复制
    createThrottle(delay) {
    let lastExec = 0;
    return (fn) => {
    if (Date.now() - lastExec >= delay) {
    fn();
    lastExec = Date.now();
    }
    };
    }
    500ms扫描间隔

    避免频繁DOM操作导致页面卡顿

    精准广告识别规则

    javascript
    复制
    adPatterns: {
    selectors: [
    'div[data-ad]:not([data-adtype="content"])', // 排除内容型data-ad
    '[class*="ad-"]:not(.admin):not(.adaptive)' // 排除含ad的非广告类
    ],
    urlPatterns: [
    /\/ad[s]?\//i, // 匹配/ad/或/ads/
    /doubleclick\.net/i
    ]
    }
    更精确的选择器排除常见误判

    正则表达式匹配广告URL

    搜索引擎专项保护

    javascript
    复制
    protectElements(root) {
    this.protectedRules.selectors.forEach(selector => {
    root.querySelectorAll(selector).forEach(el => {
    el.style.cssText += '!important;'; // 强制保留样式
    });
    });
    }
    对搜索框等关键元素强制保留样式

    防止CSS选择器误删

    验证方法:

    百度搜索测试

    bash
    复制
    1. 访问 https://www.baidu.com
    2. 验证:
    - 搜索框正常显示(无白框/异常边框)
    - 输入时下拉建议正常显示
    - 点击搜索按钮正常跳转
    - 页面广告(如右侧推广链接)被移除
    Google搜索测试

    bash
    复制
    1. 访问 https://www.google.com
    2. 验证:
    - 搜索框聚焦效果正常
    - 即时搜索建议正常弹出
    - 无广告内容显示
    YouTube测试

    bash
    复制
    1. 播放任意视频
    2. 验证:
    - 前贴片广告自动跳过
    - 视频内广告横幅消失
    - 推荐广告模块被移除
    新闻网站测试

    bash
    复制
    1. 访问 https://www.示例新闻站点.com
    2. 验证:
    - 文章内嵌广告消失
    - 悬浮广告被移除
    - 页面功能正常
    异常处理机制:

    元素移除安全锁

    javascript
    复制
    removeElement(el) {
    if (el && !this.isProtected(el)) { // 双重验证
    el.parentNode.removeChild(el);
    }
    }
    CSS样式保护

    javascript
    复制
    el.style.cssText += '!important;'; // 防止样式覆盖
    跨域安全处理

    javascript
    复制
    try {
    // iframe处理代码
    } catch (e) {
    // 静默处理跨域错误
    }

  • v1.1 2025-03-09

    主要改进说明:
    选择器优化:

    合并选择器为单个查询字符串提升性能

    新增20+常见广告类名/属性选择器

    包含YouTube专用跳过按钮处理

    架构增强:

    网络请求拦截系统(支持fetch/XHR)

    递归Shadow DOM处理(支持无限层级)

    iframe内容处理(含跨域安全处理)

    性能优化:

    防抖时间优化为300ms

    MutationObserver配置优化

    移除冗余DOM查询

    反检测机制:

    隐藏原型方法修改痕迹

    请求拦截伪装为403错误

    强制显示跳过按钮避免样式隐藏检测

    异常处理:

    关键操作增加try-catch保护

    控制台错误信息优化

    跨域安全异常处理

    SPA支持:

    增强版路由变化检测

    延迟加载内容处理

    保守定时器作为最终保障

  • v1.0 2025-03-09