200字
【浏览器插件】一键复制Cookie\Token
2025-12-24
2025-12-24

image-SRnl.png

Cookie & Token Getter

一个轻量的 Chrome/Edge 浏览器扩展,用于在当前站点下采集:

  • 所有可访问的 Cookie(需授予当前站点权限)
  • 页面内常见的 Token 线索(localStorage / sessionStorage / 常见 meta/input

并支持“一键采集并复制”为 JSON 文本。

Github链接浏览器插件Cookie一键采集器

安装与使用

  1. 打开浏览器扩展页面:
    • Chrome: chrome://extensions
    • Edge: edge://extensions
  2. 开启右上角“开发者模式”。
  3. 点击“加载已解压的扩展程序”,选择项目目录:d:\测试\daily-code\91-cookie获取器
  4. 点击工具栏中的扩展图标打开弹窗。
  5. 点击“一键采集并复制”:
    • 首次在某站点使用会请求该站点权限,用于读取该站点的 Cookie。
    • 复制成功后,JSON 已在剪贴板,可直接粘贴到需要的位置。

权限说明

  • optional_host_permissions: <all_urls>:运行时仅请求当前站点的权限,最小化默认权限范围。
  • cookies:读取当前站点的 Cookie(包括 HttpOnly,仅可通过扩展 API 获取)。
  • activeTab + scripting:向当前页注入只读脚本,扫描 localStorage/sessionStorage 与常见 meta/input
  • 扩展不会上传或发送任何数据;所有信息仅在本地展示与复制。

输出结构示例

{
  "site": { "url": "https://example.com/path", "origin": "https://example.com" },
  "timestamp": "2025-01-01T12:34:56.789Z",
  "cookies": [ { "name": "session", "value": "..." } ],
  "tokens": {
    "fromCookies": [ { "name": "access_token", "value": "..." } ],
    "fromLocalStorage": [ { "key": "token", "value": "..." } ],
    "fromSessionStorage": [],
    "fromMetaTags": [ { "name": "csrf-token", "content": "..." } ],
    "fromInputs": []
  }
}

Python脚本:一键获取并定时刷新 Token

如果你希望在命令行直接获取 sessionStorage['token'],并可间隔刷新,使用 scripts/get_beyond_token.py

依赖安装

  • 安装 Playwright Python:
  • pip install playwright

说明:脚本默认使用你本机已安装的 Chrome 或 Edge,并复用你的登录状态(通过用户数据目录),无需额外安装浏览器。

运行示例

  • 单次获取(默认Chrome,默认配置目录Default):
  • python scripts/get_beyond_token.py --url https://beyond.sf-express.com/kacs/macorOrder/orderManage --wait --only-token
  • 每5分钟刷新一次并输出带时间戳:
  • python scripts/get_beyond_token.py --interval 300 --wait --reload

常用参数

  • --browser chrome|edge:指定浏览器,默认 chrome
  • --profile Default:用户配置目录名称,默认 Default
  • --user-data-dir <路径>:直接指定用户数据目录(可覆盖 profile 推断)。
  • --url <地址>:目标页面URL。
  • --key <键名>:sessionStorage键名,默认 token
  • --interval <秒>:循环刷新间隔;为0则仅执行一次。
  • --reload:每次读取前刷新页面(某些站点token仅刷新后更新)。
  • --wait:等待token出现(适合SPA登录后延迟写入token)。
  • --only-token:只打印token纯文本(适合管道或脚本嵌入)。
  • --headless:无头运行(可能影响需要可视化交互的登录流程)。

重要提示

  • 为避免用户数据目录被占用,请尽量在未运行的同一浏览器下执行脚本(关闭所有Chrome/Edge窗口),以防持久化上下文启动失败。
  • 该脚本通过你的本地浏览器用户数据目录复用登录态,只在本机读取,不会上传任何数据。
  • 如果你的token不是 sessionStorage['token'],可用 --key 指定正确键名。

为方便使用,已将“实时采集”(原 get_cookies.py)与“读取归档”(原 cookie_archive_api.py)整合为一个服务脚本:scripts/cookie_service.py

启动服务:

python scripts/cookie_service.py --host 127.0.0.1 --port 8011

服务端点:

  • GET /cookies:实时采集指定 url 的 Cookie(复用本机 Chrome/Edge 已登录用户数据目录)。
  • GET /cookie:读取归档文件(默认项目根目录 cookie.json,由扩展后台定时写入)。
  • GET /health:健康检查与状态自检(是否已收到扩展推送、最近一次推送信息)。
  • GET /plugin:直接返回扩展后台最近一次推送的数据(无需写文件)。
  • POST /ingest:由扩展后台推送最新采集的数据(JSON)。

通用参数:

  • domain:按域过滤(包含匹配),如 example.com
  • names:按 Cookie 名过滤(逗号分隔),如 sid,token
  • format:输出 jsonheaderheader 返回 name=value; name2=value2)。

