返回

Chrome MV3网络请求更改:如何适应声明式网络请求处理

前端

Chrome MV3 网络请求更改:安全、高效的扩展开发新时代

背景

Chrome MV3 网络请求更改标志着 Chrome 浏览器扩展开发的一个重大里程碑。从 MV3 开始,Chrome 将弃用传统的 webRequest API,转向更安全的声明式网络请求处理方式:chrome.declarativeNetRequest。

安全第一

此举的主要驱动力在于提高安全性。传统的 webRequest API 允许扩展直接访问网络请求,而这可能被恶意扩展利用,窃取用户数据或劫持请求。

相反,声明式网络请求处理方式要求扩展开发者声明网络请求处理规则。浏览器会根据这些规则自动处理请求,防止恶意操作。

声明式网络请求处理方式的工作原理

  1. 规则声明: 扩展开发者声明网络请求处理规则,基于 URL、请求头和正文等信息。
  2. 请求匹配: 当收到请求时,浏览器将其与扩展的规则进行匹配。
  3. 规则执行: 如果匹配,浏览器根据规则执行操作,如阻止、修改请求头或正文。
  4. 默认处理: 如果未匹配,浏览器按默认方式处理请求。

适应变化

为适应 MV3,扩展开发者需要进行以下调整:

  • 将 webRequest API 替换为 chrome.declarativeNetRequest API。
  • 掌握 chrome.declarativeNetRequest API 的语法和使用方法。
  • 修改网络请求处理规则,符合声明式处理方式。

代码示例

// 阻止特定域名的所有请求
chrome.declarativeNetRequest.updateSessionRules({
  id: 'block-example.com',
  condition: {
    urlFilter: 'example.com/*',
  },
  action: {
    type: 'block',
  },
});

// 修改特定请求头
chrome.declarativeNetRequest.updateSessionRules({
  id: 'modify-user-agent',
  condition: {
    urlFilter: 'example.com/*',
  },
  action: {
    type: 'modifyHeaders',
    headers: [{
      header: 'User-Agent',
      value: 'Custom User Agent',
    }],
  },
});

结论

Chrome MV3 网络请求更改是一项重大的改进,提高了安全性并为扩展开发者提供了更有效率的处理网络请求的方式。通过拥抱这些变化,我们可以创建更安全、更强大的扩展程序,为 Chrome 用户带来更好的体验。

常见问题解答

  1. chrome.declarativeNetRequest 有什么优势?

    • 提高安全性,防止恶意扩展滥用网络请求。
    • 提高效率,让浏览器自动处理请求,无需扩展介入。
  2. 如何将 webRequest API 迁移到 chrome.declarativeNetRequest?

    • 查阅 Chrome 开发者文档,了解迁移指南和 API 参考。
  3. 如何调试声明式网络请求规则?

    • 使用 Chrome DevTools 的网络面板,启用"Declarative Net Request Rules"选项卡。
  4. 哪些扩展类型受 MV3 更改影响最大?

    • 广告拦截器、隐私保护器和内容脚本等基于网络请求的扩展。
  5. MV3 更改对现有的扩展程序有何影响?

    • 需要在 2023 年 1 月 17 日之前更新现有扩展程序以符合 MV3 更改。