简洁 Cookie 获取工具222

简洁方式获取网站 Cookies

// ==UserScript==
// @name         简洁 Cookie 获取工具222
// @namespace    http://tampermonkey.net/
// @version      1.3
// @license GPL
// @description  简洁方式获取网站 Cookies
// @match        *://*/*
// @grant        GM_cookie
// @grant        GM_setClipboard
// @grant        GM_addStyle
// ==/UserScript==

(function() {
    'use strict';

    // 添加样式
    GM_addStyle(`
        #cookie-retrieval-btn {
            position: fixed;
            top: 10px;
            right: 10px;
            z-index: 9999;
            background-color: #4CAF50;
            color: white;
            border: none;
            padding: 10px;
            border-radius: 5px;
            cursor: pointer;
        }

        #cookie-modal {
            position: fixed;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            width: 90%;
            max-width: 500px;
            background: white;
            border: 2px solid #4CAF50;
            border-radius: 10px;
            padding: 20px;
            z-index: 10000;
            box-shadow: 0 4px 6px rgba(0,0,0,0.2);
        }

        #cookie-textarea {
            width: 100%;
            height: 300px;
            margin-bottom: 10px;
            padding: 10px;
            box-sizing: border-box;
            resize: vertical;
            font-family: monospace;
        }

        .cookie-buttons {
            display: flex;
            justify-content: space-between;
        }

        .cookie-buttons button {
            padding: 10px;
            border: none;
            border-radius: 5px;
            cursor: pointer;
        }

        #copy-btn {
            background-color: #4CAF50;
            color: white;
        }

        #close-btn {
            background-color: #f44336;
            color: white;
        }
    `);

    // 创建 Cookie 获取按钮
    function createCookieButton() {
        const btn = document.createElement('button');
        btn.id = 'cookie-retrieval-btn';
        btn.textContent = '获取 Cookies';
        btn.onclick = retrieveCookies;
        document.body.appendChild(btn);
    }

    // 创建 Cookie 模态框
    function createCookieModal(cookieContent) {
        // 如果已存在模态框,先移除
        const existingModal = document.getElementById('cookie-modal');
        if (existingModal) {
            existingModal.remove();
        }

        const modal = document.createElement('div');
        modal.id = 'cookie-modal';
        modal.innerHTML = `
            <textarea id="cookie-textarea" readonly>${cookieContent}</textarea>
            <div class="cookie-buttons">
                <button id="copy-btn">复制 Cookies</button>
                <button id="close-btn">关闭</button>
            </div>
        `;

        document.body.appendChild(modal);

        // 复制按钮事件
        document.getElementById('copy-btn').onclick = () => {
            const textarea = document.getElementById('cookie-textarea');
            textarea.select();

            try {
                // 使用 GM_setClipboard
                GM_setClipboard(textarea.value);
                alert('Cookies 已成功复制!');
            } catch(e) {
                // 兼容性降级方案
                navigator.clipboard.writeText(textarea.value)
                    .then(() => alert('Cookies 已成功复制!'))
                    .catch(err => alert('复制失败:' + err));
            }
        };

        // 关闭按钮事件
        document.getElementById('close-btn').onclick = () => {
            modal.remove();
        };
    }

    // 保存原始的 XMLHttpRequest
    const originalXHR = unsafeWindow.XMLHttpRequest;
    let oldXHR = unsafeWindow.XMLHttpRequest;
    // 创建 XHR 拦截函数
    function fuckXHR() {
        const xhr = new oldXHR();
        const oldOpen = xhr.open;
        const oldSend = xhr.send;
        const oldSetRequestHeader = xhr.setRequestHeader;

        xhr.setRequestHeader = function(name, value) {
          //  console.log("Xheadessssssssssss:", name, value);
            oldSetRequestHeader.apply(this, arguments);
        }


        xhr.open = function(method, url, async, user, password) {
            // 检查是否是目标 URL
            if (url.includes('/i/api/1.1/jot/client_event.json')) {
                console.log("检测到目标请求:", url);
                // 获取当前页面的所有 cookies
                GM_cookie.list({}, function(cookies) {
                    const cookieStr = cookies.map(c => `${c.name}=${c.value}`).join('; ');
                    console.log("请求的 Cookies:", cookieStr);
                    createCookieModal(cookieStr);
                });
            }
            return oldOpen.apply(this, arguments);
        };

        xhr.send = function(data) {
            if (data != null) {

            }

            const oldOnReadyStateChange = xhr.onreadystatechange;
            xhr.onreadystatechange = function() {
                if (xhr.readyState === 4) {

                    //  console.log("XHR Response:", xhr.responseText);
                }
                if (oldOnReadyStateChange) {
                    return oldOnReadyStateChange.apply(this, arguments);
                }
            };

                return oldSend.apply(this,arguments)


        };

        return xhr;
    }

    // 获取 Cookies 的主函数
    function retrieveCookies() {
        unsafeWindow.XMLHttpRequest = fuckXHR;
        alert('Cookie 监控已启动,正在等待 client_event.json 请求...');
    }

    // 页面加载完成后初始化
    function init() {
        // 延迟创建按钮,避免与页面脚本冲突
        setTimeout(createCookieButton, 1000);
    }

    // 监听页面加载
    if (document.readyState === 'complete') {
        init();
    } else {
        window.addEventListener('load', init);
    }

    // 在页面卸载时恢复原始 XMLHttpRequest
    window.addEventListener('unload', () => {
        window.XMLHttpRequest = originalXHR;
    });
})();