/cookies 额外参数:

  • url:必填;要采集的页面地址。
  • browserchrome|edge,默认 chrome
  • profile:浏览器配置目录名,默认 Default
  • user_data_dir:自定义用户数据目录绝对路径(优先生效)。
  • headless1 开启无头模式;默认关闭。

/cookie 额外参数:

  • latest:是否仅返回最新记录(1/0,默认 1)。
  • path:归档文件路径,默认项目根目录 cookie.json

示例:

curl "http://127.0.0.1:8011/health"
curl "http://127.0.0.1:8011/cookies?url=https://example.com&format=header"
curl "http://127.0.0.1:8011/cookies?url=https://example.com&domain=example.com&names=sid,token&format=json"
curl "http://127.0.0.1:8011/cookie?latest=1&format=json"
curl "http://127.0.0.1:8011/cookie?latest=1&format=header"
curl "http://127.0.0.1:8011/plugin?format=json"
curl "http://127.0.0.1:8011/plugin?format=header&domain=example.com&names=sid,token"

提示:

  • 首次使用请执行 pip install playwright && playwright install
  • 若端口占用或连接错误(如 10061),可更换 --port,检查防火墙或确认服务已启动。
  • 扩展后台每分钟自动采集并会尝试 POST /ingest 推送;弹窗点击“一键复制”后也会即时推送。
  • 若不确定联通情况,可先调用 GET /health 检查服务可达与插件推送状态。

一键保存到当前目录(scripts/save_cookies.py)

无需参数,直接运行即可尝试保存插件最新推送的 Cookie 到当前目录(失败则回退读取归档):

python scripts/save_cookies.py

