首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Safari 5.1 cookie格式规范

Safari 5.1 cookie格式规范
EN

Stack Overflow用户
提问于 2011-09-25 21:46:04
回答 5查看 10K关注 0票数 9

SAFARI 5.1改变了SAFARI存储cookie的方式,他们在文件的最后8个字节中添加了一种完整性控制代码:

文件为%APPDATA%\Apple Computer\Safari\Cookies\Cookies.binarycookies

有人知道最后8个字节对应的是什么吗?

CRC32检查?

请帮帮忙

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-10-19 13:03:29

Cookie.binarycookies:

我想这会有帮助的。我使用十六进制编辑器对文件进行反向工程,并开始更改cookie。

一般描述:

文件由几个页面组成,每个页面中可以有一个或多个cookie。每个页面都有一个头部,它是可变的,0x10、0x14和0x1c是我们可以看到的常见值。

文件:

该文件以不感兴趣的4字节头开始。

接下来的4个字节是真正有意义的,因为它们表示文件中的页数。

然后我们得到每个页面的长度,也是用一个4字节的数字表示的。重要的是要知道,所有这些数字都是以大端字母顺序编写的。因此,我们有4*个字节的页面,然后是页面。

我们在末尾有8个字节,这也是没有意义的。

页面:

每一页都有一个页眉,页眉的长度可以从一页改变到另一页。要知道报头的长度,我们必须丢弃前5个字节,接下来的4个字节将表示报头的长度。

在头部之后,我们将有4个字节表示的cookie的长度,以小端排序!该长度还包括表示该长度所需的4个字节。

当此cookie结束时,将启动另一个cookie,依此类推,直到页面的末尾。

Cookie:

每个cookies的日期从0x2B开始。日期由4个字节组成,按小端排序。日期是以秒为单位表示的,而不是从纪元开始,所以我们需要减去这个数字: 1706047360。(它只适用于2017年的某一天)

下一个感兴趣的字段从0x38开始。这些字段是动态字段,因此它们由空的“0x00”字节分隔,并按以下顺序排列:名称、值、url、路径。

示例:

http://i52.tinypic.com/2qcqix2.jpg

整个cookie的长度将为0x82。在此cookie旁边,将启动另一个格式完全相同的cookie(如果与页面长度一致)。

票数 18
EN

Stack Overflow用户

发布于 2011-10-04 23:31:30

这并不能准确地回答你的问题,但希望它能切中你想要做的事情的核心。

您可以使用NSHTTPCookieStorage类读取位于~/Library/Cookies/Cookies.binarycookies的二进制cookie文件的内容,如以下代码片段所示:

代码语言:javascript
复制
NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (NSHTTPCookie *c in [cookieStorage cookies])
{
    NSLog(@"%@", c);
}
票数 3
EN

Stack Overflow用户

发布于 2011-11-22 14:06:55

我已经编写了一个MacRuby脚本来完成您要做的事情:

https://gist.github.com/1385008

代码语言:javascript
复制
#!/usr/bin/env macruby
require 'csv'
framework 'Foundation'

CSV_Headers = %w[domain path expiresDate name value].to_csv

class NSHTTPCookie
  def to_csv
    [domain, path, expiresDate, name, value].to_csv
  end
end

store   = NSHTTPCookieStorage.sharedHTTPCookieStorage
cookies = store.cookies
raw_csv = cookies.map(&:to_csv)

puts CSV_Headers
puts raw_csv.join

您需要安装MacRuby,但这将以CSV格式打印出您的cookie。也可以很容易地使其与cookies.txt兼容。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7545885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档