浏览器扩展V3开发系列之 chrome.cookies 的用法和案例

【作者主页】:小鱼神1024

【擅长领域】:JS逆向、小程序逆向、AST还原、验证码突防、Python开发、浏览器插件开发、React前端开发、NestJS后端开发等等

chrome.cookies API能够让我们在扩展程序中去操作浏览器的cookies。

在使用 chrome.cookies 要先声明 cookies 权限,并设置 host_permissions 主机权限,如下:
image.png

{
  "manifest_version": 3,
  "name": "chrome.cookies",
  "description": "chrome.cookies API 基础用法",
  "version": "1.0",
  "action": {
    "default_popup": "popup.html",
    "default_icon": "icons/icon128.png"
  },
  "host_permissions": [
    "<all_urls>"
  ],
  "permissions": [
    "cookies"
  ]
}

这里 host_permissions 设置了 “<all_urls>”,表示扩展对所有的网站都有访问权限,也可以指定某个网站。比如:

"host_permissions": [
    "*://*.google.com/"
],

以 千图网 网站为例,来分析 chrome.cookies 用法
首先,先编写 pupup.html 文件
image.png

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>chrome.cookies</title>
    <script src="popup.js"></script>
    <style>
        body {
            width: 200px;
        }

        button {
            width: 100px;
        }

        .cookie_container {
            display: flex;
            flex-direction: column;
            gap: 10px;
        }
    </style>
</head>

<body>
    <p>千图网cookies操作</p>
    <div class="cookie_container">
        <button class="get_qt_type">获取qt_type cookie</button>
    </div>
</body>

</html>



然后,再编写需要引入的 popup.js 文件:

1、chrome.cookies.get

如果我们想获取指定网站下的指定cookie信息,可以通过 chrome.cookies.get 来实现,如下:
image.png

document.addEventListener('DOMContentLoaded', () => {
    // 获取指定cookie
    const get_qt_type_element = document.querySelector(".get_qt_type")
    if (get_qt_type_element) {
        get_qt_type_element.addEventListener("click", function () {
            chrome.cookies.get({
                url: "https://www.58pic.com/",
                name: "qt_type"
            }, function (cookie) {
                console.log(cookie);
            })
        })
    }
})

点击“获取qt_type cookie”按钮之后,打印如下:
image.png

2、chrome.cookies.getAll

如果我们想获取指定网站下全部 cookies , 可以使用 chrome.cookies.getAll 来实现
将 pupup.html 增加 “获取全部 cookies”按钮,如下:
image.png

<button class="get_all_cookies">获取全部 cookies</button>

同时在 pupup.js 中追加的监听事件,如下:
image.png

    // 获取所有cookie
    const get_all_cookies_element = document.querySelector(".get_all_cookies")
    if (get_all_cookies_element) {
        get_all_cookies_element.addEventListener("click", function () {
            chrome.cookies.getAll({
                domain: "58pic.com"
            }, function (cookies) {
                console.log(cookies);
            })
        })
    }

刷新扩展后,点击按钮,打印如下:
image.png
这样就拿到该网站下的所有 cookies 了。

3、chrome.cookies.set

如果我们想给指定网站设置 cookie , 可以使用 chrome.cookies.set 来实现

将 popup.html 中增加 “设置 cookie”按钮,代码如下:
image.png

<button class="set_cookie">设置 cookie</button>

然后,在 pupup.js 追加其点击事件,如下:
image.png

    // 设置指定 cookie
    const set_cookie_element = document.querySelector(".set_cookie")
    if (set_cookie_element) {
        set_cookie_element.addEventListener("click", function () {
            chrome.cookies.set({
                url: "https://www.58pic.com/",
                name: "cookie_test_name",
                value: "我是被手动设置的cookie",
                domain: ".58pic.com",
                path: "/",
                secure: false,
                httpOnly: false,
                expirationDate: (new Date()).getTime() / 1000 + 3600
            })
        })
    }

点击“设置 cookie”按钮后,刷新 cookie ,可以看到cookie被设置成功了。
image.png

4、chrome.cookies.remove

如果我们想移除指定网站下的指定 cookie , 可以使用 chrome.cookies.remove 来实现

在 popup.js 中添加 “移除 cookie” 按钮,如下:
image.png

<button class="remove_cookie">移除 cookie</button>

