Cookie是网站存储在用户浏览器中的小型文本文件,用于记录用户的登录状态、偏好设置等信息。当你登录一个网站后,网站会生成一个Cookie并存储在你的浏览器中,之后每次访问该网站时,浏览器都会自动携带这个Cookie,网站通过验证Cookie来识别你的身份。

Cookie的组成部分

  • Name (名称): Cookie的标识符,如 "session_id"
  • Value (值): Cookie存储的实际数据,如 "abc123xyz"
  • Domain (域名): Cookie生效的域名范围
  • Path (路径): Cookie生效的URL路径
  • Expires (过期时间): Cookie的有效期
  • HttpOnly: 防止JavaScript访问的安全标志
  • Secure: 仅在HTTPS连接中传输

当你在网站上输入用户名和密码登录后,服务器会验证你的身份,验证成功后会生成一个会话标识(Session ID)认证令牌(Auth Token),并通过Cookie发送到你的浏览器保存。

之后每次访问该网站时,浏览器会自动携带这个Cookie,服务器通过验证Cookie中的会话信息来确认你的登录状态,无需再次输入用户名和密码。这就是为什么我们可以直接使用Cookie来登录网站。

典型的登录Cookie示例:

Name: session_id
Value: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxMjM0NTY3ODkwfQ
Domain: .example.com
Path: /
Expires: 2025-02-01 12:00:00
HttpOnly: true
Secure: true

1打开开发者工具

在Chrome浏览器中打开目标网站,然后按下以下快捷键打开开发者工具:

  • Windows/Linux: F12Ctrl + Shift + I
  • Mac: Cmd + Option + I

步骤1图示

https://example.com 网页内容区域 ... 开发者工具 (F12) Elements | Console | Sources | Network | Application > 按 F12 或 Ctrl+Shift+I 打开 > Mac: Cmd+Option+I

按F12打开开发者工具,界面通常显示在浏览器右侧或底部

2切换到Application标签

在开发者工具顶部找到"Application"标签并点击。如果没看到,点击右侧的>>图标展开更多选项。

步骤2图示

Elements Console Sources Network Application 点击这里 ↑ 在这里管理Cookie、Storage等

开发者工具顶部导航:Elements | Console | Sources | Network | Application

3查看Cookies

在左侧导航栏中,找到"Storage"部分下的"Cookies",展开后会显示当前域名。点击域名即可看到所有Cookie。

步骤3图示

Application ▼ Storage ▼ Cookies https://example.com ▶ Local Storage ▶ Session Storage ▶ IndexedDB Name Value Domain Path session_id abc123xyz... .example.com / auth_token eyJhbGciOi... .example.com / user_id 123456 .example.com / 双击Value列可复制 右键可删除或编辑

左侧栏: Storage → Cookies → https://example.com
右侧表格显示所有Cookie的Name、Value、Domain等信息

4复制Cookie值

找到需要的Cookie(通常是session_idauth_token等),双击Value列的值,按Ctrl+C(或Cmd+C)复制。

// Chrome控制台快速导出所有Cookie
document.cookie.split(';').forEach(c => console.log(c.trim()));

// 或者获取格式化的Cookie对象
const cookies = {};
document.cookie.split(';').forEach(c => {
    const [name, value] = c.trim().split('=');
    cookies[name] = value;
});
console.log(JSON.stringify(cookies, null, 2));

1打开开发者工具

在Firefox浏览器中打开目标网站,按下快捷键:

  • Windows/Linux: F12Ctrl + Shift + I
  • Mac: Cmd + Option + I

2切换到存储标签

在开发者工具顶部找到"存储"(Storage)标签并点击。

步骤2图示 - Firefox

检查器 控制台 调试器 存储 点击这里 ↑ 在这里管理Cookie和存储

Firefox开发者工具: 检查器 | 控制台 | 调试器 | 存储

3查看Cookie

在左侧展开"Cookie",点击对应的域名,右侧表格会显示所有Cookie信息。

步骤3图示 - Firefox存储面板

存储 ▼ Cookie https://example.com ▶ 本地存储 ▶ 会话存储 ▶ IndexedDB ▶ 缓存存储 名称 路径 过期 session_id abc123xyz... .example.com / 会话 auth_token eyJhbGci... .example.com / 2025-12

左侧: Cookie → https://example.com
右侧表格: 名称 | 值 | 域 | 路径 | 过期时间

