Автоматизировать получение куки-файла из браузера

Есть расширение "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 шт):

Автор решения: svm

Вашу задачу можно выполнить с помощью расширения 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');
    });
})();
→ Ссылка
Автор решения: Qwertiy

Если ты уже делаешь расширение, то надо не какие-то кнопки эмулировать, а просто самому взять и достать куки с помощью chrome.cookies.getAll.

→ Ссылка