Files
XMBOX/docs/AD_BLOCKING.md
您的名字 4a8a84a4eb feat: 升级到v3.1.0
- 实现定时按钮倒计时显示功能
- 适配pixel主题化图标展示
- 优化TimerDialog按钮宽度设计
2025-10-28 19:49:49 +08:00

266 lines
6.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 广告拦截功能说明
## 📌 功能概述
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<String> 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. 🛡️ **片头片尾跳过** - 处理嵌入式广告
让您享受**纯净、流畅、安全**的视频观看体验!