4复制Cookie

右键点击需要的Cookie行,选择"复制",或者直接双击列进行复制。

4.1 Chrome手动设置Cookie

重要提示

手动设置Cookie前,请确保:

  • 已经退出当前账号(清除现有Cookie)
  • Cookie来自合法渠道(自己的另一个设备或浏览器)
  • 注意Cookie的过期时间

方法一:通过开发者工具手动添加

1 打开目标网站(未登录状态)

2F12打开开发者工具

3 切换到ApplicationCookies

4 在Cookie列表空白处双击,可以添加新Cookie

5 填写Cookie的Name和Value,其他字段保持默认或根据需要填写

6 刷新页面(F5),如果Cookie有效,应该会自动登录

手动添加Cookie示意图

Name Value Domain Path user_id 123456 .example.com / session_id abc123xyz .example.com / ← 双击空白行添加新Cookie 操作步骤: 1. 双击空白行 2. 输入Name和Value 3. 按Enter保存

在Cookie表格底部空白行双击,输入Name和Value

方法二:使用控制台脚本设置

// 步骤1: 打开控制台 (Ctrl+Shift+J 或 F12 → Console)
// 步骤2: 粘贴以下代码并修改Cookie值

// 设置单个Cookie
document.cookie = "session_id=your_session_value; path=/; domain=.example.com";

// 设置多个Cookie
document.cookie = "user_id=123456; path=/";
document.cookie = "auth_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9; path=/";

// 设置带过期时间的Cookie (7天后过期)
const expires = new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toUTCString();
document.cookie = `session_id=abc123; expires=${expires}; path=/`;

// 步骤3: 刷新页面
location.reload();

完整示例

// 假设你要登录 https://example.com
// 你已经从另一个浏览器获取到了以下Cookie:
// session_id=abc123xyz

// 1. 打开 https://example.com (未登录状态)
// 2. 按F12打开控制台
// 3. 粘贴并执行以下代码:

document.cookie = "session_id=abc123xyz; path=/; domain=.example.com";
console.log("Cookie已设置,正在刷新页面...");
setTimeout(() => location.reload(), 1000);

// 4. 页面刷新后应该会自动登录

4.2 Firefox手动设置Cookie

方法一:通过存储面板设置

Firefox的开发者工具不支持直接在存储面板中手动添加Cookie,需要使用控制台脚本方法。

方法二:使用控制台脚本(推荐)

1 打开目标网站(未登录状态)

2Ctrl+Shift+K(或Cmd+Option+K)打开Web控制台

3 粘贴以下代码并修改Cookie值:

// Firefox控制台设置Cookie
document.cookie = "session_id=your_session_value; path=/; domain=.example.com";

// 验证Cookie是否设置成功
console.log("当前Cookie:", document.cookie);

// 刷新页面
location.reload();

方法三:使用Firefox扩展(推荐新手)

安装"Cookie Editor""EditThisCookie"扩展,可以更方便地管理Cookie:

  1. 访问Firefox附加组件市场搜索"Cookie Editor"
  2. 点击"添加到Firefox"安装
  3. 打开目标网站,点击浏览器工具栏的Cookie Editor图标
  4. 点击"+"按钮添加新Cookie
  5. 填写Name和Value,点击保存
  6. 刷新页面即可登录

Cookie Editor扩展界面

example.com C Cookie Editor + 添加 session_id abc123... auth_token eyJhbGc... Name: session_id Value: your_value_here 保存 点击右上角扩展图标 → 弹出Cookie管理面板 → 点击"+"添加新Cookie

点击浏览器右上角图标 → 弹出Cookie管理面板 → 点击"+"添加Cookie

4.3 使用脚本自动登录

如果你需要频繁使用Cookie登录,可以编写一个自动化脚本。以下是使用Tampermonkey油猴脚本的示例:

1安装Tampermonkey扩展

2创建新脚本

点击Tampermonkey图标 → 创建新脚本 → 粘贴以下代码:

