在 Chrome 扩展开发中,使用'declarativeNetRequest'可以拦截和修改网络请求。你可以通过以下步骤来实现将接口返回值中的'ok'改为'成功':

  1. 在扩展的'manifest.json'文件中,确保声明了'"declarativeNetRequest"'权限,例如:
{
  "manifest_version": 3,
  "name": "My Extension",
  "version": "1.0",
  "permissions": [
    "declarativeNetRequest"
  ],
  ...
}
  1. 在'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"
      }
    ]
  },
  ...
}
  1. 在扩展目录下创建'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":"成功"'。

  1. 在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'功能。

Chrome 扩展开发 MV3: 使用 declarativeNetRequest 修改页面接口返回值

原文地址: https://www.cveoy.top/t/topic/pj5C 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录