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

news2024/9/17 7:14:23

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

    • 引言
    • 1、基本介绍
    • 2、权限相关属性
      • 2.1、permissions
      • 2.2、optional_permissions
      • 2.3、host_permissions
      • 2.4、optional_host_permissions
    • 3、申请权限
    • 4、检查权限
    • 5、移除权限

引言

        本系列博客旨在带来最新的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).
  }
});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/449165.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言函数大全-- m 开头的函数

C语言函数大全 本篇介绍C语言函数大全-- m 开头的函数 1. malloc 1.1 函数说明 函数声明函数功能void *malloc(size_t size);用于动态分配内存 参数: size : 需要分配的内存大小(以字节为单位) 返回值: 如果分配成…

【Spring】三大依赖注入(@Autowired,Setter,构造方法)

目录 一、属性注入(Autowired) 1.1 优点分析 1.2 缺点分析 1.2.1 无法实现final修饰的变量注入。 1.2.2 兼容性不好 1.2.3 (可能违背)设计原则问题 1.2.4 代码举例: 1.2.5 出现循环依赖该怎么办? 二…

自然语言模型的哲学小谈

近期,以chatGPT为代表的大语言模型表现非常惊艳。“In Context Learning”、“Instruct”1,以及推理能力,很难不让我们期待未来人工智能的发展,同时冷静思考一下为什么自然语言模型能够取得巨大进步。 文章目录 1 放空大脑从0开始…

Ngiinx反向代理和负载均衡

系列文章目录 目录 系列文章目录一、Nginx的反向代理1.代理含义2.反向代理配置模块 二、1.动静分离2.负载均衡实验 总结 一、Nginx的反向代理 1.代理含义 正向代理 正向代理,指的是通过代理服务器 代理浏览器/客户端去重定向请求访问到目标服务器 的一种代理服务…

ARP协议详解

ARP协议详解 文章目录 ARP协议详解ARP协议介绍ARP抓包ARP包解析 ARP协议介绍 ARP(Address Resolution Protocol)是一种用于将网络层地址(如IP地址)转换为数据链路层地址(如MAC地址)的协议,当一…

软件测试概念篇(下)|开发模型与测试模型

作者:爱塔居 专栏:软件测试 作者简介:大三学生,希望同大家一起进步! 文章简介:主要介绍软件生命周期、瀑布模型和螺旋模型两个开发模型,V模型和W模型两个测试模型 文章目录 目录 文章目录 一、软…

【Go】五、网络编程

文章目录 网络编程1、互联网协议介绍2、Socket编程2.1、socket图解2.2、TCP编程2.3、UDP编程2.4、粘包(❌没有详细看代码,但是大概知道怎么实现) 3、Http编程4、WebSocket编程 网络编程 1、互联网协议介绍 2、Socket编程 2.1、socket图解 1…

这家工作室为网飞、亚马逊、迪士尼都制作过特效

过去的十年里,CGEV工作室通过为电影、电视剧以及Netflix、Amazon、Disney等平台制作大量内容,建立了坚不可摧的声誉。我们采访了CGEV团队,了解他们如何在每一个环节都依赖于ftrack Studio。 CGEV全称Compagnie Gnrale des Effets Visuels&…

C++缺省参数

目录 什么是缺省参数缺省参数分类全缺省参数半缺省参数 缺省参数函数的声明缺省参数的使用 什么是缺省参数 缺省参数是声明或定义函数时,为函数的参数指定一个缺省值。 在调用该函数时,如果没有指定实参,那么形参就会采用缺省值,如果指定了实…

【C语言】基础语法5:数组和指针

上一篇:函数和递归 下一篇:字符串和字符处理 ❤️‍🔥前情提要❤️‍🔥   欢迎来到C语言基本语法教程   在本专栏结束后会将所有内容整理成思维导图(结束换链接)并免费提供给大家学习,希望…

C#串口通信从入门到精通(4)——串口调试助手的使用

