IE Cookie文件格式说明

时间:2023-03-13 17:17:22 

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

GetCookieFolder


function SHGetFolderPath(hwndOwner: HWND; nFolder: Integer; hToken: HWND;
dwFlags: Word; pszPath: PChar): Boolean; stdcall; external shell32 name 'SHGetFolderPathA';

function GetCookieFolder: string;
var
P: array[0..MAX_PATH] of Char;
begin
SHGetFolderPath(0, CSIDL_COOKIES, 0, 0, @P[0]);
Result := IncludeTrailingBackslash(P);
end;


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

枚举 Cookie 文件
GetCookieFiles


procedure GetCookieFiles(APath: string; AList:TStrings);
var
Sr: TSearchRec;
begin
if FindFirst(APath + '*.txt', faArchive, Sr) = 0 then
begin
repeat
if Sr.Name[1] = '.' then Continue;

AList.Add(Sr.Name);
until FindNext(Sr) <> 0;

FindClose(Sr);
end;
end;


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


a_cookie
.123
my.demo.site

*


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

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

ConvertToDateTime


function FileTimeToDateTime(FT: TFileTime): TDateTime; inline;
var
ST: TSystemTime;
begin
FileTimeToLocalFileTime(FT, FT);
FileTimeToSystemTime(FT, ST);
Result := SystemTimeToDateTime(ST);
end;

function ConvertToDateTime(L, H: Cardinal): TDateTime;
var
FT: TFileTime;
begin
FT.dwLowDateTime := L;
FT.dwHighDateTime := H;
Result := FileTimeToDateTime(FT);
end;



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

标签:IE,Cookie,文件格式
0
投稿

猜你喜欢

  • MySQL正确修改最大连接数的3种方案

    2024-01-18 16:08:03
  • Windows11下MySQL 8.0.29 安装配置方法图文教程

    2024-01-24 09:20:40
  • python中的mock接口开发示例详解

    2023-03-05 00:53:29
  • python如何获取服务器硬件信息

    2023-05-10 18:28:06
  • python3.7+selenium模拟淘宝登录功能的实现

    2022-03-05 01:26:27
  • python中的opencv和PIL(pillow)转化操作

    2023-04-01 18:54:46
  • Vue子组件监听父组件值的变化

    2023-07-02 16:56:00
  • php中获取指定IP的物理地址的代码(正则表达式)

    2023-11-23 07:04:36
  • Python 中数组和数字相乘时的注意事项说明

    2023-02-15 19:38:48
  • SQL Server控制语句的基本应用

    2024-01-24 12:52:28
  • MySQL sql_mode修改不生效的原因及解决

    2024-01-25 03:32:48
  • Python中文分词实现方法(安装pymmseg)

    2023-12-06 02:43:41
  • Oracle 9i产品文档

    2010-07-16 13:35:00
  • Python中文字符串截取问题

    2021-08-15 23:55:20
  • python 自动化将markdown文件转成html文件的方法

    2021-09-16 16:04:40
  • 在pyqt5中展示pyecharts生成的图像问题

    2023-10-17 10:59:46
  • ADO的错误码对应的含义

    2007-10-22 17:31:00
  • 微信小程序radio组件使用详解

    2024-04-19 10:41:44
  • Python sklearn对文本数据进行特征化提取

    2023-05-19 09:07:04
  • SQL Server中使用DTS设计器进行数据转移

    2009-01-08 16:15:00
  • asp之家 网络编程 m.aspxhome.com