#Chrome扩展程序开发教程--04:权限申请

引言

        本系列博客旨在带来最新的Chrome扩展程序开发入门教程。


1、基本介绍

        谷歌官方建议,将扩展程序所需要的权限分为两类:

  • 实现基本功能所需要的必须权限
  • 实现其它功能所需要的可选权限

        进行权限划分后,可以有以下好处:

  • 更安全,最小权限原则。
  • 更有说服力,只有当用户启用指定功能时才请求指定权限,让用户能够更好地理解需要授权的权限背后的含义。
  • 更容易升级,如果在新的版本中新增了必须权限,则 Chrome 会自动禁用该扩展,但新增可选权限不会。

2、权限相关属性

2.1、permissions

        声明必须权限,可能的取值有:

PermissionDescription
“activeTab”允许扩展程序访问当前激活的标签页的内容,以及在该标签页上执行一些操作,例如注入JavaScript代码或修改页面样式
“alarms”允许扩展程序在设定的时间间隔触发指定的事件或操作
“background”允许扩展程序在后台运行,并随时接收来自浏览器的事件和请求
“bookmarks”允许扩展程序访问和修改用户的书签,从而提供更多的功能和服务
“browsingData”允许扩展程序访问和控制用户的浏览数据,包括浏览历史、下载历史、cookie、表单数据、密码等
“certificateProvider”允许扩展程序代表用户管理和使用安装在浏览器中的数字证书
“clipboardRead”允许扩展读取用户的剪贴板上的数据,包括文本、图像等内容
“clipboardWrite”允许扩展程序将数据写入用户的剪贴板,可以方便用户在不同应用程序之间分享数据
“contentSettings”允许扩展程序管理和修改页面内容设置,例如JavaScript、Cookie、插件等设置
“contextMenus”允许扩展程序添加右键菜单,方便用户在页面上执行一些自定义操作
“cookies”允许扩展程序访问和管理浏览器的Cookie,例如添加、修改、删除等操作
“debugger”允许扩展程序访问和操作浏览器的调试工具,方便开发和调试扩展程序
“declarativeContent”允许扩展程序根据网页内容和事件对网页进行动态修改和操作
“declarativeNetRequest”允许扩展程序透明地修改网络请求,例如在请求发出前添加、修改、删除请求头、请求体等内容
“declarativeNetRequestWithHostAccess”允许扩展程序访问和操作网络请求的源主机信息
“declarativeNetRequestFeedback”允许扩展程序获取流量过滤器的状态,并向用户提供反馈
“declarativeWebRequest”允许扩展程序自定义网络请求的行为,例如修改请求头、修改响应体等
“desktopCapture”允许扩展程序捕获并共享屏幕内容,在实时视频、游戏教程等场景中有广泛应用
“documentScan”允许扩展程序访问和使用本地扫描仪,以便扫描和保存文档
“downloads”允许扩展程序管理Chrome浏览器的下载功能
“enterprise.deviceAttributes”允许扩展程序访问设备属性,例如设备名称、序列号、操作系统类型等
“enterprise.hardwarePlatform”允许扩展程序访问硬件平台信息,例如处理器类型、内存大小等
“enterprise.networkingAttributes”允许扩展程序访问网络属性,例如IP地址、Mac地址等
“enterprise.platformKeys”允许扩展程序使用平台密钥,以保护用户数据
“experimental”允许扩展程序使用实验性的API,这些API可能存在不稳定性、不兼容性等风险
“fileBrowserHandler”允许扩展程序在Chrome浏览器中打开本地文件
“fileSystemProvider”允许扩展程序在Chrome浏览器中访问本地文件系统
“fontSettings”允许扩展程序调整Chrome浏览器中的字体设置,包括字体大小和字体样式
“gcm”允许扩展程序访问Google Cloud Messaging服务,使扩展能够接收来自服务器或其它应用程序的推送通知
“geolocation”允许扩展程序访问定位服务,使得扩展能够获取用户的位置信息
“history”允许扩展程序访问用户的历史记录,使扩展能够查看已访问过的网页并在需要时使用
“identity”允许扩展程序获取用户身份,例如名字和邮箱地址,以使扩展能够提供更加个性化的服务
“idle”允许扩展程序检测用户的空闲状态,以便在用户不活动的时候暂停或降低扩展的资源消耗
“loginState”允许扩展程序访问当前用户的登录状态,以便在需要时提供特定的服务
“management”允许扩展程序管理和控制其它扩展的行为
“nativeMessaging”允许扩展程序在Chrome浏览器和本地应用程序之间进行通信
“notifications”允许扩展程序在Chrome浏览器中显示桌面通知
“offscreen”允许扩展程序在Chrome浏览器中离屏渲染
“pageCapture”允许扩展程序截取和保存整个网页,包括未下载的部分
“platformKeys”允许扩展程序管理和使用操作系统的加密功能
“power”允许扩展程序检测和管理计算机的电量和睡眠状态
“printerProvider”允许扩展程序管理和控制打印机
“printing”允许扩展程序访问和控制浏览器的打印机功能,使得扩展程序可以实现在浏览器中打印或打印预览等功能
“printingMetrics”允许扩展程序获取打印输出的统计信息
“privacy”允许扩展程序读取浏览器隐私设置
“processes”允许扩展程序访问浏览器进程相关信息
“proxy”允许扩展程序管理浏览器代理设置
“scripting”允许扩展程序注入JavaScript代码到网页中进行操作
“search”允许扩展程序在浏览器中进行搜索操作
“sessions”允许扩展程序管理浏览器会话设置
“storage”允许扩展程序在浏览器本地存储中读写数据
“system.cpu”允许扩展程序获取系统CPU的状态信息
“system.display”允许扩展程序获取显示设备的状态信息
“system.memory”允许扩展程序获取系统内存状态信息
“system.storage”允许扩展程序获取系统存储设备的状态信息
“tabCapture”允许扩展程序捕获当前标签页的屏幕截图或视频流
“tabGroups”允许扩展程序创建、管理和获取浏览器标签组信息
“tabs”允许扩展程序操作浏览器标签页,例如创建、删除、切换、获取信息等
“topSites”允许扩展程序访问浏览器的常用网站列表
“tts”允许扩展程序访问浏览器的语音合成功能,可以将文本转换成语音
“ttsEngine”允许扩展程序管理和使用第三方语音合成引擎
“unlimitedStorage”允许扩展程序在浏览器中使用无限制的本地存储空间
“vpnProvider”允许扩展程序管理浏览器的VPN连接
“wallpaper”允许扩展程序更改用户的Chrome浏览器桌面背景
“webNavigation”允许扩展程序跟踪和监视页面导航事件,例如当一个页面被加载、刷新或导航到新的URL时
“webRequest”允许扩展程序监视并修改所有传入和传出的网络请求。这可以用于屏蔽广告或旁路(bypass)某些安全限制或协议
“webRequestBlocking”与webRequest权限类似,但该权限允许扩展程序阻止某些网络请求。这可以用于屏蔽恶意网站或拦截广告

