智能获取和分析当前页面Cookie,提供简洁的通知界面
// ==UserScript==
// @name Cookie 获取器
// @namespace http://tampermonkey.net/
// @version 1.4
// @license MIT
// @description 智能获取和分析当前页面Cookie,提供简洁的通知界面
// @author Jack back
// @match *://*/*
// @grant GM_registerMenuCommand
// @grant GM_setClipboard
// @grant GM_notification
// @grant GM_addStyle
// @grant unsafeWindow
// @run-at document-start
// ==/UserScript==
(function() {
'use strict';
const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
const isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
const DEBUG = false;
GM_addStyle(`
.cookie-mini-notifier {
all: initial;
position: fixed !important;
top: 60px !important;
left: 50% !important;
transform: translateX(-50%) !important;
background: rgba(42, 42, 42, 0.85) !important;
color: white !important;
padding: 8px 16px !important;
border-radius: 20px !important;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15) !important;
z-index: 2147483647 !important;
font-family: 'Segoe UI', 'Microsoft Yahei', sans-serif !important;
font-size: 14px !important;
font-weight: 500 !important;
text-align: center !important;
min-width: 80px !important;
pointer-events: none !important;
opacity: 0 !important;
transition: opacity 0.2s ease-in-out !important;
backdrop-filter: blur(4px) !important;
border: 1px solid rgba(255, 255, 255, 0.1) !important;
}
.cookie-mini-notifier.show {
opacity: 1 !important;
}
`);
function showMiniNotification(message = "已复制", duration = 800) {
try {
const existingNotification = document.querySelector('.cookie-mini-notifier');
if (existingNotification && existingNotification.parentNode) {
existingNotification.parentNode.removeChild(existingNotification);
}
const notification = document.createElement('div');
notification.className = 'cookie-mini-notifier';
notification.textContent = message;
if (document.body) {
document.body.appendChild(notification);
} else if (document.documentElement) {
document.documentElement.appendChild(notification);
}
setTimeout(() => {
notification.classList.add('show');
setTimeout(() => {
notification.classList.remove('show');
setTimeout(() => {
if (notification.parentNode) {
notification.parentNode.removeChild(notification);
}
}, 200);
}, duration);
}, 10);
return true;
} catch (e) {
if (DEBUG) console.error("Mini通知显示失败:", e);
return false;
}
}
function showFinalNotification(options) {
showMiniNotification("已复制");
if (DEBUG) {
const superNotifyResult = showSuperNotification(options);
try {
GM_notification({
title: options.title,
text: options.message,
timeout: 1000
});
} catch (e) {
if (DEBUG) console.error("GM通知失败:", e);
}
}
}
function parseCookies(cookieString) {
if (!cookieString) return [];
return cookieString.split(';').map(cookie => {
const parts = cookie.split('=');
const name = parts[0].trim();
const value = parts.slice(1).join('=');
return { name, value };
});
}
function generateCookieSummary(parsedCookies) {
const count = parsedCookies.length;
try {
const currentDomain = window.location.hostname;
const keyCookies = parsedCookies.filter(cookie =>
cookie.name.toLowerCase().includes('session') ||
cookie.name.toLowerCase().includes('token') ||
cookie.name.toLowerCase().includes('auth') ||
cookie.name.toLowerCase().includes('id')
);
if (keyCookies.length > 0) {
return `共${count}个Cookie,包含${keyCookies.length}个可能的关键认证Cookie。`;
}
} catch (e) {
console.error('Error analyzing cookies:', e);
}
return `成功获取${count}个Cookie。`;
}
function copyCookieToClipboard() {
try {
const cookies = document.cookie;
if (cookies && cookies.length > 0) {
try {
GM_setClipboard(cookies, 'text');
showMiniNotification("已复制");
if (DEBUG) {
const parsedCookies = parseCookies(cookies);
const summary = generateCookieSummary(parsedCookies);
console.log(
`%c Cookie已复制! %c ${summary} `,
'background:#2575FC;color:white;border-radius:3px 0 0 3px;padding:2px;font-weight:bold',
'background:#6A11CB;color:white;border-radius:0 3px 3px 0;padding:2px'
);
}
} catch (e) {
if (DEBUG) console.error("复制失败:", e);
showMiniNotification("复制失败");
}
} else {
showMiniNotification("无Cookie");
}
} catch (e) {
if (DEBUG) console.error("脚本错误:", e);
showMiniNotification("出错了");
}
}
function getSmartCookies() {
try {
const cookies = document.cookie;
const parsedCookies = parseCookies(cookies);
const importantCookies = parsedCookies.filter(cookie =>
cookie.name.toLowerCase().includes('session') ||
cookie.name.toLowerCase().includes('token') ||
cookie.name.toLowerCase().includes('auth') ||
cookie.name.toLowerCase().includes('login') ||
cookie.name.toLowerCase().includes('user')
);
let cookieText = '';
if (importantCookies.length > 0) {
cookieText = importantCookies.map(c => `${c.name}=${c.value}`).join('; ');
} else {
cookieText = cookies;
}
GM_setClipboard(cookieText, 'text');
showMiniNotification("已复制");
} catch (e) {
showMiniNotification("复制失败");
if (DEBUG) console.error('Smart copy error:', e);
}
}
function testNotificationSystem() {
showMiniNotification("测试成功", 1500);
}
function initializeScript() {
GM_registerMenuCommand('✨ 获取并复制所有 Cookie', copyCookieToClipboard);
GM_registerMenuCommand('🔍 智能识别关键 Cookie', getSmartCookies);
GM_registerMenuCommand('🧪 测试通知系统', testNotificationSystem);
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initializeScript);
} else {
initializeScript();
}
})();