这几天在网上无意间看到很多人转载或部分截取了本文的部分内容
在此声明,转载请注明出处,谢谢

前几天写了个工具 CookieAdmin 来查看 IE 的 Cookie
有人问到实现原理,就写了这篇文章
我不善于写文档或文章,所以还是代码说话吧

IE 的 Cookie 文件保存在 ?:\Documents and Settings\<user>\Cookies 目录,后缀为.txt
可以直接使用 API SHGetFolderPath 取得 Cookie 文件的保存目录
不过我没发现 Delphi2007 有这个 API 的声明,所以自己声明了一下
代码如下(发现代码高亮支持 Pascal 了,呵呵)

GetCookieFolder
 1function SHGetFolderPath(hwndOwner: HWND; nFolder: Integer; hToken: HWND;
 2  dwFlags: Word; pszPath: PChar): Boolean; stdcall; external shell32 name 'SHGetFolderPathA';
 3
 4function GetCookieFolder: string;
 5var
 6  P: array[0..MAX_PATH] of Char;
 7begin
 8  SHGetFolderPath(0, CSIDL_COOKIES, 0, 0, @P[0]);
 9  Result := IncludeTrailingBackslash(P);
10end;

注意 shell32 常量定义在 ShellAPI.pas 里,CSIDL_COOKIES 定义在 ShlObj.pas 里,记得引用

枚举 Cookie 文件

GetCookieFiles
 1procedure GetCookieFiles(APath: string; AList:TStrings);
 2var
 3  Sr: TSearchRec;
 4begin
 5  if FindFirst(APath + '*.txt', faArchive, Sr) = 0 then
 6  begin
 7    repeat
 8      if Sr.Name[1] = '.' then Continue;
 9
10      AList.Add(Sr.Name);
11    until FindNext(Sr) <> 0;
12
13    FindClose(Sr);
14  end;
15end;

下面才是重点,Cookie 文件的格式,呵呵
Cookie 文件只是个纯粹的文本文件,以换行符(ASCII=10)为分隔符
可以使用 TStringList 读取,会自动分行的
格式如下

a_cookie
0.123
my.demo.site
1600
1589052800
30634450
672816768
29899592
*

其中
第1行为 Cookie 名称
第2行是 Cookie 的值
第3行是 Cookie 所属站点的地址
第4行是个标记值(注:准确来说应该是表示该Cookie是否被加密)
第5行为超时时间的低位(Cardinal/DWORD)
第6行为超时时间的高位
第7行为创建时间的低位
第8行为创建时间的高位
第9行固定为 * ,表示一节的结束
需要注意的是这里使用的时间并非 Delphi 的 TDateTime,而是 FILETIME(D里为对应的TFileTime)
一个文件可能包含有多个节,按上面的格式循环即可

下面的代码将上述时间转换为 D 里的 TDateTime

ConvertToDateTime
 1function FileTimeToDateTime(FT: TFileTime): TDateTime; inline;
 2var
 3  ST: TSystemTime;
 4begin
 5  FileTimeToLocalFileTime(FT, FT);
 6  FileTimeToSystemTime(FT, ST);
 7  Result := SystemTimeToDateTime(ST);
 8end;
 9
10function ConvertToDateTime(L, H: Cardinal): TDateTime;
11var
12  FT: TFileTime;
13begin
14  FT.dwLowDateTime := L;
15  FT.dwHighDateTime := H;
16  Result := FileTimeToDateTime(FT);
17end;

怎么样,确实很简单吧?呵呵

转载于:https://www.cnblogs.com/sephil/archive/2008/05/06/cookiefmt.html

