进阶 / Advanced
网络拦截与改写
network route 通过 CDP 的 Fetch 域拦截匹配到的请求——
无需代理,也不需要扩展权限。你可以 mock 一个假响应、改写发出去的请求、
篡改真实响应,或者干脆屏蔽掉某些流量。动词与字段都对齐了 Playwright 的习惯,
上手几乎零成本。
三种模式
一条 network route 规则属于哪种模式,取决于你传了哪些 flag。
三者的介入时机各不相同:
--body / --status / --header / --content-type:直接返回假响应,请求短路,永不发出。
--method / --set-body / --set-header / --rewrite-url:改动发出去的请求,再让真实响应回来。
--edit-status / --edit-header / --replace:请求照常发出,拿回真实响应后再改。
Mock 响应
传入 --body 等 flag,请求会被直接 fulfill——一个假响应立刻返回,
真实网络请求根本不会发出。适合造空列表、造权限态、隔离后端。
# Mock 响应(fulfill —— 请求永不离开浏览器)
$ chrome-use network route "**/api/users" --body '{"users":[]}' --status 200 --content-type application/json
$ chrome-use network route "**/api/me" --body '{"vip":true}' --header X-From=mock
改写发出去的请求
传入 --method、--set-body、--set-header 或 --rewrite-url,
请求会带着你的改动继续发出(continue with overrides),随后真实响应照常回来。
注入测试鉴权头、替换请求体、或把流量导到 staging 都靠它。
# 改写发出去的请求(真实响应仍会返回)
$ chrome-use network route "**/api/save" --method POST --set-header Authorization="Bearer test"
$ chrome-use network route "**/api/save" --set-body '{"x":1}' # 替换请求体
$ chrome-use network route "**/v1/*" --rewrite-url https://staging.example.com/v1/thing
编辑真实响应
传入 --edit-status、--edit-header 或 --replace 'from=>to',
请求会正常发出、真实响应回来后再被你篡改,页面看到的是改过的版本。
适合把接口强制成 503 错误态,或在不改后端的前提下替换响应里的一个字段。
# 编辑真实响应(请求发出、响应回来、再改)
$ chrome-use network route "**/api/me" --edit-status 503 # 覆盖状态码
$ chrome-use network route "**/api/me" --edit-header X-Env=test # 新增/覆盖一个响应头
$ chrome-use network route "**/api/me" --replace 'prod=>staging' # 在真实响应体里做子串替换(可重复)
$ chrome-use network route "**/api/me" --set-json data.user.vip=true # 结构化编辑响应体里的一个 JSON 字段
--set-json <dot.path>=<value> 按点号路径定位到响应体 JSON 里的一个字段,
创建或覆盖它——嵌套路径会自动补全中间的对象。响应体不是合法 JSON 时,
它会自动退化成字符串替换,跟 --replace 一样安全,不会因为解析失败而报错。
--header / --set-header / --edit-header / --replace /
--set-json 都是可重复的;请求/响应头会合并覆盖在原始头之上。
--resource-type xhr,fetch 把响应编辑限定到 API 调用上。
屏蔽与按资源类型限定
用 --abort 直接掐断一条请求。任何规则都可以用
--resource-type 限定作用范围,避免误伤其他流量。
# 彻底屏蔽
$ chrome-use network route "**/analytics" --abort
# 把规则限定到某些资源类型
$ chrome-use network route "**/*.json" --abort --resource-type xhr,fetch
观察与录制流量
改写之前,先看清楚都有哪些请求在飞。network requests 列出已捕获的流量,
--clear 从头开始记;network har 则把整段流量录成标准的 HAR 文件。
$ chrome-use network requests --clear # 清空并重新开始捕获
$ chrome-use network requests # 查看都发出了哪些请求
$ chrome-use network har start # 录制全部流量
# ... 执行你的操作 ...
$ chrome-use network har stop /tmp/trace.har
清理规则
所有路由规则是常驻的,会一直生效直到你显式移除。收工时用
network unroute 一次性丢弃全部规则,避免影响后续会话。
$ chrome-use network unroute # 移除所有路由规则
network unroute,
否则一条 --abort 可能会悄悄影响下一个任务的页面。