然后,在 popup.js 中追加其点击事件:
image.png

    // 移除指定 cookie
    const remove_cookie_element = document.querySelector(".remove_cookie")
    if (remove_cookie_element) {
        remove_cookie_element.addEventListener("click", function () {
            chrome.cookies.remove({
                url: "https://www.58pic.com/",
                name: "cookie_test_name",
            })
        })
    }

效果如下:
5.gif

代码地址:传送门

总结
  • 获取指定 cookie ,使用:chrome.cookies.get
  • 获取全部 cookies , 使用:chrome.cookies.getAll
  • 设置指定 cookie , 使用:chrome.cookies.set
  • 移除指定 cookie , 使用:chrome.cookies.remove

创作不易,动动您发财的小手,点赞关注一波,支持我创作更多对您有帮助的文章!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IDEA中使用leetcode 刷题

目录 1.IDEA下载leetcode插件 2.侧边点开插件 3.打开网页版登录找到cookie复制 4.回到IDEA登录 5.刷题 6.共勉 1.IDEA下载leetcode插件 2.侧边点开插件 3.打开网页版登录找到cookie复制 4.回到IDEA登录 5.刷题 6.共勉 算法题来了不畏惧&#xff0c; 挑战前行是成长的舞台…

中文检测程序(静态代码扫描)

欢迎您关注我们&#xff0c;经常分享有关Android出海&#xff0c;iOS出海&#xff0c;App市场政策实时更新&#xff0c;互金市场投放策略&#xff0c;最新互金新闻资讯等文章&#xff0c;期待与您共航世界之海。 在前些日子&#xff0c;给大家安利了我们在用的AS中文实时检测插…

服务器数据恢复—用raid6阵列磁盘组建raid5阵列如何恢复原raid数据?

服务器存储数据恢复环境&#xff1a; 华为OceanStor 5800存储&#xff0c;该存储中有一组由10块硬盘组建的raid6磁盘阵列&#xff0c;供企业内部使用&#xff0c;服务器安装linux操作系统EXT3文件系统&#xff0c;划分2个lun。 服务器存储故障&#xff1a; 管理员发现存储中rai…

Flask之表单

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 目录 一、HTML表单 二、使用Flask-WTF处理表单 2.1、定义WTForms表单类 2.2、输出HTML代码 2.3、在模板中渲染表单 三、处理表单数据 3.1、提…

【数据结构与算法】静态查找表(顺序查找,折半查找,分块查找)详解

顺序查找、折半查找、分块查找算法适合的场合。 顺序查找&#xff1a;顺序存储或链式存储的静态查找表均可。 折半查找&#xff08;二分查找&#xff09;&#xff1a;采用顺序存储结构的有序表。 分块查找&#xff08;索引顺序查找 &#xff09;&#xff1a;分块有序表。 …

项目管理计划(DOC原件)

本文档为XXX系统项目管理计划&#xff0c;本计划的主要目的是通过本方案明确本项目的项目管理体系。方案的主要内容包括&#xff1a;明确项目的目标及工作范围&#xff0c;明确项目的组织结构和人员分工&#xff0c;确立项目的沟通环境&#xff0c;确立项目进度管理方法&#x…

【ai】trition:tritonclient yolov4:部署ubuntu18.04成功

X:\05_trition_yolov4_clients\01-python server代码在115上,client本想在windows上, 【ai】trition:tritonclient.utils.shared_memory 仅支持linux 看起来要分离。 client代码远程部署在ubuntu18.04上 ubuntu18.04 创建yolov4-trition python=3.7 环境 (base) zhangbin@ub…

MCU复位时GPIO是什么状态?

大家一定遇到过上电或者复位时外部的MOS电路或者芯片使能信号意外开启&#xff0c;至此有经验的工程师就会经常关心一个问题&#xff0c;MCU复位时GPIO是什么状态&#xff1f;什么电路需要外部加上下拉&#xff1f; MCU从上电到启动&#xff0c;实际可分为复位前和复位后、初始…

uniapp - 微信小程序 - 自定义底部tabbar

废话不多说&#xff0c;直接行源码 这里需要的底部tabbar的图片在这里 我的资源里面呢 图片是这样的 先看成品吧 首先 - BaseApp\components\Tabbar.vue <script setup>import {ref,nextTick,watch} from "vue"// 核心 - 隐藏uniapp自带的底部tabbaruni.hi…

Python爬虫实战:利用代理IP批量下载哔哩哔哩美女视频