2.2、optional_permissions

        声明可选权限,需要在运行时由用户确认。除以下权限外所有的权限都可以作为可选权限。

PermissionDescription
“debugger”允许扩展程序访问和操作浏览器的调试工具,方便开发和调试扩展程序
“declarativeNetRequest”允许扩展程序透明地修改网络请求,例如在请求发出前添加、修改、删除请求头、请求体等内容
“devtools”允许扩展程序可以在浏览器的开发者工具(Developer Tools)中访问和修改页面的DOM结构和CSS样式,进行调试和测试。也可以使用Chrome的debugger API来执行JavaScript代码并在页面中展示相关信息。
“experimental”允许扩展程序使用实验性的API,这些API可能存在不稳定性、不兼容性等风险
“geolocation”允许扩展程序访问定位服务,使得扩展能够获取用户的位置信息
“mdns”允许扩展程序可以在本地网络中通过多播DNS(Multicast DNS)协议进行扫描和发现设备。比如,扩展程序可以搜索当前网络中的局域网设备,如打印机、路由器等,并提供相应的服务。mdns权限通常用于局域网设备的管理和监控。
“proxy”允许扩展程序管理浏览器代理设置
“tts”允许扩展程序访问浏览器的语音合成功能,可以将文本转换成语音
“ttsEngine”允许扩展程序管理和使用第三方语音合成引擎
“wallpaper”允许扩展程序更改用户的Chrome浏览器桌面背景

2.3、host_permissions

        声明必须 host 权限,允许扩展程序访问的目标网站。如以下所示:

{
  ...
  "host_permissions": [
    "https://www.blogger.com/",
    "https://*.google.com/"
  ],
  ...
}

2.4、optional_host_permissions

        声明可选 host 权限,需要在运行时由用户确认。如以下所示:

{
  ...
  "optional_host_permissions": [
    "https://*/*",
    "http://*/*"
  ],
  ...
}

3、申请权限

        1.不管是什么权限,都需要在 manifest.json 中声明,如下所示:

{
  ...
  "permissions": [
    "tabs",
    "bookmarks",
    "unlimitedStorage"
  ],
  "optional_permissions": [
    "unlimitedStorage"
  ],
  "host_permissions": [
    "https://www.blogger.com/",
    "https://*.google.com/"
  ],
  "optional_host_permissions": [
    "https://*/*",
    "http://*/*"
  ],
  ...
}

        2.如果是必须权限,声明完就可以了,但如果是可选权限,则还需要在代码中请求用户授权。

