【作者主頁】:小魚神1024
【擅長領域】:JS逆向、小程序逆向、AST還原、驗證碼突防、Python開發、瀏覽器插件開發、React前端開發、NestJS后端開發等等
chrome.cookies API能夠讓我們在擴展程序中去操作瀏覽器的cookies。
在使用 chrome.cookies 要先聲明 cookies 權限,并設置 host_permissions 主機權限,如下:
{"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 文件
<!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 來實現,如下:
document.addEventListener('DOMContentLoaded', () => {// 獲取指定cookieconst 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”按鈕之后,打印如下:
2、chrome.cookies.getAll
如果我們想獲取指定網站下全部 cookies , 可以使用 chrome.cookies.getAll 來實現
將 pupup.html 增加 “獲取全部 cookies”按鈕,如下:
<button class="get_all_cookies">獲取全部 cookies</button>
同時在 pupup.js 中追加的監聽事件,如下:
// 獲取所有cookieconst 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);})})}
刷新擴展后,點擊按鈕,打印如下:
這樣就拿到該網站下的所有 cookies 了。
3、chrome.cookies.set
如果我們想給指定網站設置 cookie , 可以使用 chrome.cookies.set 來實現
將 popup.html 中增加 “設置 cookie”按鈕,代碼如下:
<button class="set_cookie">設置 cookie</button>
然后,在 pupup.js 追加其點擊事件,如下:
// 設置指定 cookieconst 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被設置成功了。
4、chrome.cookies.remove
如果我們想移除指定網站下的指定 cookie , 可以使用 chrome.cookies.remove 來實現
在 popup.js 中添加 “移除 cookie” 按鈕,如下:
<button class="remove_cookie">移除 cookie</button>
然后,在 popup.js 中追加其點擊事件:
// 移除指定 cookieconst 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",})})}
效果如下:
代碼地址:傳送門
總結
- 獲取指定 cookie ,使用:chrome.cookies.get
- 獲取全部 cookies , 使用:chrome.cookies.getAll
- 設置指定 cookie , 使用:chrome.cookies.set
- 移除指定 cookie , 使用:chrome.cookies.remove
創作不易,動動您發財的小手,點贊關注一波,支持我創作更多對您有幫助的文章!