读取和写入 Apple 的 .binarycookies 文件
包含 BinaryCookies 库和 dumpcookies
可执行文件。
使用 brew install interstateone/formulae/dump-cookies
安装 dumpcookies
,或从源代码构建。
我已使用真实的 .binarycookies 文件和使用 HTTPCookieStorage API 生成的文件测试了 BinaryCookies 库。它可以完全保真地解码和重新编码这些文件,尽管目前有两个标志的含义未知。
字段 | 字节序 | 类型 | 大小 | 描述 |
---|---|---|---|---|
魔数 | BE (大端) | UTF-8 | 4 | "cook",无终止符 |
页面数量 | BE (大端) | 无符号整数 | 4 | |
页面 N 大小 | BE (大端) | 无符号整数 | 4 | 为 N 个页面重复 |
页面 N | 页面 N 大小 | 页面 N 内容 | ||
校验和 | BE (大端) | 无符号整数 | 4 | 对每个页面的每第 4 个字节求和 |
页脚 | BE (大端) | 8 | 0x071720050000004b | |
元数据 | 二进制属性列表 | 包含 NSHTTPCookieAcceptPolicy 值 |
字段 | 字节序 | 类型 | 大小 | 描述 |
---|---|---|---|---|
头部 | BE (大端) | 4 | 0x00000100 | |
Cookie 数量 | LE (小端) | 无符号整数 | 4 | |
Cookie N 偏移量 | LE (小端) | 无符号整数 | 4 | 为 N 个 cookie 重复 |
页脚 | 4 | 0x00000000 | ||
Cookie N | Cookie N 大小 | Cookie N 内容 |
字段 | 字节序 | 类型 | 大小 | 描述 |
---|---|---|---|---|
大小 | LE (小端) | 无符号整数 | 4 | 大小 (字节) |
版本 | LE (小端) | 无符号整数 | 4 | 0 或 1 |
标志 | LE (小端) | 位字段 | 4 | isSecure = 1, isHTTPOnly = 1 << 2, unknown1 = 1 << 3, unknown2 = 1 << 4 |
有端口 | LE (小端) | 无符号整数 | 4 | 0 或 1 |
URL 偏移量 | LE (小端) | 无符号整数 | 4 | 从 cookie 开始处的偏移量 |
名称偏移量 | LE (小端) | 无符号整数 | 4 | 从 cookie 开始处的偏移量 |
路径偏移量 | LE (小端) | 无符号整数 | 4 | 从 cookie 开始处的偏移量 |
值偏移量 | LE (小端) | 无符号整数 | 4 | 从 cookie 开始处的偏移量 |
注释偏移量 | LE (小端) | 无符号整数 | 4 | 从 cookie 开始处的偏移量,如果不存在则为 0x00000000 |
注释 URL 偏移量 | LE (小端) | 无符号整数 | 4 | 从 cookie 开始处的偏移量,如果不存在则为 0x00000000 |
过期时间 | LE (小端) | 双精度浮点数 | 8 | 自 2001 年 1 月 1 日 00:00:00 UTC 以来的秒数 |
创建时间 | LE (小端) | 双精度浮点数 | 8 | 自 2001 年 1 月 1 日 00:00:00 UTC 以来的秒数 |
端口 | LE (小端) | 无符号整数 | 2 | 仅当 "Has port" 字段为 1 时才存在 |
注释 | LE (小端) | 字符串 | 空终止,可选 | |
注释 URL | LE (小端) | 字符串 | 空终止,可选 | |
URL | LE (小端) | 字符串 | 空终止 | |
名称 | LE (小端) | 字符串 | 空终止 | |
路径 | LE (小端) | 字符串 | 空终止 | |
值 | LE (小端) | 字符串 | 空终止 |