feat: 升级到v3.1.0

- 实现定时按钮倒计时显示功能
- 适配pixel主题化图标展示
- 优化TimerDialog按钮宽度设计
This commit is contained in:
您的名字
2025-10-28 19:40:13 +08:00
parent 794e1a32fe
commit 514368bc07
72 changed files with 1169 additions and 67 deletions
+265
View File
@@ -0,0 +1,265 @@
# 广告拦截功能说明
## 📌 功能概述
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. 🛡️ **片头片尾跳过** - 处理嵌入式广告
让您享受**纯净、流畅、安全**的视频观看体验!