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