Chrome插件V3开发(一)

目录

前言

清单文件格式

清单-版本

版本名称

清单键

清单-作者

清单-说明

清单-名称

清单-首页网址

清单-内容脚本

​编辑

清单-图标

清单-input_components

清单-键

保持一致的扩展程序 ID

比较 ID

清单版本

file_handlers

清单-Chrome 最低版本

政策执行

新安装次数

现有安装

清单-oauth2

清单-要求

清单-网络可访问的资源

清单声明

资源的可导航性

清单-默认语言区域

跨源 opener 政策

清单声明

清单-内容安全政策

默认政策

最基本的和自定义的内容安全政策

“扩展程序页面”政策

沙盒页面政策

总结


前言

小编这里直接使用官方翻译资料,在前面我已经带大家入门了。

后面讲解的再好也没有官方手册更能讲解它。


清单文件格式


每个扩展程序的根目录中都必须包含一个manifest.json文件,其中会列出有关该扩展程序的结构和行为的重要信息。本页将介绍扩展程序清单的结构及其可以包含的功能。

示例


清单-版本

到四个以英文句点分隔的整数,用于标识此扩展程序的版本。下面几条规则适用于整数:
整数必须介于0到65,535 之间(含0和 65,535)。
非零整数不能以0开头。例如,032无效,因为它以零开头。.
它们不能都为零。例如,0和 0.0.0.0 是无效的,而 0.1.0.0 是有效的。以下是有效版本的一些示例:
。"version":"1"
。"version":"1.0"
。"version":"2.10.2'
。"version":"3.1.2.4567'
如果已发布的扩展程序的版本字符串比已安装的扩展程序更新,则该扩展程序会自动更新。
比较从最左边的整数开始。然后,如果这些整数相等,则比较右侧的整数,依此类推。例如,1.2.0是比 1.1.9.9999 更新的版本。
缺少的整数等于零。例如,1.1.9.9999 比1.1更新,1.1.9.9999 低于 1.2。

版本名称

除了用于更新的“版本”字段之外,“版本名称”还可设置为描述性的版本字符串,并将用于显示目的(如果存在)。
下面是版本名称的一些示例:
“版本名称”:“1.0测试版’
·版本名称:构建rc2
"版本名称":"3.1.2.4567'

如果不存在 version name,则版本字段也将用于显示,


清单键

以下是所有受支持的清单键的列表。
扩展平台所需的密钥

"manifest version"
        个整数,用于指定扩展程序使用的清单文件格式版本。唯一支持的值是 3。
"name"

