【问题标题】:How do I directly modify a Google Chrome Extension File? (.CRX)如何直接修改 Google Chrome 扩展文件? (.CRX)
【发布时间】:2010-02-12 07:00:57
【问题描述】:

我不确定这些扩展是用哪种语言编写的,我认为它们是用 Html、Javascript 或 JSON 编写的。据我所知,它们被“压缩”在 .CRX 文件中。

是否可以直接修改Chrome扩展的html、js、json(或者他们使用的任何语言)?

【问题讨论】:

  • 我浪费了很多时间试图弄清楚这一点,我尝试了这里列出的许多方法。如果您使用的是 Mac 并且无法解压缩,请下载并尝试 Keka。它是基于 7-Zip 的免费 Mac 实用程序。无需重命名 CRX 文件。打开应用程序,然后将您的 CRX 文件放在上面。它会将内容提取到一个文件夹中。 keka.io

标签: google-chrome


【解决方案1】:

已安装的 Chrome 扩展目录如下:

  1. 复制您要修改的扩展的文件夹。 (根据分机ID命名,要查找分机ID,请转到chrome://extensions/)。复制后,您必须删除 _metadata 文件夹。

  2. chrome://extensions开发者模式中选择Load unpacked extension... 并选择您复制的扩展文件夹,如果它包含一个子文件夹,则命名为版本,选择这个版本文件夹,里面有manifest文件,这个文件是Chrome必须的。

  3. 进行更改,然后选择重新加载并刷新扩展程序的页面以查看更改。


Chrome 扩展目录

苹果机:

/Users/username/Library/Application Support/Google/Chrome/Default/Extensions

Windows 7:

C:\Users\username\AppData\Local\Google\Chrome\User Data\Default\Extensions

Windows XP:

C:\Documents and Settings\YourUserName\Local Settings\Application Data\Google\Chrome\User Data\Default

Ubuntu 14.04:

~/.config/google-chrome/Default/Extensions/

【讨论】:

  • 仅供参考,至少在 Windows 上,扩展位置路径中的 \Default 目录指向安装扩展的配置文件。如果您在 Chrome 中使用多个配置文件,\Default 是默认配置文件,\Profile1 是创建的第一个附加配置文件。
  • 查看这个 chrome 扩展以快速访问扩展的源代码:chrome.google.com/webstore/detail/extension-source-locator/…
  • @Shaihi 我猜这是你的扩展。它有一些问题——最重要的是它劫持了新标签——而且,它返回null作为用户名,所以复制的路径不起作用——我在 OS X 上——虽然很酷,它只是需要一点工作。哦,还有,Extensions 和 extension id 之间的斜线不见了。
  • @JDavis - 感谢您的意见!这是我的...修复了斜线 - 尚未测试 Mac :s 至于劫持新标签 - 我认为它会节省一些点击次数,但一旦我得到一些输入,我会考虑改变它。
  • 我们将扩展文件夹复制到哪里?我将它复制到另一个位置,当我尝试“加载解压缩的扩展...”时,我得到“加载扩展错误”...“清单文件丢失或无法读取”。
【解决方案2】:

我在谷歌上搜索了一下,发现了这个:

Google Chrome 扩展文件类型是 CRX。它本质上是一种压缩格式。因此,如果您想查看扩展、脚本和代码背后的内容,只需将文件类型从“CRX”更改为“ZIP”即可。

解压缩文件,您将获得所需的所有信息。通过这种方式,您可以看到胆量,学习如何自己编写扩展程序,或根据自己的需要对其进行修改。

然后您可以使用 Chrome 的内部工具将其打包备份,该工具会自动将文件创建回 CRX。只需点击一下即可安装。

【讨论】:

  • crx 文件在压缩内容之前有一个额外的标题developer.chrome.com/extensions/crx.html
  • 解压后文件变成了something.zip.cpgz?
  • 将扩展名从 crx 重命名为 zip 并单击它不起作用。 unzip 命令甚至可以在 crx 扩展上工作。
  • 在 MacOS 中,无法通过将文件类型从“CRX”更改为“ZIP”来提取 CRX,因为当我尝试提取该 zip 文件时,它会生成另一个文件 FileName.zip.cpgz跨度>
  • 对于这么晚来的人:@iRonin 说得对。但是您必须打开终端并从命令行执行:unzip /path/to/extension.crx
【解决方案3】:

已签名的 CRX 文件的标题会导致大多数/所有解压缩程序出错。这不是最简单的方法,但这里是如何从 bash 命令行执行此操作。

基本思路是找到原始未签名 zip 文件的开始位置,然后将 CRX 文件复制到一个 zip 文件中,但排除 CRX 标头。

  1. hexdump -C the_extension.crx | more
  2. 在输出中查找 zip 文件的开头,即 ASCII 字节“PK”。在我尝试的示例中,PK 位于偏移量 0x132。 (通过阅读 CRX 规范,我认为由于签名长度不同,这个数字会因文件而异。)这个数字是我们将在下一步中使用的。
  3. dd if=the_extension.crx of=the_extension.zip bs=1 skip=0x132(对于跳过参数,替换您在上一步中找到的偏移量。)
  4. 现在解压缩您刚刚创建的 .zip。
  5. 修改解压缩目录中的文件,然后将未签名/解压缩的扩展程序安装到您的 Chrome 安装中,或者像安装任何其他 Chrome 扩展程序一样重新打包它。

我确信有一种更简洁的方法可以做到这一点。 Bash 专家,请改进我的答案。

【讨论】:

  • 很好的提示!我的 PK 偏移量也是0x132
  • 我实际上可以使用命令行实用程序unzip 解压缩它。它抱怨标头的额外 306 字节,但还是这样做了。
  • unzip 完美运行:warning [YouTubeCenter.crx]: 304 extra bytes at beginning or within zipfile (attempting to process anyway)
  • 如何计算 hexdump 的偏移量?我有以下包含 pk 00000230 63 d5 11 76 bf 9f 50 4b 03 04 14 00 08 08 08 00 |c..v..PK........| 的行
  • 我不知道我是否有资格成为“Bash 专家”,但这对我有用:webext="Downloads/Extension_v0.1.crx" dd if="$webext" of="${webext%.crx}.zip" bs=1 skip=$(hexdump "$webext" | awk '/50 4b/{a=$1; for(i=2;i<=NF;i++){if($i=="50" && $(i+1)=="4b"){print "0x"substr(a,0,6)i-2;exit}}}')
【解决方案4】:

请注意,某些 zip 程序无法解压缩像 sathish 所述的 CRX - 如果是这种情况,请尝试使用 7-Zip - http://www.7-zip.org/

【讨论】:

  • 哇!至少在 vista 上,你甚至不必更改文件扩展名,7-zip 就在那个坏男孩身上!
  • 不,肯定不会。我将 .crx 重命名为 .zip 并且 7-ZIP 给我一个错误,它无法打开 ZIP。
【解决方案5】:

我已阅读其他答案,并发现注意其他一些事项很重要:

1.) 对于 Mac 用户:当您单击“加载解压扩展...”时,库文件夹默认处于隐藏状态,并且(即使在 Mac 上切换了“显示隐藏文件”选项)它可能不会显示在Chrome 的查找器窗口。

