iOS 系统会自动将Safari或APP中网络请求的cookie保存为文件,APP的cookie保存路径为
APP的沙盒路径:var/mobile/Containers/Data/Application/x-x-x/Library/Cookies/Cookies.binarycookies
Cookies.binarycookies是二进制文件,文件结构有个魔术头:字符串:“cook”,二进制为636f6f6b,所以
Cookies.binarycookies数据又被称为63数据。
要对文件内容进行存取,首先得了解文件结构:
| 字段 | 大小端 | 类型 | 大小 | 备注 |
| Magic | 大端 | UTF-8 | 4 | "cook", no terminator |
| Number of pages | 大端 | Unsigned Int | 4 | |
| Page N size | 大端 | Unsigned Int | 4 | Repeat for N pages |
| Page | Page N size | Page N content |
Page(可以理解为cookie属性中domain,即相同domain的cookie保存在一个page里)
| 字段 | 大小端 | 类型 | 大小 | 备注 |
| Header | 大端 | 4 | 0x00000100 | |
| Number of cookies | 小端 | Unsigned Int | 4 | |
| Cookie N offset | 小端 | Unsigned Int | 4 | Repeat for N cookies |
| Footer | 4 | 0x00000000 | ||
| Cookie N | Cookie N size | Cookie N content |
Cookie
| 字段 | 大小端 | 类型 | 大小 | 备注 |
| Size | 小端 | Unsigned Int | 4 | Size in bytes |
| Version | 小端 | Unsigned Int | 4 | 0 or 1 |
| Flags | 小端 | Bit field | 4 | isSecure = 1, isHTTPOnly = 1 << 2, unknown1 = 1 << 3, unknown2 = 1 << 4 |
| Has port | 小端 | Unsigned Int | 4 | 0 or 1 |
| URL Offset | 小端 | Unsigned Int | 4 | Offset from the start of the cookie |
| Name Offset | 小端 | Unsigned Int | 4 | Offset from the start of the cookie |
| Path Offset | 小端 | Unsigned Int | 4 | Offset from the start of the cookie |
| Value Offset | 小端 | Unsigned Int | 4 | Offset from the start of the cookie |
| Comment Offset | 小端 | Unsigned Int | 4 | Offset from the start of the cookie, 0x00000000 if not present |
| Comment URL Offset | 小端 | Unsigned Int | 4 | Offset from the start of the cookie, 0x00000000 if not present |
| Expiration | 小端 | Double | 8 | Number of seconds since 00:00:00 UTC on 1 January 2001 |
| Creation | 小端 | Double | 8 | Number of seconds since 00:00:00 UTC on 1 January 2001 |
| Port | 小端 | Unsigned Int | 2 | Only present if the "Has port" field is 1 |
| Comment | 小端 | String | Null-terminated, optional | |
| Comment URL | 小端 | String | Null-terminated, optional | |
| URL | 小端 | String | Null-terminated | |
| Name | 小端 | String | Null-terminated | |
| Path | 小端 | String | Null-terminated | |
| Value | 小端 | String | Null-terminated |
上面的Creation字段指的是,保存cookie这一时刻相对于2001/1/1 00:00:00的时间戳
Expiration指:如果cookie有max-age属性,Creation + max-age;如果cookie有expires属性,为expires转为时间戳
了解文件结构后,具体存取就很简单了,只要按照结构进行字节操作就可以了,不再赘述。
iOS系统会自动将网络请求的cookie保存为Cookies.binarycookies文件,该文件是二进制文件,有魔术头“cook”,其数据也被称为63数据。要存取文件内容,需了解其结构,包括Page和Cookie等,了解后按结构进行字节操作即可。
2916

被折叠的 条评论
为什么被折叠?



