该功能可以修改请求的响应体。
如果使用了此功能,可能会有以下问题:
在 Chrome 上,您会看到“Header Editor”已开始调试此浏览器的提示,这是因为HE使用了chrome.debugger API。如果您不想看到此提示,您可以:
--silent-debugger-extension-api参数。HE 默认使用 UTF-8 来解码传输的内容。如果网站并非 UTF-8 编码,则您需要手动指定编码。
请注意,该编码仅用于解码。修改后的响应固定以 UTF-8 编码。
如果您不知道网页使用何种编码,请打开控制台(按F12),切换到 Network/网络 标签,刷新当前页面,观察 Response Headers/响应头 中的 Content-Type。
在 Chrome 下,您可以选择在何时拦截请求。
Content-Type。在 Firefox 下,固定为响应阶段。
函数共有两个参数:val 参数初始情况下为解码后的文本(可能因有多条规则而变化),detail 参数为自定义函数的 detail 对象。返回修改后的文本或 Uint8Array。
若有多个修改响应体的函数,则后一函数始终接收到的是前一函数的返回值,因此 val 也可能为 Uint8Array。
例如,下面函数,会将网页中的所有“baidu”替换为“Google”
您可以通过 detail 对象获取更多信息:
detail.browser 获取浏览器类型,取值为 chrome 或 firefox。detail.rawResponse 获取原始响应体。在不同浏览器下,detail 对象的格式不同:
| 说明项目 | Chrome | Firefox |
|---|---|---|
| detail 对象格式 | Fetch.requestPaused | 与自定义函数中一致 |
detail.rawResponse |
{ base64Encoded: boolean, body: string } |
Uint8Array |