2.) 包含扩展的子文件夹是一个以扩展 ID 命名的随机字母数字字符串,如果 Developer flag 设置为 true,则可以在 Chrome 的扩展页面上找到该 ID。 (扩展页面右上角的复选框)

【讨论】:

  • 那么#1 的解决方案是什么?我已经显示了隐藏文件夹,但就像你说的那样,在尝试选择扩展目录的位置时,该目录不可见。
  • @o_O - 这已经很久了,但是......你去吧:macworld.com/article/2057221/…
【解决方案6】:

(已经说过)我在制作一些 Chrome 主题时发现了这一点(现在已经不复存在了...... :-P)

Chrome 主题、扩展等只是压缩文件。获取7-zipWinRar 以解压缩它。每个扩展/主题都有一个 manifest.json 文件。在记事本中打开 manifest.json 文件。然后,如果您知道编码,请修改代码。还会有一些其他的文件。如果您查看清单文件,您可能会弄清楚它们的用途。然后,你可以改变一切......

【讨论】:

    【解决方案7】:

    .CRX 文件类似于 .ZIP 文件,只需更改扩展名并右键单击 > 提取文件即可。

    提取文件后 --> 修改它们并添加到 zip 并将扩展名更改回 .crx。

    其他方式 --> 打开 Chrome --> 设置 --> 扩展 --> 启用开发者选项 --> 加载解压扩展(修改后的解压文件夹),然后点击打包扩展。

    Source

    【讨论】:

      【解决方案8】:

      现在 Chrome 是多用户的,所以 Extensions 应该嵌套在 OS 用户配置文件下,然后是 Chrome 用户配置文件,我的第一个 Chrome 用户被称为 Profile 1,我的 Extensions 路径是 C:\Users\ username @ 987654326@Profile 1\Extensions\.

      找到你的导航到chrome://version/(我用about:是因为懒惰)。

      注意Profile Path 并添加\Extensions\ 即可。

      希望这会使有关此问题的信息更新得更多。

      【讨论】:

        【解决方案9】:

        可以修改 .CRX 扩展名的代码,因为它是一个简单的 .zip 存档。您可以下载扩展,提取它的源代码,修改它(测试和调试它在您身边),然后打包回 .CRX 文件。

        我用谷歌搜索了这个工具来简单地下载 .CRX 扩展并提取源代码,它对我有用:http://crxextractor.com

        它所做的一切都是解析 .CRX 文件格式并提取包含源代码的实际 .zip。

        【讨论】:

          【解决方案10】:

          如果您已安装 Chrome 的便携式版本,或者将其安装在自定义目录中 - 上述答案中引用的目录中将无法使用扩展程序。

          尝试右键单击 Chrome 的快捷方式并检查“目标”目录。从那里导航到上面的一个目录,您应该能够看到User Data 文件夹,然后可以使用上面提到的答案

          【讨论】:

            猜你喜欢
            • 2015-09-28
            • 2019-11-17
            • 1970-01-01
            • 2013-05-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-05-24
            相关资源
            最近更新 更多