// ==UserScript==
// @name         自动Cookie登录
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  自动设置Cookie并登录网站
// @author       You
// @match        https://example.com/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    
    // 配置区域 - 修改为你的Cookie值
    const COOKIES = {
        'session_id': 'your_session_value_here',
        'user_id': '123456',
        'auth_token': 'your_token_here'
    };
    
    // 检查是否已登录
    function isLoggedIn() {
        // 根据网站实际情况修改判断逻辑
        return document.querySelector('.user-profile') !== null;
    }
    
    // 设置Cookie
    function setCookies() {
        for (const [name, value] of Object.entries(COOKIES)) {
            document.cookie = `${name}=${value}; path=/; domain=.example.com`;
        }
        console.log('[Auto Login] Cookies已设置');
    }
    
    // 主逻辑
    if (!isLoggedIn()) {
        console.log('[Auto Login] 检测到未登录,正在设置Cookie...');
        setCookies();
        
        // 等待1秒后刷新页面
        setTimeout(() => {
            console.log('[Auto Login] 刷新页面...');
            location.reload();
        }, 1000);
    } else {
        console.log('[Auto Login] 已登录');
    }
})();

3保存并启用脚本

点击文件 → 保存(或按Ctrl+S),脚本会自动启用。下次访问目标网站时会自动设置Cookie并登录。

脚本使用说明

  • 修改@match为你的目标网站URL
  • COOKIES对象中填写你的Cookie名称和值
  • 根据网站实际情况修改isLoggedIn()函数的判断逻辑
  • 脚本会在页面加载时自动运行

5. 高级技巧

5.1 批量导入导出Cookie

使用浏览器扩展或脚本批量管理Cookie:

// 导出所有Cookie为JSON格式
function exportCookies() {
    const cookies = {};
    document.cookie.split(';').forEach(c => {
        const [name, value] = c.trim().split('=');
        cookies[name] = value;
    });
    
    const json = JSON.stringify(cookies, null, 2);
    console.log('导出的Cookie:');
    console.log(json);
    
    // 复制到剪贴板
    navigator.clipboard.writeText(json).then(() => {
        console.log('已复制到剪贴板');
    });
    
    return json;
}

// 批量导入Cookie
function importCookies(cookiesJson) {
    const cookies = JSON.parse(cookiesJson);
    const domain = window.location.hostname;
    
    for (const [name, value] of Object.entries(cookies)) {
        document.cookie = `${name}=${value}; path=/; domain=${domain}`;
    }
    
    console.log(`成功导入 ${Object.keys(cookies).length} 个Cookie`);
    setTimeout(() => location.reload(), 1000);
}

// 使用示例:
// 1. 导出: exportCookies()
// 2. 导入: importCookies('{"session_id":"abc","user_id":"123"}')

5.2 Cookie持久化保存

// 将Cookie保存到localStorage,防止关闭浏览器后丢失
function saveCookiesToStorage() {
    const cookies = {};
    document.cookie.split(';').forEach(c => {
        const [name, value] = c.trim().split('=');
        cookies[name] = value;
    });
    localStorage.setItem('saved_cookies', JSON.stringify(cookies));
    console.log('Cookie已保存到本地存储');
}

// 从localStorage恢复Cookie
function restoreCookiesFromStorage() {
    const saved = localStorage.getItem('saved_cookies');
    if (!saved) {
        console.log('没有保存的Cookie');
        return;
    }
    
    const cookies = JSON.parse(saved);
    for (const [name, value] of Object.entries(cookies)) {
        document.cookie = `${name}=${value}; path=/`;
    }
    console.log('Cookie已恢复');
    location.reload();
}

// 使用方法:
// 登录后执行: saveCookiesToStorage()
// 需要登录时执行: restoreCookiesFromStorage()

5.3 跨浏览器同步Cookie

通过生成二维码或分享链接的方式,在不同浏览器间同步Cookie:

// 生成Cookie分享链接
function generateCookieShareLink() {
    const cookies = {};
    document.cookie.split(';').forEach(c => {
        const [name, value] = c.trim().split('=');
        cookies[name] = value;
    });
    
    const encoded = btoa(JSON.stringify(cookies));
    const shareUrl = `${window.location.origin}?cookies=${encoded}`;
    
    console.log('分享链接:', shareUrl);
    navigator.clipboard.writeText(shareUrl);
    alert('分享链接已复制到剪贴板!');
    
    return shareUrl;
}

// 从URL参数中导入Cookie
function importCookiesFromUrl() {
    const params = new URLSearchParams(window.location.search);
    const encoded = params.get('cookies');
    
    if (!encoded) {
        console.log('URL中没有Cookie数据');
        return;
    }
    
    try {
        const cookies = JSON.parse(atob(encoded));
        for (const [name, value] of Object.entries(cookies)) {
            document.cookie = `${name}=${value}; path=/`;
        }
        console.log('Cookie导入成功');
        
        // 清除URL参数并刷新
        window.history.replaceState({}, '', window.location.pathname);
        location.reload();
    } catch (e) {
        console.error('Cookie导入失败:', e);
    }
}

