Автоматизировать получение куки-файла из браузера
Есть расширение "Copy Cookies" для Chrome, которое копирует куки со страницы в один клик. По умолчанию расширению назначен хоткей Ctrl+Shift+K. Для цели автоматизации копирования куки определенного сайта, возникла идея открывать HTML-файл в браузере на событии Onload, и после загрузки нужной страницы и паузы — эмулировать нажатие хоткея. Но как выяснилось, по соображениям безопасности, в браузере нет возможности отправлять сочетания клавиш (в коде эта строчка закомментирована). Что можно предпринять в этом случае, чтобы куки-файл копировался в буфер после загрузки страницы?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Open Page and Delay</title>
</head>
<body onload="openPageAndDelay()">
<script>
function openPageAndDelay() {
// Открываем новую вкладку с тестовой веб-страницей
var newWindow = window.open('https://example.com/', '_blank');
// Устанавливаем задержку на 5 секунд
setTimeout(function() {
console.log('5 секунд прошло');
// document.dispatchEvent(new KeyboardEvent('keydown', {'key': 'k', 'ctrlKey': true, 'shiftKey': true}));
}, 5000);
}
</script>
</body>
</html>
Ответы (2 шт):
Вашу задачу можно выполнить с помощью расширения Tampermonkey, но тоже не без ограничений и нюансов. Некоторые свойства этим методом не получится извлечь (всё ограничено свойством document.cookie).
Ниже пример скрипта для Tampermonkey, который копирует куки в буфер обмена с любого открываемого вами сайта. При желании, итоговую строку можно модифицировать здесь же.
// ==UserScript==
// @name Extract Cookies
// @namespace http://tampermonkey.net/
// @version 2025-03-16
// @description Описание
// @author You
// @match *://*/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=google.com
// @run-at document-idle
// @grant GM_setClipboard
// @noframes
// ==/UserScript==
(function() {
'use strict';
// Функция для получения куки текущего сайта
function getCookies() {
return document.cookie;
}
// Функция для копирования текста в буфер обмена
function copyToClipboard(text) {
GM_setClipboard(text, 'text'); // Используем GM_setClipboard для копирования
console.log("Куки скопированы в буфер обмена:", text);
}
// Получаем куки
const cookies = getCookies();
// Проверяем, есть ли куки
if (cookies) {
console.log("Куки текущего сайта:", cookies);
copyToClipboard(cookies); // Копируем куки в буфер обмена
//alert("Куки скопированы в буфер обмена!"); // Уведомляем пользователя
} else {
console.log("Куки не найдены.");
//alert("Куки не найдены на этом сайте.");
}
})();
Если же необходимо извлекать больше информации, это можно сделать с использованием API GM_cookie. Вот скрипт, который будет работать только в Firefox и Tampermonkey Legacy для Chrome.
// ==UserScript==
// @name Get Cookies Example with GM_cookie
// @namespace http://tampermonkey.net/
// @version 0.1
// @description Пример получения кук с использованием GM_cookie
// @author You
// @match *://*/*
// @grant GM_cookie
// @grant GM_setClipboard
// @run-at document-idle
// @noframes
// ==/UserScript==
(function() {
'use strict';
GM_cookie.list({ domain: window.location.hostname }, function(cookies) {
console.log("Все куки для сайта:", cookies);
GM_setClipboard(JSON.stringify(cookies), 'text');
});
})();
Если ты уже делаешь расширение, то надо не какие-то кнопки эмулировать, а просто самому взять и достать куки с помощью chrome.cookies.getAll.