观澜浏览器 - Via功能差异开发路线图

版本: 2.0.0 (修正版)
创建时间: 2026-05-22
最后更新: 2026-05-22 (DEX 深度分析后修正)

⚠️ 2026-05-22 修正: 基于 DEX 深度提取分析,发现此前严重低估了 Via 的能力差距。 Via 不仅功能远超预期,且拥有完整 ABP 拦截引擎 + Userscript 生态 + Readability 阅读模式。


🎯 总体目标

通过 DEX 逆向分析发现,Via 比观澜多 8 项核心能力。本路线图按差距大小重新排序,集中力量补强最大短板。


📊 功能差异概览(修正后)

缺失功能按差距排序

功能 优先级 差距倍数 用户价值 预计工时
广告拦截重构 🔴 P0 60x 极高 24小时
Userscript 脚本 🔴 P0 从0到1 极高 20小时
阅读模式 🟡 P1 从0到1 16小时
JS Bridge 双桥接 🟡 P1 从0到1 12小时
用户代理切换 🟢 P2 80%已完成 8小时
规则在线更新 🟢 P2 从0到1 8小时
代理设置 ⚪ P3 12小时
SSL证书管理 ⚪ P3 12小时

🗓️ 开发时间线(修正)

阶段一:广告拦截重构 (P0, ~24h) — 最大差距

1. 导入 Via simple.txt 3143条规则 → 直接内置到项目
2. 实现 ABP 规则解析器 (||domain^, ##elemhide, @@exception, /regex/)
3. 元素隐藏 CSS 注入引擎
4. 在线规则订阅 + 定时更新 (EasyList/Adguard 共25个源)
5. AdBlockStats UI 适配新引擎

预计: 2026-05-29

阶段二:Userscript 生态 (P0, ~20h)

1. Userscript 管理器 (安装/卸载/启用/禁用)
2. 元数据解析 (@name/@match/@include/@run-at)
3. JS 注入引擎 (evaluateJavaScript on page load)
4. Userscript 设置 UI 页面
5. 脚本持久化存储

预计: 2026-06-05

阶段三:阅读模式 + JS Bridge (P1, ~28h)

1. 移植 Mozilla Readability 到 ArkTS
2. 阅读模式 UI (字体/背景/大小调节)
3. window.via.postMessage JS Bridge
4. 双平台 bridge (ArkWeb + 预留 WKWebView)

预计: 2026-06-12

阶段四:UA + 规则更新 (P2, ~16h)

阶段五:代理 + SSL (P3, ~24h)


🔧 详细实现方案

1. 广告拦截重构 — ABP 引擎 (P0, ~24h)

Via 证据:assets/simple.txt (3143条) + 25个订阅URL + shouldInterceptRequest + ABP 规则解析。

技术架构

ABPRuleParser (ABP 规则解析器)
├─ parseDomainRule(pattern): boolean
├─ parseElemHideRule(selector): string
├─ parseException(url): boolean
└─ match(url, domain): MatchResult
          │
ABPAdsBlockManager (拦截管理器)
├─ loadBuiltinRules()
├─ loadRulesFromFile(path)
├─ shouldBlock(url, domain): boolean
├─ getHideCSS(domain): string
└─ updateFromSubscription(url)

实现步骤

  1. 导入 Via simple.txt (2h) — 直接复制 3143 条规则
  2. 实现 ABP 规则解析器 (8h)
    • 域名规则 ||domain^ + 选项 $domain=, $third-party
    • 元素隐藏 ##selector
    • 例外规则 @@||domain^
    • 正则规则 /regex/
  3. 集成 ArkWeb AdsBlockManager (4h) — 对接鸿蒙原生拦截 API
  4. 元素隐藏注入 (4h) — CSS display:none 注入
  5. 在线订阅更新 (6h) — 定时拉取 EasyList / Adguard

2. Userscript 引擎 (P0, ~20h)

Via 证据:// ==UserScript== + // @match + Tampermonkey 文档链接。

技术架构

UserscriptManager (脚本管理器)
├─ scripts: Userscript[]
├─ parseMetadata(block): UserMetadata
├─ installFromUrl(url)
├─ shouldRun(script, url): boolean
└─ injectScript(script, controller)

interface Userscript {
  name: string
  match: string[]        // @match URL patterns
  include: string[]      // @include URL patterns
  exclude: string[]      // @exclude URL patterns
  runAt: 'document-start' | 'document-end'
  code: string           // JS 代码
}

实现步骤

  1. 元数据解析 (6h) — 解析 // ==UserScript== 块中的 @name/@match/@include/@run-at
  2. URL 匹配引擎 (4h) — Glob 模式匹配 (*://*.baidu.com/*)
  3. JS 注入引擎 (6h) — evaluateJavaScript 在适当时机注入
  4. Userscript UI (4h) — 安装/管理/启用/禁用页面

3. 阅读模式 (P1, ~16h)

Via 证据:https://github.com/mozilla/readability (已集成)。

实现步骤

  1. 移植 Readability 算法 (8h) — 从 JS 移植到 ArkTS
  2. 阅读模式 UI (4h) — 字体/背景/大小控制栏
  3. JS Bridge 数据传递 (4h) — 将正文通过 window.via 传回 Native

4. JS Bridge 双平台通信 (P1, ~12h)

Via 证据:window.via.postMessage(secret, data) + window.webkit.messageHandlers

实现步骤

  1. 注册 JS Interface (4h) — controller.addJavascriptInterface
  2. JS Bridge 封装 (4h) — window.via 注入
  3. 消息路由 (4h) — action 编号 → 对应处理逻辑

📁 文件结构规划

products/default/src/main/ets/
├── managers/
│   ├── ABPRuleParser.ets           # [NEW] ABP 规则解析器
│   ├── ABPAdsBlockManager.ets     # [NEW] 重构广告拦截管理器
│   ├── UserscriptManager.ets     # [NEW] 用户脚本管理器
│   ├── ReadabilityExtractor.ets   # [NEW] 阅读模式正文提取
│   └── JSBridge.ets               # [NEW] JS Bridge 封装
├── models/
│   ├── ABPRule.ets                # [NEW] ABP 规则数据模型
│   ├── Userscript.ets             # [NEW] 脚本模型
│   └── FilterSubscription.ets     # [NEW] 规则订阅模型
└── pages/
    ├── UserscriptPage.ets         # [NEW] 脚本管理页面
    └── ReaderModePage.ets        # [NEW] 阅读模式页面

修改文件:

  • managers/AdBlockManager.ets — 对接 ABP 引擎
  • BrowserPage.ets — 添加阅读模式菜单
  • SettingsPage.ets — 添加脚本管理入口

🧪 测试计划

功能 核心测试点
ABP 解析器 `
元素隐藏 baidu.com##div.ad CSS 注入正确性
Userscript @match glob 匹配,document-start vs document-end 时机
Readability 百度百科/CSDN/知乎正文提取准确率 > 80%
JS Bridge window.via.postMessage → Native 回调链路

🚨 风险与缓解

风险 缓解方案
ABP 规则解析性能 预处理:域名 hash 表 + 规则分类索引,O(1) 拦截查询
Readability 移植复杂度 使用 Mozilla 官方 Readability.js,通过 NAPI 或 JS 引擎执行
Userscript 安全 沙箱执行,不允许 window.eval 超权限调用
订阅更新频率 默认每天 1 次,支持手动刷新,失败 3 次自动禁用

🔗 相关文档


本路线图将根据实际情况进行调整和更新。