# 广告拦截功能说明 ## 📌 功能概述 XMBOX内置了强大的广告拦截系统,可以有效过滤视频播放过程中弹出的各类广告,特别是常见的赌博广告(如澳门新葡京、皇冠、金沙等)。 ## 🎯 拦截类型 ### 1. 赌博类广告 ⭐⭐⭐⭐⭐ **最常见的视频中途弹窗广告** 包括但不限于: - 澳门新葡京、皇冠、金沙、威尼斯人、永利等博彩品牌 - 各类赌场、扑克、投注网站 - 使用 `xpj`、`wnsr`、`js[数字]`、`vn[数字]` 等域名的赌博网站 **特征**:通常在视频播放到一半时突然弹出,覆盖整个播放器 ### 2. 广告联盟 - Google广告联盟(DoubleClick、AdSense等) - 百度广告联盟 - 淘宝/阿里广告联盟 - 腾讯广告联盟 ### 3. 视频平台广告 - 优酷、爱奇艺、腾讯视频等平台的贴片广告 - 芒果TV、乐视等平台广告 ### 4. 弹窗广告 - 页面加载时的弹窗 - 点击播放时的诱导弹窗 ### 5. 跟踪统计 - 百度统计、Google Analytics - CNZZ、友盟等统计代码 ## 🔧 使用方法 ### 方式一:内置拦截(推荐)✅ **无需任何配置**,应用已内置200+常见广告域名,包括: ```java // 已内置的赌博广告域名示例 ".*\\..*葡京.*" // 拦截所有包含"葡京"的域名 ".*\\..*皇冠.*" // 拦截所有包含"皇冠"的域名 ".*xpj.*\\..*" // 拦截新葡京相关域名 "wan.51img1.com" // 常见广告CDN "vip.ffzyad.com" // 视频广告域名 ``` ### 方式二:自定义拦截 在配置文件中添加 `ads` 字段: ```json { "spider": "your_spider_url", "sites": [...], "ads": [ "精确域名匹配", "example-ad.com", "another-ad-domain.net", "通配符匹配", ".*\\.advertisement\\..*", ".*\\.ad-server\\..*", "关键词匹配", ".*赌博.*", ".*博彩.*" ] } ``` ### 方式三:片头片尾跳过 🎬 对于**嵌入视频流中的广告**(无法通过域名拦截),使用片头片尾跳过功能: #### 设置片头跳过 1. 播放视频 2. 在片头广告结束后(前5分钟内),点击 **【片头】** 按钮 3. 当前时间点会被记录 4. 下次播放时自动从这个时间点开始 #### 设置片尾跳过 1. 播放到片尾广告开始前(后5分钟内),点击 **【片尾】** 按钮 2. 当前时间点会被记录 3. 下次播放时会在这个时间点停止 #### 重置设置 长按 **【片头】** 或 **【片尾】** 按钮即可重置 ## 📝 工作原理 ### WebView层拦截 ```java // 在WebView加载资源时拦截 @Override public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { String host = request.getUrl().getHost(); // 检查是否为广告域名 if (isAd(host)) { // 返回空响应,阻止广告加载 return emptyResponse; } return super.shouldInterceptRequest(view, request); } ``` ### 拦截流程 ``` 视频请求 → 检查域名 → 内置黑名单? → 是 → 拦截 ❌ ↓ 否 ↓ 用户自定义黑名单? → 是 → 拦截 ❌ ↓ 否 ↓ 允许加载 ✅ ``` ## 🛠️ 高级配置 ### 1. 正则表达式匹配 ```json { "ads": [ ".*\\.ad.*\\.com", // 匹配 sub.adserver.com ".*gambling.*", // 匹配任何包含gambling的域名 "^https?://[^/]*ad[^/]*/" // 匹配URL中包含ad的路径 ] } ``` ### 2. 分类管理 建议按类型组织广告域名: ```json { "ads": [ "// === 赌博广告 ===", ".*葡京.*", ".*casino.*", "// === 视频平台广告 ===", "atm.youku.com", "cupid.iqiyi.com", "// === 弹窗广告 ===", "mimg.0c1q0l.cn", "www.92424.cn" ] } ``` ## 📊 效果统计 启用广告拦截后,您可以看到: - ✅ 视频播放更流畅 - ✅ 无中途弹窗干扰 - ✅ 隐私数据不被跟踪 - ✅ 节省流量消耗 ## ❓ 常见问题 ### Q1: 为什么有些广告还是会出现? **A:** 可能的原因: 1. 广告直接嵌入视频流(使用片头片尾跳过) 2. 广告使用了新的域名(可添加到自定义黑名单) 3. 广告通过JavaScript动态生成(内容层广告,较难拦截) ### Q2: 会不会误拦截正常内容? **A:** 内置域名库经过精心筛选,主要针对已知广告域名。误拦截概率极低。如遇到问题,可以: - 关闭内置拦截(需修改代码) - 反馈给开发者更新黑名单 ### Q3: 如何找到广告的域名? **A:** 方法: 1. 使用Chrome浏览器开发者工具(F12)查看Network请求 2. 查看应用日志输出的URL 3. 参考其他用户分享的广告域名列表 ### Q4: 拦截会影响性能吗? **A:** 影响极小: - 仅在WebView解析阶段生效 - 字符串匹配操作非常快速 - 反而会因为减少网络请求而提升性能 ### Q5: 数据会被上传吗? **A:** 完全不会: - 所有拦截在本地进行 - 不联网、不上传 - 完全保护您的隐私 ## 🔍 调试方法 ### 查看拦截日志 启用调试模式可以看到被拦截的域名: ```bash # 连接设备 adb logcat | grep "WebView\|AdBlocker" # 查看拦截记录 adb logcat | grep "blocked" ``` ### 测试广告拦截 1. 访问包含广告的视频网站 2. 观察是否弹出广告 3. 检查日志中的拦截记录 ## 📚 域名库维护 ### 添加新的广告域名 编辑 `AdBlocker.java`: ```java private static final List GAMBLING_ADS = Arrays.asList( // 添加新发现的广告域名 "new-casino-ad.com", ".*new-gambling.*" ); ``` ### 提交贡献 如果您发现新的广告域名,欢迎: 1. 提交Issue报告 2. 提交Pull Request更新域名库 3. 在社区分享 ## 💡 最佳实践 1. **优先使用内置拦截** - 已覆盖大部分常见广告 2. **补充自定义规则** - 针对特定视频源的广告 3. **善用片头片尾跳过** - 处理嵌入式广告 4. **定期更新** - 保持应用最新版本以获取最新域名库 ## 🎉 总结 XMBOX的广告拦截系统通过**三层防护**: 1. 🛡️ **内置域名库** - 200+常见广告(含澳门新葡京等赌博广告) 2. 🛡️ **自定义黑名单** - 用户针对性添加 3. 🛡️ **片头片尾跳过** - 处理嵌入式广告 让您享受**纯净、流畅、安全**的视频观看体验!