
Cookie & Token Getter
一个轻量的 Chrome/Edge 浏览器扩展,用于在当前站点下采集:
- 所有可访问的
Cookie(需授予当前站点权限) - 页面内常见的
Token线索(localStorage/sessionStorage/ 常见meta/input)
并支持“一键采集并复制”为 JSON 文本。
安装与使用
- 打开浏览器扩展页面:
- Chrome:
chrome://extensions - Edge:
edge://extensions
- Chrome:
- 开启右上角“开发者模式”。
- 点击“加载已解压的扩展程序”,选择项目目录:
d:\测试\daily-code\91-cookie获取器。 - 点击工具栏中的扩展图标打开弹窗。
- 点击“一键采集并复制”:
- 首次在某站点使用会请求该站点权限,用于读取该站点的 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指定正确键名。
统一 Cookie 服务(scripts/cookie_service.py)
为方便使用,已将“实时采集”(原 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:输出json或header(header返回name=value; name2=value2)。
/cookies 额外参数:
url:必填;要采集的页面地址。browser:chrome|edge,默认chrome。profile:浏览器配置目录名,默认Default。user_data_dir:自定义用户数据目录绝对路径(优先生效)。headless:1开启无头模式;默认关闭。
/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--format:json|header,默认json(保存为cookie.json或cookie.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(可选):chrome或edge(默认为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.jsontoken_update_log.txt
说明
- 浏览器扩展无法直接写任意绝对路径或扩展目录;通过
downloadsAPI 在“默认下载目录”写入文件,并使用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% 命中。
- 对于
HttpOnlyCookie:页面脚本不可见,但使用扩展的cookiesAPI 能读取。 - 如果拒绝站点权限,请求不会再次弹窗,但 Cookie 部分将无法采集;页面内 Token 扫描仍可用。