Как мы знаем, по умолчанию расширения Chrome не имеют доступа к chrome://
страницам, таким как chrome://extensions
и chrome://settings
. (Конечно, мы можем изменить chrome://flags/#extensions-on-chrome-urls
флаги, однако следующий вопрос основан на том, что мы не меняли флаги по умолчанию).
Недавно мне удалось найти ChromeVox (предлагается chrome.google. com) может хорошо работать на всех страницах, включая chrome://
страниц. Я проверил исходный код этого расширения и обнаружил, что если мы добавим следующую строку в manifest.json
для любого расширения, расширение может хорошо работать на chrome://
страницах.
"key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEGBi/oD7Yl/Y16w3+gee/95/EUpRZ2U6c+8orV5ei+3CRsBsoXI/DPGBauZ3rWQ47aQnfoG00sXigFdJA2NhNK9OgmRA2evnsRRbjYm2BG1twpaLsgQPPus3PyczbDCvhFu8k24wzFyEtxLrfxAGBseBPb9QrCz7B4k2QgxD/CwIDAQAB"
Таким образом, похоже, что в Chrome есть что-то вроде белого списка, позволяющего определенным расширениям нарушать ограничения по умолчанию. Я прав? Есть ли официальное руководство для разъяснения этого поведения?
Приложение:
Ниже приведен пример расширения, который вы найдете с key
, консоль будет выводить test
даже на chrome://extensions
страницах; однако после удаления key
ничего не происходит.
манифест.json:
{
"manifest_version": 2,
"name": "Test",
"version": "1.0",
"content_scripts": [
{
"matches": [
"<all_urls>"
],
"js": [
"content.js"
]
}
],
"key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEGBi/oD7Yl/Y16w3+gee/95/EUpRZ2U6c+8orV5ei+3CRsBsoXI/DPGBauZ3rWQ47aQnfoG00sXigFdJA2NhNK9OgmRA2evnsRRbjYm2BG1twpaLsgQPPus3PyczbDCvhFu8k24wzFyEtxLrfxAGBseBPb9QrCz7B4k2QgxD/CwIDAQAB"
}
контент.js:
console.log('test');