You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在macOS下伪造chrome.runtime.getPlatformInfo()返回ChromeOS信息?

伪造Chrome扩展的chrome.runtime.getPlatformInfo()返回值

以下两种方案可以优雅地篡改该函数的返回结果,无需批量替换扩展源码:

方法一:利用Chrome DevTools本地覆盖重写函数

这种方法适合临时调试,直接在扩展的运行上下文里修改函数行为:

  • 打开目标扩展的后台调试页:进入chrome://extensions/,开启开发者模式,找到对应扩展,点击「背景页」或「服务工作者」打开DevTools。
  • 启用本地覆盖:切换到DevTools的Sources面板,点击左侧Overrides标签,勾选「Enable local overrides」,选择本地一个空文件夹作为覆盖文件存储目录。
  • 保存扩展脚本到本地覆盖:在Sources面板的Page目录下找到扩展的核心脚本文件,右键选择「Save for overrides」,DevTools会将脚本复制到你指定的本地文件夹。
  • 重写getPlatformInfo函数:打开本地保存的脚本文件,在代码最顶部插入以下代码:
// 劫持getPlatformInfo,强制返回ChromeOS标识
const originalGetPlatformInfo = chrome.runtime.getPlatformInfo;
chrome.runtime.getPlatformInfo = (callback) => {
  originalGetPlatformInfo((info) => {
    info.os = "cros";
    callback(info);
  });
};
  • 生效:回到chrome://extensions/页面,点击扩展的刷新按钮,DevTools会自动加载修改后的本地脚本,扩展调用该函数时会得到os: "cros"的结果。

方法二:通过用户脚本全局注入重写

这种方法无需修改扩展源码,适合长期模拟环境:

  • 安装Tampermonkey或Violentmonkey用户脚本管理器。
  • 创建新脚本,填入以下代码(替换<你的扩展ID>为目标扩展的实际ID,可在chrome://extensions/查看):
// ==UserScript==
// @name         Fake ChromeOS Platform Info
// @match        chrome-extension://<你的扩展ID>/*
// @match        *://*/*
// @run-at       document-start
// @grant        none
// ==/UserScript==

if (chrome?.runtime) {
  const original = chrome.runtime.getPlatformInfo;
  chrome.runtime.getPlatformInfo = function(callback) {
    original.call(this, (info) => {
      info.os = "cros";
      callback(info);
    });
  };
}
  • 保存脚本后,刷新扩展的页面(包括后台、弹出页等),函数返回值会被篡改。

注意事项

  • 方法一的修改仅在DevTools开启覆盖时有效,关闭或清除覆盖后会恢复默认行为。
  • 方法二需要确保@match规则覆盖了扩展的所有运行页面,若扩展使用服务工作者,可能需要额外配置脚本的运行时机。
  • 两种方案都需要开启Chrome的开发者模式。

内容的提问来源于stack exchange,提问作者A. Owl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 06:36:27