好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 qazx84265 于 2019-6-21 11:15 编辑
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转为时间戳
了解文件结构后,具体存取就很简单了,只要按照结构进行字节操作就可以了,不再赘述。
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|