onesvm-browser-server/docs/decision-candidates-20260901.md
chii 983259836d chore: init workspace with onesvm-dev-md + casa-commander
docs: 联网搜索服务架构方案全套(plan-final/design-arch/选型决策/整合导览/MCP文档/部署预设/联调手册)
bench: 5 方案 + 代理 + 站点矩阵本机实测工程(无密钥)
部署目标:primary mgr1 先行测试(待批准后执行)
2026-09-01 15:19:52 +08:00

82 lines
7.3 KiB
Markdown
Raw 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.

---
type: design
status: active
created: 2026-09-01
---
# 联网搜索消费方案选型决策记录(任务 5 评定结论)
> 本文回答「当前选择的消费方案有哪些以及原因」。候选池来自用户提供的两张浏览器开源方案附表(存档:`.dsh/artifacts/run-20260901-browser-arch/input-candidate-tables.md`);筛选过程见 `select.md`;实测数据见 `bench/S3b-summary.md` / `S3c-summary.md`(2026-09-01 本机 Docker 实测,darwin arm64);评分卡权重:内存三档 30% / 数据质量 25% / 稳定性成功率 20% / 延迟 15% / 运维 10%。
## 1. 入选方案(5 套,实测评分)
### 国内直连组(不挂代理)
| 方案 | 综合分 | 角色 | 入选原因(实测依据) |
|---|---:|---|---|
| **SearXNG-CN**(`searxng/searxng:2026.8.29-d226b78bc`,配百度/搜狗/360/必应中国) | 71.5 | 国内搜索发现 | 单发质量满分:T1「跨境电商 出口退税 政策 2026」5/5 断言通过、p50 0.63s、政策域名命中准;idle 仅 99MB、burst 170MB。短板:60 并发突发时百度(4/60)/搜狗(0/60)被 CAPTCHA、必应中国 60/60 扛住——由网关排队钳 4–8 并发消化,不构成排除理由 |
| **Trafilatura-HTTP**(自构建 `python:3.12-slim` + `trafilatura==2.2.0`) | **96.8** | 国内/通用正文精读 | 全场最优:T2 政策公告页 5/5、1122 字纯净 Markdown 无导航残渣;60/60 全过、p50 0.058s;idle 33MB / burst 41MB。P0 默认开机。能力边界:gov.cn 联播壳页 favor_precision 弃取(宁可不抽也不给脏数据) |
### 国外代理组(经 vless 代理池,52 节点实测可用)
| 方案 | 综合分 | 角色 | 入选原因(实测依据) |
|---|---:|---|---|
| **Lightpanda**(`lightpanda/browser:0.3.7`,Zig 自研轻量 DOM) | **91.0** | 默认 JS 渲染核 | idle **3.6MB**(全场最轻);JS 对照页 3/3;T5 60 任务 4 槽 28.2s 全过(2.13 jobs/s)。短板:重 Shopify 页冲到 251MB(cgroup 定 320m);过不了 Cloudflare/Amazon WAF(本代理池下) |
| **chrome-headless-shell**(`chromedp/headless-shell:151.0.7922.109`) | 85.5 | 保真渲染单槽 | JS 对照 3/3;Shopify 列表价提取比 Lightpanda 更完整;CONCURRENT=1 下 60 任务 FIFO 零拒绝、74s 排完。短板:重页 394MB(cgroup 400m),因此 L2 档按需启动、L3 档常驻 |
| **SearXNG-Global**(同 SearXNG 镜像第二实例,聚合 Google/Bing/DDG/Brave 等) | 62.0 | 国外搜索位(带质量警示) | 实例本身稳:idle 122MB、burst 181MB、60 并发不倒。但实测 T3 断言 0/5:数据中心 vless IP 下 Google/DDG/Brave/Startpage/Qwant 全 CAPTCHA/429,**只有 Bing 出结果**——擦线入选部署,产品层不承诺多源(用户已定 D2:接受 Bing-only 起步) |
## 2. 预留档(不在 1GB 预算内,等触发条件)
| 方案 | 档位 | 启用条件 |
|---|---|---|
| **Camoufox**(Firefox C++ 改版指纹伪装) | L4 强对抗档(3–4GB + 住宅代理) | 有 Amazon/Medium 级强反爬刚需 + 住宅代理预算;实测确认当前数据中心代理打不过这两家 WAF |
| **有头浏览器全档** | 插拔预留 | Dock Protocol 预留 `render=full+headful` 能力位,默认不装镜像不占预算 |
| **Bouncy**(Rust 极简引擎) | B 类备选 | Lightpanda 出现不可解兼容性问题时再评估(无官方镜像、个人仓库维护风险未验证) |
## 3. 排除清单与理由(筛选轮结论)
| 方案 | 排除理由 |
|---|---|
| playwright-distributed | Redis 硬依赖(违反零 Redis 约束) |
| browser-swarm | 仅限 macOS Apple Silicon,不适配 Swarm 生产 |
| Browserless | 官方建议 4GB 档/2g shm,对 1GB 预算过重;其排队模型已被我们吸收进 scheduler 设计 |
| Jina reader:oss | 自托管镜像捆绑 Chrome+LibreOffice 过重;云端 API 存在 query 出境合规问题 |
| FerrumMCP / firefox-docker-mcp | 生态弱、Firefox 内存高于 Chromium,无独特价值 |
| Browser-Use / Stagehand / mcp-browser-use 类 | 依赖 LLM 驱动交互,Token 成本高、耗时长,属「browse 多步交互」特权意图——协议已预留、默认关闭 |
| open-browser-mcp / mcp-browser-bridge / AI-Browser-MCP | 仅限有头 + 依赖用户本机浏览器/Windows,不符合服务端集群形态 |
| Firecrawl / Crawl4AI 自托管 | 功能与「chrome-headless-shell + 共享模版层 fit markdown」重叠且更重(120–250MB/任务 + Playwright 全家桶);其输出 Schema 设计已被统一信封吸收 |
| steel-cluster / Rusty Browser / K8s 系 | 面向 K8s/大规模集群,组织是 Docker Swarm 且预算 1GB,量级不匹配 |
## 4. 与既有服务的定位关系
- 既有 Vlepontas WSG(`.61:8620` / `.51:8562`,Tavily provider)为境外托管 SaaS 通道;本服务为**自构建替代/升级**——境内闭环、query 不出境、成本仅为代理套餐费。
- 既有 `central-proxy`(.53:7890)为组织级代理设施;本服务 ProxyManager 面向「搜索出口」场景自带订阅解析/合规路由,两者可并存(ProxyManager 订阅源亦可指向 central-proxy 订阅)。
## 5. 可追溯性
入选/排除逐项理由:`.dsh/artifacts/run-20260901-browser-arch/select.md`;实测原始数据:`bench/*/results.json`;评分卡定义:`select.md` §4;验收:三份 review 报告均确认数据无编造。
## 6. 能力边界实测(2026-09-01 站点矩阵探针)
> 背景:D2 已定「国外搜索 Bing-only」。用户追问「智能体直接给 URL 能否取到数据」→ 实测 20 站 × 2 通道(纯 HTTP 提取 trafilatura / 轻渲染 Lightpanda;国外经 vless 代理,国内直连)。原始数据:`.dsh/artifacts/run-20260901-browser-arch/site-matrix.md` + `bench/site-matrix/results.json`。
**总体**:trafilatura 7/20 可提取,Lightpanda 11/20;两通道合并并正确路由后 **约 13/20 可用**。
| 分类 | 站数 | 代表站点 |
|---|---:|---|
| 纯 HTTP 即够 | 7 | Wikipedia / GitHub / MDN / BBC / TechCrunch / LinkedIn 公开公司页 / Shopify 集合页 |
| 必须 JS 渲染 | 4 | HN(HTTP 抽空)/ gov.cn 国令页(precision 弃取)/ 新华英文 / 36氪(HTTP 安全检测) |
| 当前出口打不过 | 9 | Amazon 详情页(WAF)/ Medium(CF)/ Reddit 匿名(403)/ X(登录墙)/ 知乎(403)/ 微博(302 访客墙)/ 百度百科(滑块)/ StackOverflow(CF)/ YouTube(无正文结构) |
**路由纪律**:`cloudflare/waf/captcha` 类拦截不拿 Lightpanda 空转,直接 `blocked`;HTTP 200 但提取为空才升级 JS 通道。
### 以 Vlepontas 为例的场景可行性
| 场景 | 可行性 | 说明 |
|---|---|---|
| 行业资讯/政策跟踪 | ✅ | 国内外资讯站、政策页(gov.cn 走 JS 通道) |
| 技术/竞品公开资料 | ✅ | GitHub、文档站、LinkedIn 公开页、公司官网博客 |
| 独立站(Shopify 系)调研 | ⚠️ 部分 | 商品 URL 常被 302 到集合页:可看系列与价格,不保证落到指定 SKU |
| 亚马逊详情页/Review | ❌ 当前出口 | WAF。**2026-09-01 用户确认:亚马逊本站数据非刚需——Vlepontas 已有其它消费方案(DaaS 等既有通道),本服务不规划 Amazon 方向**(L4 Camoufox 档仅保留为理论预留) |
| 社交舆情(Reddit/X/知乎/微博) | ❌ 当前出口 | 4/4 全灭,不能当实时舆情源 |
| 国外搜索发现 | ⚠️ Bing-only | 数据中心 IP 的客观限制(D2 已接受) |