公开页抓取改为 Chrome 136 自洽身份 + 每节点 SQLite 养罐,Trafilatura 走 curl_cffi;MCP/README/接手说明与 09-02 现网复测对齐,避免消费方继续抄过期的站点三分表。 Co-authored-by: Cursor <cursoragent@cursor.com>
18 KiB
| type | status | created | updated | step |
|---|---|---|---|---|
| runbook | active | 2026-09-01 | 2026-09-02 | P3 / plan-20260901-02 |
onesvm-browser-server MCP 使用文档(消费者智能体接入指南)
面向消费方智能体(Vlepontas / EAI / 其它注册主体)的开发者。读完本文即可独立完成接入与正确使用。 版本:v1 现网版(2026-09-02)。§4 能力数据以 mgr1 现网复测为准(2026-09-02);2026-09-01 本机 bench 仅作对照。 现网入口已开通(mgr1),见 §1.1。
1. 接入信息
1.1 Endpoint
| 项 | 值 |
|---|---|
| 协议 | MCP over Streamable HTTP(POST /mcp,2026 无状态规范;无 SSE 旧路径) |
| 现网入口(mgr1) | http://192.168.1.51:8640/mcp |
| overlay(Vlepontas casa-net) | http://browser-server:8640/mcp |
| HTTP 兜底 | POST http://192.168.1.51:8640/v1/search、POST http://192.168.1.51:8640/v1/read(同一内核、同一错误码) |
| 经反代 | {网关地址}/bs-api/mcp(urlapi 前缀 strip 后转发;未挂时用上面直连) |
1.2 认证
- 头:
X-Service-Token: bs_<你的key>。🔴 禁止把 key 放进Authorization: Bearer(下游按 JWT 解析会 401)。 - key 形态:
bs_前缀 + 随机串。明文只在签发时回传一次,服务端只存 hash,丢失只能吊销重签。
1.3 key 获取流程
你的主体(如 vlepontas)→ 向管理员注册(主体名 + 联系人 + 用途说明)
→ 管理员 CLI 签发 key(绑定 scopes/限额)→ 明文回传一次 → 你存入己方密钥管理
吊销:找管理员,即时生效(服务端缓存收敛 ≤10s)
1.4 Scopes(能力分级)
| scope | 默认 | 能做什么 |
|---|---|---|
search |
✅ 默认 | 关键词搜索发现(search 工具) |
read |
✅ 默认 | 单 URL 精读(read 工具,fit markdown) |
extract |
❌ 特权申请 | JSON Schema 结构化抽取(read 的 extract 参数) |
browse |
❌ 特权申请 | 多步交互(协议预留,首版未实现) |
screenshot / rawHtml |
❌ 特权申请 | 截图 / 原始 HTML 返回(token 与内存开销大) |
每把 key 另有:rpm 速率、日/月配额、并发会话数上限(由管理员按主体需求设定)。
2. 工具清单与调用
2.1 search — 搜索发现
| 参数 | 类型 | 默认 | 说明 |
|---|---|---|---|
query |
string | 必填 | 关键词 |
region |
domestic | overseas |
必填,无默认 | 国内直连 / 国外代理(能力差异见 §4.1,请按你的数据需求显式选择) |
max_results |
int ≤20 | 5 | 返回条数 |
time_range |
day/week/month/year |
不限 | 时间过滤(引擎支持时生效) |
lang |
string | 自动 | 如 zh-CN / en-US |
调用示例 1(国内政策搜索,JSON-RPC):
{
"jsonrpc": "2.0", "id": 1, "method": "tools/call",
"params": {
"name": "search",
"arguments": {
"query": "跨境电商 出口退税 政策 2026",
"region": "domestic",
"max_results": 5,
"time_range": "year",
"lang": "zh-CN"
}
}
}
调用示例 2(国外调研):
{
"jsonrpc": "2.0", "id": 2, "method": "tools/call",
"params": {
"name": "search",
"arguments": {
"query": "bluetooth earbuds market share 2026",
"region": "overseas",
"max_results": 10,
"lang": "en-US"
}
}
}
典型响应(示例性质:由 2026-09-02 现网样本改写为统一信封格式,字段真实、数值为示例):
{
"ok": true,
"kind": "search",
"request_id": "01K3…ulid",
"took_ms": 4737,
"query": "跨境电商 出口退税 2026",
"answer": null,
"results": [
{
"id": "r1",
"title": "财政部 海关总署 税务总局关于跨境电子商务出口退运商品税收优惠...",
"url": "http://beijing.chinatax.gov.cn/bjswj/c104602/202602/ef4be608f0644f2785fee688ba66ea76.shtml",
"content": "一、对自2026年1月1日至2027年12月31日期间在跨境电子商务海关监管代码(1210、9610、9710、9810)项下申报出口…",
"score": 0.92,
"engine": "baidu",
"published_at": null
},
{
"id": "r2",
"title": "2026出口退(免)税新规来了,跨境电商/外贸老板必看",
"url": "https://news.sohu.com/a/984080199_120347161",
"content": "从2026年1月30日后这些糟心事都解决了!.跨境销…",
"score": 0.71,
"engine": "bing"
}
],
"usage": { "credits": 1, "engine": "searxng-cn", "tokens_estimate": 350 },
"provenance": { "adapter": "searxng-cn", "proxy_exit": "none", "cached": false, "retrieved_at": "2026-09-02T16:40:00+08:00" },
"error": null
}
字段纪律:results 为空时是 [] 而非 null;content 为 ≤800 字符的 query 相关片段(非全文,全文请用 read);answer 恒为 null(本服务不做 LLM 答案合成)。
服务端会丢掉明显无引用价值的壳页(Amazon 首页/账号/影音导航、无 snippet 的门户根路径),再裁 max_results。词典站 / 百科泛匹配尚未全部滤掉,请在消费侧再筛。
2.2 read — 单页精读
| 参数 | 类型 | 默认 | 说明 |
|---|---|---|---|
url |
string | 必填 | 目标页 URL(仅 http/https,80/443) |
formats |
string[] | ["markdown"] |
可选加 links / images;html / screenshot 为特权 scope |
max_chars |
int | 20000 | 正文截断;截断时响应 truncated=true |
extract |
object | 无 | 特权:{schema: {...}, prompt?: "…"},JSON Schema 结构化抽取 |
region |
domestic | overseas |
按 URL 路由 | 可选;不填时由网关按域名策略选出口 |
调用示例 1(政策页精读):
{
"jsonrpc": "2.0", "id": 3, "method": "tools/call",
"params": {
"name": "read",
"arguments": { "url": "https://chinawto.mofcom.gov.cn/article/jsbl/dtxx/202603/20260303621741.shtml" }
}
}
调用示例 2(带结构化抽取,特权):
{
"jsonrpc": "2.0", "id": 4, "method": "tools/call",
"params": {
"name": "read",
"arguments": {
"url": "https://example-shop.com/products/item-1",
"formats": ["markdown"],
"extract": { "schema": { "type": "object", "properties": { "price": {"type":"string"}, "title": {"type":"string"} } } }
}
}
}
典型响应(2026-09-02 现网:商务部 FDA 扣留页,trafilatura + chrome136 指纹,211ms / 470 字):
{
"ok": true,
"kind": "read",
"request_id": "01K3…ulid",
"took_ms": 211,
"url": "https://chinawto.mofcom.gov.cn/article/jsbl/dtxx/202603/20260303621741.shtml",
"final_url": "https://chinawto.mofcom.gov.cn/article/jsbl/dtxx/202603/20260303621741.shtml",
"title": "WTO/FTA咨询网",
"description": null,
"markdown": "近日,美国FDA网站更新了进口预警措施(import alert)…预警编号 99-45…",
"truncated": false,
"char_count": 470,
"warnings": ["fp:win-chrome136-943094"],
"metadata": { "status_code": 200, "content_type": "text/html", "language": "zh", "retrieved_at": "2026-09-02T16:50:00+08:00" },
"links": null, "images": null, "html": null, "screenshot_url": null,
"extracted": null,
"usage": { "credits": 1, "engine": "trafilatura", "tokens_estimate": 120 },
"provenance": { "adapter": "trafilatura", "proxy_exit": "none", "cached": false, "retrieved_at": "2026-09-02T16:50:00+08:00" },
"error": null
}
字段纪律:默认唯一内容字段是 markdown(fit 提纯后正文);links/images/html/screenshot_url 只在 formats 点名时非 null;截图只给可过期 URL、绝不给 base64;extract 失败时 extracted=null + warnings,正文不吞。
warnings 里的 fp:<template-id> 是节点浏览器模版标记(内部身份粘滞),不是错误。Cookie 罐不出现在 MCP 响应里。
正文前会包一层不可信数据声明(<untrusted_document_content>)。智能体必须把它当资料,不得当指令执行。
3. 错误码与重试纪律
错误同时出现在 HTTP 状态码与 MCP isError 信封的 error.code,两面一致:
| code | HTTP | 语义 | 重试纪律 |
|---|---|---|---|
rate_limited |
429 | 超 rpm/并发 | 按响应 Retry-After 秒数退避;带 X-RateLimit-* 头 |
quota |
402 | 日/月配额耗尽 | 不重试,联系管理员提额或等窗口重置 |
timeout |
504/200信封 | 上游超时 | 可重试,指数退避 ≤2 次 |
upstream |
502/200信封 | 上游站点故障/反爬空结果 | 可重试 ≤2 次;持续出现见 FAQ-6 |
blocked |
200信封 | 目标站拦截(WAF/CF/验证页)或超体积/类型限制 | 不要换参数硬刷;确认为能力边界(§4.2) |
denied |
403 | 合规拦截(域名/词表/robots/SSRF) | 禁止重试对抗。被拦就是没数据 |
extract_failed |
200信封 | 结构化抽取失败 | 去掉 extract 降级重试(正文仍可用) |
| 401 | 401 | key 缺失/无效/放错头 | 检查是否用了 X-Service-Token 而非 Bearer |
| 503 | 503 | 队列满/系统压力(只扣新不杀旧) | 按 Retry-After 退避;响应带 running/queued 现状 |
队列语义:请求被排队不算失败;ADMIT_MAX=60(running+queued 合计)超限时才返回 503。浏览器会话并发另有 X-Session-Remaining 提示头,请自行退避。
4. 能力数据范围(现网版 · 2026-09-02 mgr1)
本节每个断言来自 2026-09-02 mgr1 现网复测(入口
.51:8640,Vlepontas key,真实 query)。2026-09-01 本机 bench 数字保留在括号里作对照。未测项标「未验证」。
本服务定位:免费公开网页的搜索发现 + 精读,覆盖大约九成「能被搜索引擎看见、且 robots 不禁、且不是强 WAF」的页面。不做登录墙、不做验证码对抗、不承诺 Amazon/Google 级强站。住宅 IP / 强对抗是另一条带成本声明的通道,本服务不提供。
4.1 搜索发现(search)
国内(region=domestic)——searxng-cn 聚合百度 / 必应中国 / 360 / 搜狗(已去掉 wikipedia,避免百科噪声占位)。
| 引擎 | 现网表现 | 含义 |
|---|---|---|
| 必应中国 | 稳定出结果 | 主力 |
| 360 | 稳定出结果 | 主力 |
| 百度 | 单发好;短时间猛打会 CAPTCHA | 常规节奏可用 |
| 搜狗 | 连续调用易 CAPTCHA | 仅低速补充 |
现网样本(2026-09-02):
| query | 耗时 | 条数 | 能用的 |
|---|---|---|---|
跨境电商 出口退税 2026 |
4.7s | 6 | 国税/财政部退运免税公告、海外仓「离境即退税」、12366;雨果/社区首页是噪声 |
背背佳 矫正 市场 供应链 品牌 |
1.6s | 8 | 百科 snippet(可孚 / 杜国楹)、官网、搜狐测评;1688 批发占一半 |
膳食补充剂 跨境 监管 市场 2026 |
9.9s | 8 | 商务部 FDA 扣留、东财/中华网抖音治理、海关办法;百科「膳食」与指南 PDF 是偏题 |
→ 常规政策/监管词能出一手链。供应链词会被批发站淹没。突发猛打时结果变少(上游反爬,不是故障)。
国外(region=overseas)——当前仅 Bing 可用。Google / DuckDuckGo / Brave / Startpage / Qwant 在现有数据中心代理出口下全部 CAPTCHA/429。禁止假定多源聚合。
现网样本:
| query | 耗时 | 能用的 | 噪声 |
|---|---|---|---|
bluetooth earbuds market share 2026 |
3.4s | Mordor / TBRC($12.22B→$13.4B(2026)→$19.21B)/ Coherent($13.70B, CAGR 9.8%)/ GMI | bluetooth.com、Wiki、Windows 配对说明 |
posture corrector |
1.0–5.4s | Amazon 商品 B0GJTTXSRQ、测评站 |
Cleveland Clinic / MedlinePlus / Webster「posture」词典 |
dietary supplement |
4.9s | 几乎全是词典 / DGA | 换词再搜 |
nutraceuticals market 2026 |
1.7s | Grand View 全球 2026 $683.8B;美国 2026 $189B → 2035 $282B | Wiki / 剑桥 / 爱词霸 |
→ 海外搜索质量取决于你怎么写 query。泛词会被 Bing 吸到词典;带 market / 品类专名 / 年份 才出咨询数字。snippet 里的数字通常够用,咨询站正文常被 Cloudflare 挡住(见 §4.2)。
4.2 URL 直取(read)
服务自动走「Trafilatura(curl_cffi + Chrome 136 指纹 + 节点 Cookie 罐)→ 空抽再升 Lightpanda CDP」。你不用选通道。
| 分类 | 现网结论 | 2026-09-02 样本 |
|---|---|---|
| ✅ 稳取 | 中等政府站、财经转载、部分 Wiki(升 CDP)、部分 Amazon 商品详情 | 商务部 WTO 网 211ms / 470 字;东财 205ms / 290 字;Amazon B0GJTTXSRQ 2.5s / 2500 字;Wiki Earbuds 经 Lightpanda 成功 |
| ⚠️ 抽空 | JS 壳页:HTTP 200 但正文几乎没有 | 可孚官网 bbk.cofoe.com.cn 只抽出「人气产品/产品展示」(13 字) |
❌ denied(robots) |
本仓遵守 robots.txt,请求不出站 |
百度百科、搜狐正文、百家号 → rule_id=robots_disallow |
❌ blocked(WAF/CF) |
强站仍过不了 | BBC、Mordor、companieshistory(vendor=cloudflare);部分 gov.cn 会 502 空抽 |
| ❌ 登录墙 / 验证码 | 不做对抗 | Reddit / X / 知乎 / 微博 / Medium 维持原结论 |
相对 2026-09-01 本机矩阵的变化(请按现网改规划):
- Amazon 商品详情不再是「一律打不过」:至少一款公开 listing 已用 Trafilatura 抽出规格表。Amazon 搜索壳 / 账号页仍被 junk 过滤;Review / WAF 挑战页仍可能
blocked。亚马逊本站数据不是本服务承诺范围——Vlepontas 已有 DaaS 等通道。 - 百度百科现网是 robots 拒绝,不是滑块。search snippet 能看,
read不要点。 - BBC / 咨询付费墙(Mordor 等)现网是 Cloudflare,不要当稳取。
Cookie / 指纹对消费者不可见:每生产节点 8 套 Chrome 136 模版,一等 Cookie 养在本节点 SQLite;403/验证页整域丢罐。不要指望靠换 key 换脸。
4.3 性能档位
| 指标 | 2026-09-02 现网 | 2026-09-01 bench 对照 |
|---|---|---|
| 国内搜索 | 1.6–9.9s(看上游引擎) | p50 0.63s / p95 0.79s |
| 国外搜索 | 1.0–5.4s(Bing + 代理) | p50 4.7s / p95 4.9s |
| 正文读取(HTTP) | 50–250ms 常见;Amazon 约 2.5s | p50 0.06s / p95 0.12s |
| JS / CDP 通道 | Wiki 升 Lightpanda 约数秒 | 轻渲染约 1–2s |
| 队列深度 | 60(running+queued;超时硬顶 120s) | 同左 |
现网搜索比 bench 慢,是真实引擎 + 代理,不是网关排队。请按 国内 ≤12s、国外 ≤15s 做客户端超时,不要抄 bench 的 1s。
4.4 体积 / 类型 / 格式限制
- 下载体积上限
max_download_bytes(部署值以管理员通知为准);Content-Type 白名单:html / xml / json / pdf / text。 - 默认只产 fit markdown;
rawHtml/ 截图为特权 scope。 - 单页正文默认截断 20000 字符(
max_chars可调,截断必显式truncated=true)。
4.5 给智能体的用法纪律(现网总结)
- 先 search 再 read。search 的
content不是全文。 - 国内政策/监管优先
region=domestic;海外市场规模用带年份的专名,不要用单词(dietary/posture)。 read收到denied+robots_disallow:用 search snippet,不要换 URL 参数硬刷。read收到blocked+ cloudflare:换下一条结果,不要连打。ok=true但char_count很小:多半是 JS 壳,换有静态正文的源(政府公告、财经转载)。- 不得把
region=overseas用在含境内个人信息的 query 上。
5. 合规使用规则(消费侧必须遵守)
以下规则同时写在 MCP server instructions 中;违反会被 denied 拦截并记入审计:
- 不得将本服务用于任何违反中国法律法规的数据获取。
- 不得用于绕过登录墙 / 支付墙 / 验证码(本服务默认也不具备此能力)。
- 不得进行整站搬迁式 crawl(每 host 有频率上限;60 会话封顶本身也是合规阀)。
- 不得把公开网页中的个人信息汇总成档案再分发;响应中的疑似 PII 默认已被脱敏,不要试图还原。
- 不得把包含境内个人信息的 query 发给
region=overseas(query 会经境外代理出口)。
其它纪律:普通 key 遵守 robots.txt;denied / blocked 的语义是「没数据」,不要重试对抗、不要换出口绕过——反复对抗触发审计告警并可能导致 key 被吊销。
6. FAQ 与排错
Q1:401 Unauthorized?
九成是把 key 塞进了 Authorization: Bearer。改用 X-Service-Token: bs_…。其余是 key 已吊销/过期,找管理员。
Q2:403 denied?
合规拦截命中(域名黑名单 / 词表 / robots / SSRF)。响应里有 rule_id;确认你的请求没踩 §5 红线。现网最常见的是 robots_disallow(百度百科 / 搜狐 / 百家号)。确属误判,带 request_id 找管理员复核规则。
Q3:429 / 503?
429 = 你自己超 rpm,按 Retry-After 退避;503 = 系统队列满(60),同样按 Retry-After。两者都只拒新请求,在途任务不受影响。持续 503 说明该错峰或找管理员扩容。
Q4:402 quota?
日/月配额耗尽,不可重试。找管理员提额。
Q5:read 返回的 markdown 很短或为空?
三种典型:① JS 壳页(官方商城等),HTTP 抽空后会升 CDP,仍可能只有导航字;② 目标站在 §4.2 ❌ 清单;③ ok=true 但质量差——带 request_id 反馈。不要把 13 字的「产品展示」当成功业务数据。
Q6:搜索结果突然变少 / 引擎变少? 上游反爬波动(尤其百度/搜狗在突发后 CAPTCHA)。服务端引擎矩阵在监控;非故障,通常数分钟自恢复。持续异常找管理员看引擎成功率矩阵。
Q7:国外搜索质量不满意? 已知限制:当前仅 Bing(§4.1)。先把 query 写成「品类 + market + 年份」,不要用单词。需要 Google 级多源质量,向管理员提(代理升级或官方 API,涉出境合规评估)。
Q8:能不能爬 Amazon / Reddit / 百科全文?
- Amazon 商品详情:现网有成功样本,不保证每条 listing、不保证 Review。
- Reddit / X / 知乎 / 微博 / Medium:当前不能。
- 百度百科 / 搜狐 / 百家号全文:robots 禁止,search snippet 可用。 这是出口信誉 + 合规,不是服务故障。强对抗 / 住宅 IP 不在本服务范围内。
机制细节权威:docs/design-arch-20260901.md;选型:docs/decision-candidates-20260901.md;仓库说明:仓库根 README.md;接手:docs/dev-handoff-20260902.md。