Netscape cookies.txt 格式
所有命令行工具至今仍在使用的格式。每条 Cookie 占一行,共七个字段,用制表符分隔 — 不是空格。以 # 开头的行是注释,只有一个刻意设计的例外。
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.
.example.com TRUE / TRUE 1798761600 session_id 8f14e45fceea167a5a36dedd4bea2543
#HttpOnly_.example.com TRUE / TRUE 1798761600 auth_token eyJhbGciOiJIUzI1NiJ9.e30.ZRrHA1JJJW8opsbCGfG_HACGpVUMN_a9IV7pAx_Zmeo
example.com FALSE /account FALSE 1798761600 theme dark
.example.com TRUE / FALSE 0 cart_preview tmp-4471七个字段
| # | 字段 | 含义 | 取值 |
|---|---|---|---|
| 1 | domain | Cookie 所属的主机。开头的点表示它同样作用于子域名。 | .example.com |
| 2 | includeSubdomains | 是否包含子域名。与开头的点含义重复,各解析器对以哪个为准并不一致 — 本站以点为准。 | TRUE 或 FALSE |
| 3 | path | Cookie 生效的 URL 路径。 | / 或 /app |
| 4 | secure | 是否仅通过 HTTPS 发送。 | TRUE 或 FALSE |
| 5 | expires | 以秒为单位的 Unix 时间戳。0 表示会话 Cookie。 | 1767225600 或 0 |
| 6 | name | Cookie 名称。 | session_id |
| 7 | value | Cookie 的值,原样取到行尾,其中可以自由包含 = 和 ;。 | abc123 |
#HttpOnly_ 前缀
原始格式无法表达 http-only 属性,于是 curl 增加了一种写法:在域名前加上 #HttpOnly_ 前缀。由于该行以井号开头,不理解它的解析器会把它当成注释跳过,而不会报错。curl、wget 和 yt-dlp 都能识别这个前缀。
容易踩的坑
分隔符是制表符。通过聊天窗口或网页表单转发文件时,制表符经常被换成空格,严格的解析器就会失败。本转换器仍会解析这类文件,并给出提示。
值一直延伸到行尾,因此可以不转义地包含 = 和 ;。按这些字符切分会破坏 JWT 和 base64 内容。
有效期已过的行依然是合法的。工具只会忽略这条 Cookie,看起来就跟它不存在一模一样。
有些程序在值为空时会省略末尾的制表符,于是只剩下六个字段而不是七个。
使用这一格式的工具
- curl
- curl -b cookies.txt 发送,-c cookies.txt 保存。
- wget
- --load-cookies 与 --save-cookies。
- yt-dlp
- --cookies cookies.txt,这也是转换浏览器导出文件最常见的原因。
- Python requests
- 通过 http.cookiejar.MozillaCookieJar 使用。
在转换器中试试
转换器