document.querySelector('#my-button').addEventListener('click', (event) => {
  // Permissions must be requested from inside a user gesture, like a button's
  // click handler.
  chrome.permissions.request({
    permissions: ['tabs'],
    origins: ['https://www.google.com/']
  }, (granted) => {
    // The callback argument will be true if the user granted the permissions.
    if (granted) {
      doSomething();
    } else {
      doSomethingElse();
    }
  });
});

4、检查权限

        可以通过以下代码检查扩展程序当前是否拥有指定权限:

chrome.permissions.contains({
  permissions: ['tabs'],
  origins: ['https://www.google.com/']
}, (result) => {
  if (result) {
    // The extension has the permissions.
  } else {
    // The extension doesn't have the permissions.
  }
});

5、移除权限

        可以通过以下代码移除已获取的权限:

chrome.permissions.remove({
  permissions: ['tabs'],
  origins: ['https://www.google.com/']
}, (removed) => {
  if (removed) {
    // The permissions have been removed.
  } else {
    // The permissions have not been removed (e.g., you tried to remove
    // required permissions).
  }
});
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个链接是Chrome浏览器的一个设置页面,可以通过这个页面设置是否阻止加载不安全的私有网络请求。 你可以按照以下步骤在Chrome浏览器中打开这个设置页面: 1. 在浏览器地址栏中输入chrome://flags/并按下Enter键打开Chrome的实验性功能设置页面。 2. 在搜索框中输入“block insecure private network requests”,然后按Enter键。 3. 在搜索结果中找到“Block insecure private network requests”选项,然后点击下拉菜单中的“启用”选项。 4. 点击页面底部的“重新启动”按钮,以使更改生效。 请注意,启用此选项可能会导致某些网站无法加载或功能受到限制,因此请谨慎使用。 ### 回答2: Chrome://flags是Chrome浏览器中的一项隐藏功能,也称为“实验室”。它提供了一系列高级功能和实验性选项,允许用户深度定制和优化浏览器的性能和功能。这些选项因为它们是实验性的,通常需要用户具有一定的技术知识和相关技能才能安全地使用。 Chrome://flags提供了各种各样的选项来优化和改进浏览器使用体验。其中一些选项包括: 1. 启用硬件加速:这个选项可以开启Chrome浏览器的硬件加速功能,以提高浏览器渲染速度和性能。 2. 启用预取页面资源:这个选项可以让Chrome浏览器提前下载预测您可能会访问的页面资源,以提高浏览器页面加载速度。 3. 启用延迟播放:这个选项可以让Chrome浏览器在播放网页视频时延迟几秒钟,以便允许视频缓存,从而显著提高视频流畅度和清晰度。 4. 禁用Cookie干扰检测:这个选项可以关闭Chrome浏览器的Cookie干扰检测,以提高网站的访问速度。 总之,Chrome://flags提供了一种方便的方式,让用户自定义和调整Chrome浏览器的性能和功能,以满足其个性化需求。但是,用户在使用这些选项时需要小心,因为一些实验性选项可能会导致浏览器崩溃和数据丢失。用户应该在深入了解这些选项的风险和优势之前,谨慎地使用它们。 ### 回答3: chrome://flags/是Google Chrome浏览器中的“隐藏功能”选项,也被称为“实验室”,它可以让用户启用或禁用一些实验性功能。这些功能大多不是默认打开的,因为它们可能存在性能问题或稳定性问题,但对于一些开发者和早期采用者来说,这些功能非常有用。 在chrome://flags/页面中,用户可以找到一系列的实验性功能选项,它们通常被分为四个类别: 1. 新的网络协议:这些协议可能会提升Web内容的加载速度和安全性。 2. 新的浏览器用户界面:这些功能可以在浏览器的外观和交互方式上实现个性化。 3. 硬件加速:这些功能可以通过硬件加速来提升图形和视频播放性能。 4. 其他实验性功能:这些功能包括其他实验性设置,比如启用网站材质设计等。 可以找到很多有用的功能来加速Chrome浏览器的性能,比如通过启用并行下载加快下载速度,或启用TCP Fast Open等功能快速连接网站等等。但是需要注意的是,开启实验性功能可能会导致一些稳定性问题,有时甚至会使浏览器崩溃。因此,一定要谨慎地选择哪些功能适合开启。 总的来说,chrome://flags/对于开发者和技术爱好者来说非常有用,它们可以提供更好的自定义化和实验性功能,同时使用者也需要具备一定的技术水平和安全意识。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值