IE Cookie 文件格式相关推荐

  1. IE Cookie文件格式说明

    1.Cookie文件的实质 Cookie实际上是Web服务端与客户端(典型的是浏览器)交互时彼此传递的一部分内容,内容可以是任意的,但要在允许的长度范围之内.客户端会将它保存在本地机器上(如IE便会保 ...

  2. COOKIE格式与读写相关

    1. COOKIE文件格式: COOKIE文件为操作系统cookies目录下的一堆txt文件.文件名格式为: <用户名>@<域名>[数字].txt 即,同一个域下可能有多个co ...

  3. 如何用ASP.NET加密Cookie数据过程分析

    如何用ASP.NET加密Cookie数据过程呢,这里做个简单的分析. 首先,Cookie数据包含在HTTP请求和响应的包头里透明地自吸泵传递,也就是说聪明的人是能清清楚楚看到这些数据的 其次,Cook ...

  4. Mr.J-- HTTP学习笔记(十)-- Cookie机制

    我的专栏:  HTTP学习笔记 承载用户相关信息的HTTP首部 首部名称 首部类型 描述 From  请求 用户的 E-mail 地址 User-Agent   请求 用户的浏览器软件 Referer ...

  5. XSS跨站脚本攻击防御和Cookie,及SSO单点登录原理

    XSS又称CSS,全称Cross SiteScript,跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性.其原理是攻击者向有XSS漏洞的网站中输入 ...

  6. 转载的SSO文章,很基础

    单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统当中.本文从业务的角度分析了单点登录的需求和应用领域:从技术本身的角度分析了单点登录技术的内部机制和实现手段,并且给出Web-SSO和桌面 ...

  7. 编写你自己的单点登录(SSO)服务(转)

    编写你自己的单点登录(SSO)服务 分类: 文章 2006-05-24 10:48 48305人阅读 评论(87) 收藏 举报 王昱 yuwang881@gmail.com   博客地址http:// ...

  8. Linux常用命令集锦(一)

    1.下载命令(wget) wget 是一个命令行的下载工具. 1)常用参数 $ wget -r -np -nd http://example.com/packages/ 命令可以下载 http://e ...

  9. 单点登录(SSO)服务

    摘要:单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统当中.本文从业务的角度分析了单点登录的需求和应用领域:从技术本身的角度分析了单点登录技术的内部机制和实现手段,并且给出Web-SSO ...

  10. Java 实现单点登录功能

    J2EE社区 苟有恒,何必三更起五更眠; 最无益,只怕一日曝十日寒. posts - 238, comments - 317, trackbacks - 0, articles - 16 导航 首页 ...

最新文章

  1. 华为交换机ACL配置
  2. qtdesigner设计表格_QT Designer基础——登录界面设计基础版
  3. ABAP SET UPDATE TASK LOCAL的测试
  4. 浅谈工业无线遥控器的基本定义及原理
  5. Java web 中的 三层架构
  6. npm安装vue_零基础入门vue开发
  7. SEO能给独立站系统带来巨大的搜索流量吗?
  8. Oracle开发环境安装与使用
  9. 如何进行多语言发布,做国际化开发
  10. 操作系统银行家算法(课程设计报告)JAVA实现
  11. 打造自己的Android源码学习环境之六:运行Android模拟器
  12. html5增加用户代码,HTML5 用户注册页面源代码
  13. drawRGB在N7370上的问题
  14. WIN SERVER 2008安装VS2015踩坑小结
  15. ucl计算机学院位置,2017伦敦大学学院设施及地理位置介绍
  16. 加密文档的三种基本方法
  17. html透明玻璃效果,ps制作逼真的透明玻璃特效效果
  18. Modbus的十大问题
  19. gls开发_广义最小二乘gls数学推导直觉
  20. 主分区、扩展分区、逻辑分区

热门文章

  1. C++11基于范围的for循环
  2. 使用getString成员函数获取表字段数据出错
  3. python适用于哪些芯片_这些鲜为人知的Python功能,你值得拥有!
  4. opencv 把3通道图像转成单通道_【3】OpenCV图像处理模块(4)图像腐蚀与膨胀
  5. (秒杀项目) 4.7 缓存商品与用户
  6. vb6 由于超出容量限制 不能创建新事务_Executors类创建四种常见线程池
  7. Fullpage:基础学习
  8. Javascript:事件对象—event
  9. ios调用restful接口_iPhone中调用RESTFUL Service
  10. cmd for语句的用法