session-capture:告别 F12,一键抓取网站完整认证会话全解
一、工具简介
session-capture是开源工具(Chrome 插件 + Python CLI),解决传统手动抓会话的繁琐流程:F12→Application 复制 Cookie、LocalStorage→Network 查找 CSRF 令牌→手动拼接请求配置整套操作,浏览器登录网页后点击一下即可导出全套认证上下文。
- Chrome 插件商店:Session Capture Exporter
- 核心价值:一次性采集 Cookie、LocalStorage、SessionStorage、自动嗅探 CSRF Token、常用请求头(Referer、UA)
采集的完整认证数据
- 全部域名绑定 Cookies(有效期、Domain、Path、Secure、HttpOnly 完整属性)
- LocalStorage / SessionStorage 本地存储鉴权数据
- 自动解析页面 CSRF(meta 标签、hidden 输入框、前端 JS 变量三种来源)
- 自动携带浏览器真实 User-Agent、Referer 等关键请求头
导出格式(适配爬虫 / 接口测试)
JSON、Env 环境变量、Netscape Cookie 文件、Curl 命令四种主流格式,一键复制 / 下载文件。
二、两种使用方式:Chrome 插件(日常) + CLI 命令行(自动化)
方式 1:Chrome 插件可视化使用(最常用)
- 安装插件:Chrome 网上应用店搜索
Session Capture Exporter安装 - 正常在网页完成账号登录,保持登录状态(不要关闭标签页)
- 点击浏览器右上角插件图标,弹出面板直接点击【Capture】
- 选择导出格式:
- 爬虫开发:选
JSON,Python/JS 请求直接加载会话 - 终端调试:选
Curl,复制命令直接发带登录态请求 - 项目配置:选
.env,写入项目环境文件
- 爬虫开发:选
- 一键复制剪贴板 或 下载本地文件保存会话
方式 2:Python CLI 命令行(脚本自动化、服务器使用)
1)安装
bash
pip install session-capture2)基础抓取命令(拉起浏览器自动登录后抓取会话)
bash
# 拉起浏览器访问目标地址,手动登录,回车自动导出会话json capture capture https://target-web.com3)导出指定格式并保存文件
bash
# 导出curl格式到txt文件 capture capture https://xxx.com --format curl -o session_curl.txt # 导出标准cookie netscape文件(适配requests、playwright) capture capture https://xxx.com --format netscape -o cookies.txt4)读取已保存会话复用请求
bash
capture load session.json三、导出会话的实际落地用法
1、Python requests 载入导出的 JSON 会话
python
运行
import requests import json with open("session.json", "r", encoding="utf-8") as f: session_data = json.load(f) session = requests.Session() # 灌入cookie for cookie in session_data["cookies"]: session.cookies.set(cookie["name"], cookie["value"], domain=cookie["domain"]) # 带上CSRF、请求头 headers = session_data["headers"] resp = session.get("需要登录的接口地址", headers=headers)2、Curl 格式直接复制终端运行
插件导出的 curl 自带完整 Cookie + 鉴权头,粘贴终端可直接请求需要登录的接口,无需手动补参。
3、Playwright/Puppeteer 导入 Netscape Cookie 文件
python
运行
from playwright.sync_api import sync_playwright with sync_playwright() as p: browser = p.chromium.launch(headless=False) context = browser.new_context(storage_state="cookies.txt") page = context.new_page() page.goto("目标站点") # 页面自带登录状态,无需二次登录四、对比传统 F12 手动抓取的优势
表格
| 操作 | 原生 F12 手动 | session-capture 一键抓取 |
|---|---|---|
| 操作步骤 | 5~10 步,多处切换面板复制 | 点击一次完成采集 |
| CSRF 令牌 | 自己在源码 / 接口里查找,极易遗漏 | 全自动多位置匹配提取 |
| 数据完整性 | 容易漏掉 HttpOnly Cookie、Storage 字段 | 全盘读取浏览器安全存储数据 |
| 格式适配 | 复制后手动拼接 JSON/Curl | 开箱即用四种标准格式 |
| 会话时效性 | Cookie 刷新需要重新复制 | 随时重新一键捕获最新会话 |
五、安全注意事项(重中之重)
- 会话文件包含账号完整登录凭证,禁止上传到公网、Git 仓库,本地私密存放;
- 公用电脑使用后,及时清除导出的会话文件;
- 银行、支付、企业后台等高敏感站点,谨慎导出会话,避免凭据泄露;
- HttpOnly 类型 Cookie 无法被前端 JS 读取,该工具依托浏览器底层 API 可正常获取,符合浏览器安全规则。
六、常见问题
- 抓取后接口依旧 401 未登录 排查:页面实际登录失效、CSRF 令牌过期,刷新页面重新 Capture 一次即可。
- CLI 打开浏览器打不开网页 配置本机代理 / 关闭 VPN 重试,CLI 内置 Chromium 内核。
- 部分网站 CSRF 识别不到 手动在导出 JSON 里补充对应 token 字段即可,绝大多数主流网站均可自动识别。
需要我给你一份session-capture 导出会话 + requests 请求的完整可运行模板代码吗?