可选参数:

  • --host/--port:默认 127.0.0.1:8011
  • --domain:按域过滤,如 beyond.sf-express.com
  • --names:按Cookie名过滤(逗号分隔),如 sid,token
  • --formatjson|header,默认 json(保存为 cookie.jsoncookie.txt
  • --filename:自定义保存文件名
  • --wait:等待插件首次推送的秒数,如 --wait 3

示例:

python scripts/save_cookies.py --domain beyond.sf-express.com --names sid,token --format header
python scripts/save_cookies.py --wait 3 --format json --filename latest_cookie.json

说明:脚本会优先调用 GET /plugin(直接读取扩展最近推送的数据);若暂时无推送则回退到 GET /cookie?latest=1 读取归档文件。

(以下为旧的独立脚本说明,已整合,建议改用统一服务)

Python脚本:一键获取 Cookies(单次)

Python 脚本 (scripts/get_cookies.py)

提供一个本地HTTP服务,用于通过API动态获取指定网站的Cookies(包括HttpOnly)。

安装依赖

pip install playwright
pip install requests  # 如果你需要从另一个Python脚本调用API

启动服务器

要启动Cookie获取服务器,请运行:

python scripts/get_cookies.py

默认情况下,服务器将在 http://127.0.0.1:8008 上运行。你可以通过 --host--port 参数进行自定义。

API 端点

服务器暴露一个 GET /cookies 端点,用于获取cookie。

请求参数:

  • url (必需): 目标网站的URL。
  • browser (可选): chromeedge (默认为 chrome)。
  • profile (可选): 浏览器用户配置目录名 (默认为 Default)。
  • domain (可选): 按域名过滤cookie。
  • names (可选): 仅返回指定名称的cookie,多个名称用逗号分隔 (例如, token,sessionid)。

使用示例

1. 使用 cURL:

curl "http://127.0.0.1:8008/cookies?url=https://beyond.sf-express.com/kacs/macorOrder/orderManage"

2. 在 Python 脚本中调用:

import requests
import json

api_url = "http://127.0.0.1:8008/cookies"
params = {
    "url": "https://beyond.sf-express.com/kacs/macorOrder/orderManage"
}

response = requests.get(api_url, params=params)

if response.status_code == 200:
    cookies_data = response.json()
    print(json.dumps(cookies_data, indent=2, ensure_ascii=False))
else:
    print(f"获取失败,状态码: {response.status_code}")
    print(response.text)

重要提示:

  • 复用登录态: 此脚本依赖于Playwright的持久化上下文功能,以复用你本地Chrome/Edge浏览器实例中已存在的登录会话。
  • 浏览器实例: 运行脚本时,请确保没有其他正在运行的同类型浏览器实例(Chrome或Edge)正在使用相同的用户数据目录,否则可能会导致启动失败。
  • 用户数据目录: 如果你的浏览器配置文件不是默认的 Default,你可以通过 --profile 参数指定,或者直接通过 --user-data-dir 提供完整路径。

本地接口:读取扩展写入的 cookie.json

扩展后台每分钟会把采集到的数据归档到项目路径的 cookie.json(需把浏览器默认下载目录设置为本项目路径)。
你可以使用 scripts/cookie_archive_api.py 启动一个本地HTTP服务,通过 GET 请求直接读取该文件:

启动服务

python scripts/cookie_archive_api.py --host 127.0.0.1 --port 8010 --path d:\测试\daily-code\91-cookie获取器\cookie.json

调用示例

  • 获取最新一条记录(JSON):
curl "http://127.0.0.1:8010/cookie?latest=1&format=json"
  • 仅输出 Cookie 头格式(适合 curl/requests):
curl "http://127.0.0.1:8010/cookie?latest=1&format=header"
  • 过滤域名或指定 Cookie 名:
curl "http://127.0.0.1:8010/cookie?latest=1&domain=beyond.sf-express.com&names=token,sessionid"

说明:

  • 默认读取项目根目录下的 cookie.json,你也可以通过 path 参数指定其他路径。
  • 如果文件不存在或为空,接口会返回错误信息或空数据。
  • format=header 时输出形如 name=value; name2=value2 的文本;format=json 输出完整 JSON。
  • 导出为 JSON(包含 HttpOnly)并打印:
  • python scripts/get_cookies.py --url https://beyond.sf-express.com/kacs/macorOrder/orderManage
  • 只输出为请求头格式(适合 curl / requests):
  • python scripts/get_cookies.py --url https://beyond.sf-express.com/kacs/macorOrder/orderManage --only-header
  • 过滤域名或指定Cookie名:
  • python scripts/get_cookies.py --url https://beyond.sf-express.com/kacs/macorOrder/orderManage --domain beyond.sf-express.com --names token sessionid
  • 保存到文件:
  • python scripts/get_cookies.py --url https://beyond.sf-express.com/kacs/macorOrder/orderManage --to-file D:\\cookies.json

注意

  • 脚本复用你本机浏览器的登录状态(Chrome/Edge 的用户数据目录),若启动失败请关闭所有浏览器窗口后再试。
  • --profile 默认为 Default;如你使用的是其他配置(如 Profile 1),请加 --profile "Profile 1" 或用 --user-data-dir 指定完整目录。
  • 访问目标URL有助于加载正确域的Cookie;若你只需域名级别,可将 --url 设置为该站点任何页面。

扩展自动写入文件(每分钟)

扩展后台每分钟自动采集并复制,同时在“默认下载目录”的当前路径写入两个文件:

  • JSON:cookie.json(按格式化时间追加记录的存档)
  • 日志:token_update_log.txt(每次更新一行时间戳 + token)

如果你希望就写在本项目当前目录(例如 d:\测试\daily-code\91-cookie获取器),请把浏览器默认下载目录设置为该路径。

设置步骤(Chrome/Edge)

  • 进入设置 → 下载内容(Downloads),将默认下载位置改为:d:\测试\daily-code\91-cookie获取器
  • 重新加载本扩展后,后台每分钟会在该目录生成/覆盖:
    • cookie.json
    • token_update_log.txt

说明

  • 浏览器扩展无法直接写任意绝对路径或扩展目录;通过 downloads API 在“默认下载目录”写入文件,并使用 conflictAction=overwrite 覆盖写入。
  • 剪贴板复制由隐形页面执行,无需手动点击,每次采集均会刷新剪贴板中的内容。
  • 采集前提:目标站点页面处于打开状态(例如在一个标签页登录到 https://beyond.sf-express.com/kacs/macorOrder/orderManage),后台脚本会在该标签页内执行采集。

JSON存档格式

cookie.json 内容为一个对象,内部维护 records 数组,每次追加一条:

{
  "records": [
    {
      "time": "2025-11-05 16:45:00",
      "data": { "site": { "url": "...", "origin": "..." }, "cookies": [ ... ], "tokens": { ... } }
    }
  ]
}

定制与扩展

  • 如需匹配更多 Token 关键字或格式,可修改 src/popup.js 中的 keyHints 与判定正则(JWT/Bearer/Hex/Base64)。
  • 如果需要监听网络请求中的 Authorization 头,建议另建 DevTools 扩展或使用 webRequest 观察(可能需额外权限与复杂度,此项目未包含)。

注意事项

  • 某些网站会将 Token 存在更隐蔽的地方或采用加密、隔离存储;本扩展提供的是通用“线索扫描”,并不保证 100% 命中。
  • 对于 HttpOnly Cookie:页面脚本不可见,但使用扩展的 cookies API 能读取。
  • 如果拒绝站点权限,请求不会再次弹窗,但 Cookie 部分将无法采集;页面内 Token 扫描仍可用。
【浏览器插件】一键复制Cookie\Token
作者
一晌小贪欢
发表于
2025-12-24
License
CC BY-NC-SA 4.0

评论