文章 目录 1.前言2.爬取目标3.准备工作3.1 环境安装3.2 代理免费获取 四、爬虫实战分析4.1 翻页分析4.2 获取视频跳转链接4.3 下载视频4.4 视频音频合并4.5 完整源码 五、总结 1.前言 粉丝们&#xff08;lsp&#xff09;期待已久的Python批量下载哔哩哔哩美女视频教程它终于来…

火绒被骂惨,良心居然也翻车?剩下3款软件还被误认为外国人开发

万万没想到&#xff0c;公认的国产良心软件“火绒”&#xff0c;居然也翻车&#xff0c;很多网友对其大失所望&#xff0c;甚至忍不住吐槽让他不要砸了自己的招牌。 事情的起因是这样的&#xff0c;火绒推出应用商店&#xff0c;并于正式公测&#xff0c;这是要逐渐走向全家桶的…

1688官方API跨境寻源通API:做外贸反向代购业务必备

item_get 获得1688商品详情item_search 按关键字搜索商品item_search_img 按图搜索1688商品&#xff08;拍立淘&#xff09;item_search_suggest 获得搜索词推荐item_fee 获得商品快递费用seller_info 获得店铺详情item_search_shop 获得店铺的所有商品item_password 获得淘口令…

WMS在发展过程中会遇到哪些挑战?

在仓库管理系统&#xff08;Warehouse Management System, WMS&#xff09;的发展过程中&#xff0c;会遇到以下一些挑战&#xff1a; 1、技术整合&#xff1a; 将WMS与现有的ERP&#xff08;企业资源计划&#xff09;、TMS&#xff08;运输管理系统&#xff09;等系统进行有效…

【日记】希望文竹长得越来越好吧(856 字)

正文 为什么昨天给老师提早说了今天上课…… 今天都要忙死了。不论上午下午都手忙脚乱。上午之前的存量客户来开新账户&#xff0c;流程卡在客户经理尽调那里。恰好那个客户经理还是部门主管&#xff0c;我们没一个人敢催。向副行长汇报情况&#xff0c;又跟客户说。客户跟他们…

通过混合栅极技术改善p-GaN功率HEMTs的ESD性能

来源&#xff1a;Improved Gate ESD Behaviors of p-GaN PowerHEMTs by Hybrid Gate Technology&#xff08;ISPSD 24年&#xff09; 摘要 本工作中&#xff0c;首次证明了混合栅极技术在不增加额外面积和寄生效应的前提下&#xff0c;能有效提升p-GaN HEMTs的栅极静电放电(E…

【C语言】函数strerror和perror详解

<>博客简介&#xff1a;Linux、rtos系统&#xff0c;arm、stm32等芯片&#xff0c;嵌入式高级工程师、面试官、架构师&#xff0c;日常技术干货、个人总结、职场经验分享   <>公众号&#xff1a;嵌入式技术部落   <>系列专栏&#xff1a;C/C、Linux、rtos、…

SpringCloud Alibaba Seata2.0分布式事务AT模式实践总结

这里我们划分订单、库存与支付三个module来实践Seata的分布式事务。 依赖版本(jdk17)&#xff1a; <spring.boot.version>3.1.7</spring.boot.version> <spring.cloud.version>2022.0.4</spring.cloud.version> <spring.cloud.alibaba.version>…

二种方法轻松提取音频中的钢琴声音

在音乐制作、音频编辑或是纯粹的音乐爱好者的世界里&#xff0c;有时我们需要从复杂的音乐编排中抽取出特定乐器的声音&#xff0c;比如那悠扬的钢琴旋律。这不仅能帮助我们更好地理解音乐的结构&#xff0c;还能在创作过程中提供灵感。本文将介绍两种简单有效的方法&#xff0…

Snipaste截图工具如何控制框线箭头的粗细程度

我们使用Snipaste截图工具的时候&#xff0c;最常用的就是框线和箭头这些功能&#xff0c;有时候感觉很粗有时候感觉太细了&#xff0c;如何解决呢&#xff1f;我们可以在使用框线或者箭头之后&#xff0c;长按1或者2来控制框线箭头的粗细程度。其中1是变细&#xff0c;2是变粗…

.NET C# 树遍历、查询、拷贝与可视化

.NET C# 树遍历、查询、拷贝与可视化 目录 .NET C# 树遍历、查询、拷贝与可视化1 组件安装1.1 NuGet包管理器安装&#xff1a;1.2 控制台安装&#xff1a; 2 接口1.1 ITree\<TTreeNode\>1.2 ITree\<TKey, TTreeNode\>1.3 IObservableTree\<TTreeNode\>1.4 IO…