// 页面加载时自动检查
importCookiesFromUrl();

6. 安全注意事项

重要安全提示

  • 不要分享Cookie: Cookie相当于你的登录凭证,泄露后他人可以登录你的账号
  • 注意Cookie来源: 只使用自己合法获取的Cookie,不要使用来历不明的Cookie
  • 定期更换密码: 使用Cookie登录后,建议定期修改账号密码
  • HTTPS连接: 尽量只在HTTPS网站使用Cookie,避免被中间人攻击截获
  • 公共电脑: 在公共电脑使用后,记得清除Cookie和浏览记录
  • HttpOnly Cookie: 某些重要的Cookie设置了HttpOnly标志,无法通过JavaScript读取

6.1 如何清除Cookie

Chrome清除Cookie

  1. Ctrl+Shift+Delete打开清除浏览数据窗口
  2. 选择时间范围(如"过去1小时"或"全部时间")
  3. 勾选Cookie及其他网站数据
  4. 点击清除数据

Firefox清除Cookie

  1. Ctrl+Shift+Delete打开清除历史记录窗口
  2. 选择清除时间范围
  3. 勾选Cookie
  4. 点击立即清除

使用脚本清除特定Cookie

// 清除指定Cookie
function deleteCookie(name) {
    document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;
    console.log(`Cookie "${name}" 已删除`);
}

// 清除所有Cookie
function deleteAllCookies() {
    const cookies = document.cookie.split(';');
    cookies.forEach(cookie => {
        const name = cookie.split('=')[0].trim();
        deleteCookie(name);
    });
    console.log('所有Cookie已清除');
    location.reload();
}

// 使用示例
deleteCookie('session_id');  // 删除指定Cookie
// deleteAllCookies();       // 删除所有Cookie

6.2 Cookie有效期管理

Cookie有两种类型:

  • 会话Cookie: 浏览器关闭后自动失效,没有设置过期时间
  • 持久Cookie: 设置了过期时间,在过期前一直有效
// 检查Cookie是否过期
function checkCookieExpiry() {
    // 大多数网站的Cookie过期时间无法通过JavaScript直接读取
    // 只能通过开发者工具的Application/Storage面板查看
    
    console.log('当前所有Cookie:');
    document.cookie.split(';').forEach(c => {
        console.log('  -', c.trim());
    });
    
    console.log('\n提示: 查看过期时间请使用开发者工具');
}

// 设置长期有效的Cookie (30天)
function setLongTermCookie(name, value, days = 30) {
    const expires = new Date(Date.now() + days * 24 * 60 * 60 * 1000);
    document.cookie = `${name}=${value}; expires=${expires.toUTCString()}; path=/`;
    console.log(`Cookie "${name}" 已设置,${days}天后过期`);
}

// 使用示例
setLongTermCookie('remember_me', 'true', 90);  // 90天后过期

学习总结

通过本教程,你已经掌握了:

  • ✅ Cookie的基本概念和工作原理
  • ✅ 在Chrome和Firefox中查看和获取Cookie
  • ✅ 手动设置Cookie实现免密登录
  • ✅ 使用控制台脚本批量管理Cookie
  • ✅ 使用油猴脚本实现自动化登录
  • ✅ Cookie的安全注意事项和最佳实践

建议在安全的环境中练习这些技术,不要将Cookie用于非法用途!

常见问题

Q: 为什么设置了Cookie还是无法登录?

A: 可能原因:1) Cookie已过期 2) Cookie的Domain或Path不正确 3) 网站需要多个Cookie配合 4) 网站有额外的安全验证(如IP检查)

Q: HttpOnly的Cookie能否通过JavaScript设置?

A: 不能。HttpOnly Cookie只能由服务器通过HTTP响应头设置,JavaScript无法读取或修改这类Cookie,这是一种安全保护机制。

Q: 如何知道哪些Cookie是登录必需的?

A: 通常名为session_id、auth_token、user_id等的Cookie是关键。可以尝试逐个删除Cookie后刷新页面,观察是否被登出,从而确定必需的Cookie。

返回知识库 下一篇:XSS Payload编写技巧