前言: 关于本文中使用到的串口助手工具,订阅专栏后,加入vip群,即可在群文件免费下载 1、认识串口助手 串口助手主要的功能有以下六个模块,功能介绍分别如下: 1.1 打开、关闭串口、清除接收区数据按钮区 这些按钮用于打开串口、关闭串口、清除接收数据区的数据 1.2 …

IIC协议——同步半双工串行通信方式

文章目录 前言一、简要介绍1、优点2、缺点 二、信号线和连接方式1、信号线2、连接方式2.1 单主设备,单从设备2.2 单主设备,多从设备2.3 多主设备,多从设备 三、数据传输格式1、数据传输过程 二、SPI配置1、传输模式2、地址位宽3、仲裁机制3.1…

【Linux】Linux基本指令(1)

一.前言 从这篇文章开始,博主就开启了Linux学习之路了,本篇文章也是博主的第一篇Linux的文章,今后也会持续不断更新的。 二.理解文件 1.文件 文件文件数据文件属性(所以一个建好的文件就算没有数据,也占用存储空间&am…

[RoarCTF 2019]Easy Calc、攻防世界 ics07、[极客大挑战 2019]EasySQL

[RoarCTF 2019]Easy Calc 进入题目是一个计算器的功能 检查网页源码发现这样一个重要信息 这题有WAF计算功能是通过calc.php这里面的代码执行的&#xff0c;我们去访问一下得到源码 <?php error_reporting(0); if(!isset($_GET[num])){show_source(__FILE__); }else{$str…

传统机器学习(二)逻辑回归算法(二)

传统机器学习(二)逻辑回归算法(二) 之前在传统机器学习(二)逻辑回归算法(一)中介绍了逻辑回归的原理、公式推导、手动python实现及sklearn工具包的使用详解等内容。继续对逻辑回归的使用细节进行介绍。 一、如何得到逻辑回归模型系数 1.1、一个简单的逻辑回归例子 已采集15…

广州蓝景分享—6 个ES13 中非常实用的新 JavaScript 特性

首先作为前端最重要的编程语言JavaScript&#xff0c;每年都在不断发展&#xff0c;让该语言都会通过新功能变得更强大。今天由小蓝跟大家分享6 个ES13 中非常实用的新 JavaScript 特性。 接下来让我们开始&#xff1a; 1.at 当我们想要获取数组的第 N 个元素时&#xff0c;…

Redis底层设计与源码分析---学习笔记

一.Redis为什么快 高速的存储介质 机械硬盘—>固态硬盘—>内存&#xff0c;随机访问的延迟逐渐变小 优良的底层数据结构设计 底层设计用到了hashtable&#xff0c;时间复杂度低 高效的网络IO模型 epoll等&#xff0c;不同平台有不同的实现   高效的线程模型 二.Re…

【论文阅读笔记|ACL2022】Legal Judgment Prediction via Event Extraction with Constraints

论文题目&#xff1a;Legal Judgment Prediction via Event Extraction with Constraints 论文来源&#xff1a;ACL2022 论文链接&#xff1a;https://aclanthology.org/2022.acl-long.48.pdf 代码链接&#xff1a;GitHub - WAPAY/EPM 0 摘要 近年来&#xff0c;虽然法律判…

动态内存管理--->(经典入手版详解)

友友们有时候在开辟内存的时候&#xff0c;所需要的空间大小不太好确定&#xff0c;只有在程序运行的时候才能知道&#xff0c;这时候我们就要尝试一下动态内存开辟空间了&#xff0c;下面来和阿博一起了解并掌握它吧&#x1f917;&#x1f917;&#x1f917; 文章目录 1.为什么…

系统的部署

把报错的三个给删了&#xff0c;系统可以运行了我猜测它对应的是商品分类页面 我觉得它分页器有问题所以研究了下userdto和mtuser的区别 Failed to parse configuration class [com.fuint.fuintApplication]; nested exception is java.lang.IllegalArgumentException: Could…