Chrome 扩展开发 MV3: 使用 declarativeNetRequest 修改页面接口返回值
在 Chrome 扩展开发中,使用'declarativeNetRequest'可以拦截和修改网络请求。你可以通过以下步骤来实现将接口返回值中的'ok'改为'成功':
- 在扩展的'manifest.json'文件中,确保声明了'"declarativeNetRequest"'权限,例如:
{
"manifest_version": 3,
"name": "My Extension",
"version": "1.0",
"permissions": [
"declarativeNetRequest"
],
...
}
- 在'manifest.json'文件中定义'declarativeNetRequest'规则,以便拦截对应的接口请求和修改返回值。例如:
{
"manifest_version": 3,
"name": "My Extension",
"version": "1.0",
"permissions": [
"declarativeNetRequest"
],
"declarative_net_request": {
"rule_resources": [
{
"id": "modify_response",
"enabled": true,
"path": "rules.json"
}
]
},
...
}
- 在扩展目录下创建'rules.json'文件,并定义拦截和修改规则。例如:
[
{
"id": "modify_response_rule",
"priority": 1,
"action": {
"type": "modifyResponseBody",
"data": {
"modification": {
"operator": "regex-substitute",
"matchRegex": "('success':)"ok"",
"replaceRegex": "$1'成功'"
}
}
},
"condition": {
"urlFilter": "https://example.com/api",
"resourceTypes": ["xmlhttprequest"]
}
}
]
上述规则中,'urlFilter'可以根据实际情况修改为对应接口的URL地址,'matchRegex'是要匹配的字符串正则表达式,'replaceRegex'是要替换的字符串。在本例中,将匹配到的'"success":"ok"'替换为'"success":"成功"'。
- 在Chrome扩展的background脚本中监听'declarativeNetRequest'事件,以应用规则。例如:
chrome.runtime.onInstalled.addListener(async () => {
const rules = await fetch(chrome.runtime.getURL('rules.json')).then(response => response.json());
chrome.declarativeNetRequest.updateDynamicRules({ removeRuleIds: [], addRules: rules }, () => {
if (chrome.runtime.lastError) {
console.error(chrome.runtime.lastError);
} else {
console.log('Rules applied successfully');
}
});
});
以上步骤完成后,当你访问符合规则的接口并返回'{success: "ok"}'时,Chrome扩展会拦截请求并将返回值修改为'{success: "成功"}'。
请注意,'declarativeNetRequest'在Manifest V3中引入,如果你的扩展是基于Manifest V2开发,你需要将其迁移到Manifest V3才能使用'declarativeNetRequest'功能。
原文地址: https://www.cveoy.top/t/topic/pj5C 著作权归作者所有。请勿转载和采集!