个字符串,用于在Chrome应用商店 、安装对话框和用户的 Chrome 扩展程序页面(chrome://extensions)中标识扩展程序。长度上限为75 个字符。

"version"
用于标识扩展程序版本号的字符串。
Chrome 应用商店所需的密钥

"description"
一个字符串,用于描述 Chrome 应用商店和用户扩展程序管理页面上的扩展程序。长度上限为 132个字符。

"icons"
代表扩展程序的一个或多个图标。如需了解最佳做法,

可选键
"action"
定义扩展程序图标在 Google 工具栏中的外观和行为。

"author"
指定用于创建扩展程序的帐号的电子邮件地址。
"background"

"chrome_settings_overrides"
定义所选 Chrome 设置的替换项。如需了解详情,请参阅替换 Chrome 设置

"chrome_url_overrides"
定义默认 Chrome 网页的替换值。

"commands"
定义扩展程序中的键盘快捷键。如需了解详情,

"content_scripts"
指定在用户打开某些网页时要使用的 JavaScript或 CSS 文件。

"content_security policy'
定义对扩展程序可使用的脚本、样式和其他资源的限制。

"cross origin embedder policy"
为 Cross-Origin-Embedder-Policy HTTP 标头指定值,该值用于配置在扩展程序页面中嵌入跨源资源。

"cross_origin_opener_policy"
指定 Cross-Origin-Opener-Policy HTTP 标头的值,可让您确保顶级扩展程序页面不会与跨源文档共享浏览上下文组。

"declarative_net_request"
定义declarativeNetRequest APl 的静态规则,以允许屏蔽和修改网络请求。

"default_locale"
一个字符串,用于定义支持多个语言区域的扩展程序的默认语言。例如“en”和“pt BR”。此键在已本地化的扩展程序中是必需的,不得在未本地化的扩展程序中使用.

"devtools_page"
定义使用 DevTools

"export"
允许从扩展程序导出资源。

"externally_connectable"
指定哪些其他网页和扩展程序可以连接到您的扩展程序。

"homepage_url"
个字符串,用于指定扩展程序首页的网址。如未定义,则主页默认为扩展程序的Chrome应用商店页面。如果您在自己的网站上托管扩展程序,字段会特别有用。

"host_permissions"
列出允许您的扩展程序与之互动的网页,使用网址匹配模式定义。系统会在安装应用时请求这些网站的用户权限。

"import"
允许将资源导入扩展程序。

"incognito"
定义扩展程序在无痕模式下的行为方式。支持的值包括“spanning"、"split"和
"not_allowed"。

"key"
指定用于各种开发用例的扩展程序ID。如需了解详情,请参阅键

"minimum _chrome_version"
定义可安装扩展程序的最低 Chrome 版本。该值必须是现有 Chrome 浏览器版本字符串的子字符串,例如“107"或“107.8.5304.87"。如果用户的 Chrome版本低于最低版本,则会在 Chrome 应用商店中看到“不兼容”警告,并且无法安装您的扩展程序。如果您将此扩展程序添加到现有扩展程序,则 Chrome 版本较低的用户不会收到您的扩展程序的自动更新。这包括处于临时 模式的企业用户

"oauth2"
允许使用 OAuth 2.0 安全 ID。此键的值必须是具有"client_id"和“scopes"属性的对象。如需了解详情,请参阅 OAuth 2.0 

"omnibox"
允许此扩展程序在 Chrome 地址栏中注册关键字。

"optional host permissions"
为您的扩展程序声明可选的主机权限

"optional_permissions"
为您的扩展程序声明可选权限

"options_page"
指定 options.htm 文件的路径,以使扩展程序用作选项页面。

"options_ui"
指定 HTML 文件的路径,该文件允许用户从 Chrome 扩展程序页面更改扩展程序选项。

"permissions"
允许使用特定的扩展程序 API。

"requirements"
列出使用扩展程序所需的技术。

"sandbox"
定义一组无权访问扩展程序 API 或直接访问非沙盒化页面的扩展程序页面。

"short name"
个字符串,其中包含在字符空间有限时要使用的扩展名称的缩写版本。长度上限为12个字符。如果未指定,则会显示“name”键的截断版本。

"side panel"
标识要在 sidePanel 中显示的 HTML文件。

"storage"
为代管式存储区域声朋JSON 架构。如需了解详情,请参阅存储区域的清单。

"tts_engine"
将扩展程序注册为文字转语音引擎。

"update_url"
一个字符串,包含扩展程序的更新页面的网址。请使用此密钥。

"version_name"
个描述扩展程序版本的字符串。例如"1.0 beta"和“build rc2"。如果未指定,则“版本”值会显示在扩展程序管理页面上。

"web_accessible resources"
定义扩展程序中可由网页或其他扩展程序访问的文件。

###可选的 ChromeOs 密钥
======================================

"file_browser_handlers"
提供对 fileBrowserHandler


"file_handlers"
指定让 ChromeOs 扩展程序处理的文件类型。

"file system_provider_capabilities"
允许访问 fileSystemProvider API,便扩展程序创建 ChromeOs 可以使用的文件系统。

"input components"
允许使用Input Method Editor API。






清单-作者

可选的清单键,可接受具有“emai”键的对象(请参阅下面的示例)。这是扩展程序作者的电子邮件地址。将 CRX文件发布到 Chrome 应用商店时,此字符串必须与用于发布扩展程序的帐号的电子邮件地址相匹配。


清单-说明

描述扩展程序的纯文本字符串(无HTML或其他格式;不超过132个字符)。例如:


清单-名称

"name"键(必需)是一个用于标识扩展程序的简短纯文本字符串(最多 75 个字符)。例如:


清单-首页网址

可选的清单键,其中包含用于有效首页网址的字符串。开发者可以选择将扩展程序的首页设为他们个人或公司的网站。如果未定义此参数,则默认首页将会是在扩展程序管理页面(chrome://extensions)上列出的扩展程序 Chrome 应用商店页面。如果您在自己的网站上托管该扩展程序,此字段会特别有用。


清单-内容脚本

'content_scripts"键会指定一个静态加载的JavaScript 或 CSS 文件,以供每次用户打开符合特定网址格式的网页时使用。扩展程序还可以以编程方式注入内容脚本,


清单
这些是"content_scripts"支持的键。只有"matches"键以及"js"或"css"是必需的。


清单-图标

代表扩展程序或主题的一个或多个图标。您应始终提供 128x128的图标;该图标会在安装过程中使用,并供 Chrome 应用商店使用。扩展程序还应提供一个48x48的图标,该图标用于扩展程序管理页面(chrome://extensions)。您还可以指定一个 16x16 的图标作为扩展程序页面的网站图标。
图标通常应采用 PNG格式,因为PNG能够最好地支持透明度。不过,它们可以采用Blink 支持的任何光栅格式,包括 BMP、GIF、ICO和 JPEG。


清单-input_components

个可选的清单键,可让您将 input.ime AP与ChromeOs 搭配使用。这样一来,您的扩展程序就可以处理按键、设置组合以及打开辅助窗口。开发者还必须在该扩展程序的"permissions"数组中声明"input"权限。该键接受对象数组:name、id、language、layouts、input_view和options_page(请参阅下图)。


清单-键

此值会在开发期间加载扩展程序或主题时保留其唯一ID。以下是一些常见使用场景
将服务器配置为仅接受来自 Chrome 扩展程序来源的请求
以便其他扩展程序或网站向您的扩展程序发送消息
让网站可以访问您的扩展程序的web_accessible_resources

保持一致的扩展程序 ID

在开发过程中,保留单个ID 至关重要。

如需保持一致的ID,请按以下步骤操作:
将扩展程序上传到开发者信息中心将扩展程序目录打包到.zip 文件中,然后将其上传到 Chrome 开发者信息中心但不发布该文件。

1.在开发者信息中心内,点击添加新内容
2.点击浏览文件,选择扩展程序的 ZIP 文件,然后上传。
3. 转到 Package 标签页,然后点击 View public key.

打开弹出式窗口后,请按以下步骤操作:

1.复制-----BEGIN PUBLICKEY-----和-----END PUBLIC KEY-----之间的代码。
2.请移除换行符,使其成为单行文本。

将代码添加到"key"字段下的 manifest.json。这样一来,扩展程序便会使用相同的ID。

比较 ID

打开“扩展程序管理”页面(chrome://extensions),确保已启用开发者模式,然后上传未打包的扩展程序目录。将扩展程序管理页面上的扩展程序ID 与开发者信息中心内的项ID 进行比较。二者应该一致。


清单版本

一个整数,用于指定软件包所需的清单文件格式版本。必须提供此键。例如:


file_handlers

"file_handlers" 清单键用于指定 ChromeOs 扩展程序要处理的文件类型。如需处理文件,请使用网络平台的 Launch Handler APl。如需了解特定于扩展程序的信息,请参阅文件处理


清单-Chrome 最低版本

可选的清单键,其中包含用于定义哪些版本的 Chrome 能够安装该扩展程序的字符串。为此字符串设置的值必须是现有 Chrome 浏览器版本字符串的子字符串。使用完整的版本号指定对 Chrome的特定更新,或使用字符串中的第一个数字指定特定的主要版本。

警告:如果您通过 Chrome 应用商店分发扩展程序,请仅使用主要版本号。Chrome 应用商店将用户视为使用任何给定主要版本的第一个版本。如果您指定 124.0.8.1,则只有使用 Chrome 125 及更高版本的用户可以安装您的扩展程序。

政策执行

新安装次数

在版本低于最低版本的 Chrome 中,Chrome 应用商店会在显示“安装”按钮的位置显示“不兼容”消息。使用这些版本的用户将无法安装您的扩展程序。

现有安装

当 minimum_chrome_version高于其当前浏览器版本时,扩展程序的现有用户将不会收到更新。这会以静默方式进行,因此您应该谨慎,并考虑通过各种方式让现有用户知道他们不再接收更新。


清单-oauth2

个可选的清单密钥,让您能够对扩展程序使用OAuth2.0安全ID。此键接受一个包含以下两个必需子属性的对象:"client_id"和"scopes"。在开发使用"oauth2"键的扩展程序时,还可以考虑设置扩展程序的"key"" 以保持一致的扩展程序ID。

清单-要求

扩展程序所需的技术。Chrome应用商店等托管网站可能会使用此列表来阻止用户安装无法在其计算机上使用的扩展程序。未来可能会添加其他要求检查。
"3D"要求表示 GPU 硬件加速,并采用"webgl"或"css3d"作为有效值。"webgl" 要求是指WebGLAPl(https:/www.khronos.orgwebgl)。如需详细了解 Chrome 3D 图形支持,请参阅有关WebGL和 3D 图形的帮助文章。您可以列出您的扩展程序所需的 3D 相关功能,如以下示例所示:

清单-网络可访问的资源

可通过网络访问的资源是指扩展程序内可供网页或其他扩展程序访问的文件。扩展程序通常会使用此功能来显示需要在网页中加载的图片或其他资源,但扩展程序软件包中包含的任何资源均可通过网络访问。
默认情况下,没有可通过 Web 访问的资源,因为恶意网站可以用“指纹”收集用户已安装的扩展程序,或利用已安装的扩展程序中的漏洞(例如 XSS bug(https:/en.wikipedia.org/wiki/Cross-site_scripting))。(https:/len.wikipedia.org/wiki/Device fingerprint)只有从扩展程序的来源加载的网页或脚本才能访问该扩展程序的资源。


清单声明

使用 web_accessible_resources 清单属性声明向哪些来源公开哪些资源。此属性是声明资源访问规则的对象数组。每个对象都会列出一些扩展程序资源,并且必须为至少一个matches或extension_ids 键提供一个值,以指明可以访问这些资源的来源。

数组中的每个对象都包含以下元素:

"resources"
个字符串数组,每个字符串都包含从扩展程序根目录到给定资源的相对路径。资源中可能会使用星号(*)表示通配符匹配。例如,"/images/*"会递归公开扩展程序的 images/ 目录中的所有内容,而“*.png"会公开所有 PNG 文件。


"matches"
个字符串数组,每个字符串都包含一个匹配模式用于指定哪些网站可以访问这组资源。只有来源用于匹配网址。来源包括子网域匹配。如果格式中的路径不是“/*”,Google Chrome 就会发出“匹配模式无效”错误。


"extension ids"
个字符串数组,每个字符串都包含可以访问资源的扩展程序的ID。
每个元素都必须包含一个"resources"元素以及一个"matches"或"extension_ids"元素。此操作会建立一个映射,用于将指定资源公开到与该格式匹配的网页或具有匹配ID的扩展程序。

资源的可导航性

资源可通过网址 chrome-extension://[PACKAGE ID]/[PATH]获取,该网址可通过runtime.getURL()
方法生成。资源是使用适当的 CORS (https:/www.w3.org/TRcors/) 标头提供的,因此可通过 fetch()获取.

从 Web 来源到扩展程序资源的导航将被阻止,除非该资源被列为 Web 可访问。请注意以下极端情况:
当扩展程序使用 webReguest API将公共资源请求重定向到无法通过 Web 访问的资源时,此类请求也会被屏蔽。
来自公共资源的重定向会被阻止,即使无法访问的 Web 资源归重定向扩展程序所有。
除非将"incognito" 字段的值设为"split",否则在无痕模式下,系统会禁止导航。
不需要允许使用内容脚本本身。


清单-默认语言区域

定义支持多个语言区域的扩展程序的默认语言。这是_1ocales 中子目录的名称,该子目录包含此扩展程序的默认语言。例如,以下代码表示英语是默认语言:

本地化扩展程序(具有_locales目录的扩展程序)必须提供此字段,但在没有_locales 目录的扩展程序中不得包含此字段。


跨源 opener 政策

借助 cross_origin_opener_policy清单键,扩展程序可以为针对扩展程序来源的请求指定Cross-Origin-Qpener-Policy 响应标头的值。这包括扩展程序的 ServiceWorker、弹出式窗口、选项页面、向扩展程序资源打开的标签页等。
比键与 cross origin embedder policy起使用时,可让扩展程序选择启用跨域隔离。

清单声明

注意:此密钥是在 Chrome 93 中引入的。

cross_origin_opener_policy清单键包含一个对象,该对象具有一个名为 value 的属性,该属性接受字符串。在从扩展程序的来源提供资源时,Chrome会将此字符串用作Cross-0rigin-0pener-Policy标头的值。例如:


清单-内容安全政策

可选的清单键,包含网络平台内容安全政策,用于指定对扩展程序可以使用的脚本、样式和其他资源的限制。在此清单键中,您可为扩展程序页面和沙盒化扩展程序页面定义单独的可选政策。
“扩展程序页面”政策适用于扩展程序中的网页和工作器上下文。这包括扩展程序弹出式窗口、后台Worker,以及扩展程序所打开的包含 HTML 网页或 iframe 的标签页。沙盒政策适用于清单中指定为沙盒页面的所有网页。


默认政策

如果用户未在清单中定义内容安全政策,则将对扩展程序页面和沙盒化扩展程序页面使用默认属
性。
这些默认值等同于在清单中指定以下政策:

在这种情况下,该扩展程序只会从其自己的打包资源中加载本地脚本和对象。WebAssembly将被停用,该扩展程序将不会运行内嵌JavaScript,也无法将字符串评估为可执行代码。如果添加了沙盒页面,该页面将拥有更宽松的权限,用于从扩展程序外部评估脚本。

最基本的和自定义的内容安全政策

开发者可以为其扩展程序添加或移除规则,或者使用所要求的最低内容安全政策,以满足其项目的需求。


“扩展程序页面”政策

Chrome 针对扩展程序页面强制执行了最低的内容安全政策。这相当于在清单中指定以下政策:

extension_pages 政策的放宽限制不能超过此最小值。也就是说,您不能向指令添加其他脚本源,例如将'unsafe-eva1'添加到script-src。如果您在扩展程序政策中添加了禁止的来源Chrome 就会在安装时抛出如下错误:

沙盒页面政策

对于沙盒网页的默认政策要比扩展程序页面宽松得多,因为沙盒页面无权访问扩展程序API,也不能直接访问非沙盒化页面。可根据需要自定义沙盒内容安全政策。

总结

如果可可以去看官方文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值