chrome · 2021年10月22日 0

chrome extension 踩坑记录

1、插件开发

开发插件可以参考 官方文档 按照官方文档开发即可

2、调试插件

chrome打开 chrome://extensions/ 地址 开启 开发者模式

开启后会显示出三个选项 而且会显示出插件的id,这个id就是插件的唯一id

3、打包(升级)插件

加载以解压的扩展程序 该按钮可以直接加载通过zip解压的crx插件,该方法对任意的crx解压后的插件都有效

打包扩展程序 该按钮可以把本地已经开发好的插件打包成一个crx插件包,可以用于分发到插件市场给全网使用

扩展程序根目录就是本地的插件源码目录

私钥文件 如果是新的插件该选项不填即可

点击打包后 会自动生成两个文件 (如果已经选择了私钥的话只生成crx文件)

一个是crx的压缩包(最终分发出去的插件包)

一个是对应的pem 私钥文件(对应插件的唯一key),该私钥文件是对应插件的密钥 用于后续对同一个插件升级使用

4、安装插件

1、市场安装 插件按照官方文档分发即可

2、静默安装

静默安装分为两种情况,

一种是插件分发到插件市场 直接通过chrome 政策 策略 即可安装 参考文档

还有一种是不发布直接强制安装,由于chrome的安全策略,不允许安装任何插件市场外的三方crx插件,想要安装私有crx只有通过企业版的chrome进行管理才允许安装私有插件

但是经过不断测试,发现一种不需要企业管理,强制安装私有crx插件的方法

1、获取crx的appid

打包后的插件会生成一个密钥,通过该密钥可以计算出appid计算方法如下

在git-bash中输入如下命令

生成一个新的私钥
openssl genrsa 2048 | openssl pkcs8 -topk8 -nocrypt -out key.pem

私钥生成公钥:

openssl rsa -in key.pem -pubout -outform DER | openssl base64 -A

私钥生成插件 appid:

openssl rsa -in key.pem -pubout -outform DER | shasum -a 256 | head -c32 | tr 0-9a-f a-p

2、通过注册表自动安装插件

参考文档 通过该方法可以让浏览器自动安装上插件,但是插件是禁用状态

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Google\Chrome\Extensions\jcboicmadhcofclkdhcgnlpfkehljdja]
"path"="c:\\test\\getting-started.crx"
"version"="1.0"

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Google\Chrome\Extensions\jcboicmadhcofclkdhcgnlpfkehljdja]
"path"="c:\\test\\getting-started.crx"
"version"="1.0"



重启浏览器后可以在插件列表中看到已经被禁用的插件 如下图

如果添加了上面注册表没有生效的话 则该插件被用户手动卸载过

可以通过修改 C:\Users\<USER>\AppData\Local\Google\Chrome\User Data\Default\Preferences 文件

该文件是一个压缩json格式,编辑后需要保持json是压缩的,删除 extensions.external_uninstalls 字段下对应的appid 重启浏览器即可安装成功

通过检查注册表项 [HKEY_CURRENT_USER\Software\Google\Chrome\PreferenceMACs\Default\extensions.settings\<appid>] 来检查插件是否安装成功

当chrome自动安装好了以后 写入如下注册表项可以强制启用插件,并且自动激活了chrome企业管理模式

[HKEY_LOCAL_MACHINE\Software\Policies\Google\Chrome\ExtensionInstallAllowlist]
"1"="jcboicmadhcofclkdhcgnlpfkehljdja"

[HKEY_LOCAL_MACHINE\Software\Policies\Google\Chrome\ExtensionInstallForcelist]
"1"="jcboicmadhcofclkdhcgnlpfkehljdja"

写入后重启浏览器查看插件页面如下显示,该插件不可关闭,不可卸载

经过测试 在chrome运行过程中,可以直接一次性写入所有注册表项,重启浏览器即可强制安装crx插件,

如果当前chrome没有启动,则需要按照上文顺序安装

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Google\Chrome\Extensions\jcboicmadhcofclkdhcgnlpfkehljdja]
"path"="c:\\test\\getting-started.crx"
"version"="1.0"

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Google\Chrome\Extensions\jcboicmadhcofclkdhcgnlpfkehljdja]
"path"="c:\\test\\getting-started.crx"
"version"="1.0"

[HKEY_LOCAL_MACHINE\Software\Policies\Google\Chrome\ExtensionInstallAllowlist]
"1"="jcboicmadhcofclkdhcgnlpfkehljdja"

[HKEY_LOCAL_MACHINE\Software\Policies\Google\Chrome\ExtensionInstallForcelist]
"1"="jcboicmadhcofclkdhcgnlpfkehljdja"