通常,您无法创建在 devtools 页面中注入代码的 Chrome 扩展程序。
从现在开始的“Discover DevTools Companion”扩展,简称为 DDC 被允许这样做,因为这个扩展在 Chromium 的源代码中被列入白名单:(不再是这种情况)
// Whitelist "Discover DevTools Companion" extension from Google that
// needs the ability to script DevTools pages. Companion will assist
// online courses and will be needed while the online educational programs
// are in place.
scripting_whitelist_.push_back("angkfkebojeancgemegoedelbnjgcgme");
如果您想在 Chrome 网上应用店中发布具有这些功能的扩展程序,请放弃。
如果您想创建这样的扩展供个人/内部使用,请进一步阅读。
方法 1:将 DDC模拟为列入白名单的扩展程序
创建具有此类权限的扩展程序的最简单方法是使用列入白名单的扩展程序(例如 ChromeVox)的扩展程序 ID 创建扩展程序。这是通过将"key"
其清单文件的密钥复制到您的扩展程序清单来实现的(另请参阅:如何获取密钥?)。这是一个最小的例子:
manifest.json
{
// WARNING: Do NOT load this extension if you use ChromeVox!
// WARNING: Do NOT load this extension if you use ChromeVox!
// WARNING: This is a REALLY BIG HAMMER.
"content_scripts": [{
"js": [ "run_as_devtools.js" ],
"matches": [ "<all_urls>" ]
}],
// This is the key for kgejglhpjiefppelpmljglcjbhoiplfn (ChromeVox)
"key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEGBi/oD7Yl/Y16w3+gee/95/EUpRZ2U6c+8orV5ei+3CRsBsoXI/DPGBauZ3rWQ47aQnfoG00sXigFdJA2NhNK9OgmRA2evnsRRbjYm2BG1twpaLsgQPPus3PyczbDCvhFu8k24wzFyEtxLrfxAGBseBPb9QrCz7B4k2QgxD/CwIDAQAB",
"manifest_version": 2,
"name": "Elevated Devtools extension",
"version": "1.0"
}
run_as_devtools.js
if (location.protocol === 'chrome-devtools:') (function() {
'use strict';
// Whatever you want to do with the devtools.
})();
注意:此方法确实是一种 hack。由于扩展程序与ChromeVox共享相同的 ID ,因此两个扩展程序不能共存。如果 Chrome 决定删除列入白名单的扩展程序,那么您的权限就会消失。
除了通过内容脚本进行过滤之外,您还可以使用include_globs
密钥将内容脚本限制为仅 devtools。
方法二:修改resources.pak
如果可能,我建议使用方法 1。当方法 1 失败时(例如,因为扩展不再被列入白名单),使用下一个方法。
- 从DennisKehrig/patch_devtools(在 Github 上)获取
paktools.py
,unpack.py
和。pack.py
- 找到包含
resources.pak
.
- Run
python2 unpack.py resources.pak
,它创建一个resources
包含所有文件的目录(所有文件名都是数字)。
- 找到包含在开发人员工具上下文中运行的脚本的文件。在那里添加您想要的代码。
- 消除
resources.pak
- 运行
python2 pack.py resources
以创建新resources.pak
文件。
注意:resources.pak
Chrome 更新时可能会被替换,所以我建议创建一个脚本来自动化我描述的算法。那应该不会太难。
如果您有兴趣,可以在(人类语言描述.pak
)中查找文件格式。ui/base/resource/data_pack_literal.cc