原文参考:http://blog.csdn.net/lixianlin/article/details/2738229

1、Cookie文件的实质

  Cookie实际上是Web服务端与客户端(典型的是浏览器)交互时彼此传递的一部分内容,内容可以是任意的,但要在允许的长度范围之内。客户端会将它保存在本地机器上(如IE便会保存在本地的一个txt文件中),由客户端程序对其进行管理,过期的Cookie会自动删除。每当客户端访问某个域下某个目录中的网页时,便会将保存在本地并且属于那个域下对应目录的有效Cookie信息附在网页请求的头部信息当中一并发送给服务端。

2、Cookie文件的保存位置

  不同的客户端,其Cookie的保存方式、保存位置各不相同,这里只说一下Windows系统中IE的Cookie文件保存位置。

  在Windows 2000/XP系统中,Cookie默认保存在C:\Documents and Settings\<username>\Cookies\目录下(此处的<username>为你登录系统时使用的用户名,在开始->运行中输入cookies便可打开该目录),命名规则为<username>@<domain>.txt。

  与2000/XP不同的是,在Windows 95/98/ME系统中Cookie文件默认是保存在C:\Windows\Cookies\目录下的。

3、Cookie文件的格式

  IE的Cookie文件实际上就是一个txt文本文件,只不过换行符标记为Unix换行标记(0x0A),由于记事本对Unix换行标记不兼容,打开后内容全在一行看起来不方便,我们可以用EditPlus或UltraEdit-32打开,打开之后,会看到形式如下的内容:
name
value
domain/
1600
1263382784
30020896
452781968
30020892
*
每一行的内容说明:

英文说明:
Line Summary
1 The Variable Name
2 The Value for the Variable
3 The Website of the Cookie’s Owner
4 Optional Flags
5 The Most Significant Integer for Expired Time, in FILETIME Format
6 The Least Significant Integer for Expired Time, in FILETIME Format
7 The Most Significant Integer for Creation Time, in FILETIME Format
8 The Least Significant Integer for Creation Time, in FILETIME Format
9 The Cookie Record Delimiter (a * character)

中文说明:
第一行 Cookie变量名
第二行 Cookie变量值
第三行 该Cookie变量所属域,形如csdn.net/、blog.csdn.net/或blog.csdn.net/lixianlin/
第四行 可选标志(cooke是否加密?)
第五行 该Cookie过期时间(FILETIME格式)的高位整数
第六行 该Cookie过期时间(FILETIME格式)的低位整数
第七行 该Cookie创建时间(FILETIME格式)的高位整数
第八行 该Cookie创建时间(FILETIME格式)的低位整数
第九行 Cookie记录分隔符(为一个星号* )

补充一下,第三行中Cookie变量所属域,如csdn.net/,它是一个根域,也就是一级域,表示该Cookie变量在该根域下的所有目录中的网页都有效,不管访问该域下的哪个目录中的网页,浏览器都会将该Cookie信息附在网页头部信息当中发送给服务端;blog.csdn.net/,是一个二级域,表示该Cookie只对blog这个二级域下目录中的网页有效;blog.csdn.net/lixianlin/,是一个二级域下的目录,只有访问blog这个二级域下lixianlin这个目录中的网页时,才会把该Cookie信息附在请求头部信息当中发送给服务端。需要指出的是csdn.net/和www.csdn.net/并不相同,前者是根域,后者是一个二级域,只是人们习惯了www这样的形式,所以大多数的网站首页都用http://www.xxx.com/这样的二级域来访问。

附FILETIME格式定义:
typedef struct _FILETIME {
    DWORD dwLowDateTime;
    DWORD dwHighDateTime;
} FILETIME, *PFILETIME, *LPFILETIME;

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)
一个文件可能包含有多个节,按上面的格式循环即可

附VC++6.0解析时间相关代码:

01.#include "stdafx.h"
02.#include "Windows.h"
03.
04.int main(int argc, char* argv[])
05.{
06. FILETIME ft;
07. ft.dwLowDateTime=1263382784;
08. ft.dwHighDateTime=30020896;
09.
10. SYSTEMTIME st;
11.
12. FileTimeToSystemTime(&ft,&st);
13.
14. printf("%04d-%02d-%02d %02d:%02d:%02d\n",st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);
15.
16. return 0;
17.}

Cookie文件格式解析的更多相关文章

  1. Cookie文件说明及IE的Cookie文件格式

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

  2. ArcGIS三大文件格式解析

    原文:ArcGIS三大文件格式解析 Shape数据 Shapefile是ArcView GIS 3.x的原生数据格式,属于简单要素类,用点.线.多边形存储要素的形状,却不能存储拓扑关系,具有简单.快速 ...

  3. Android init.rc文件格式解析

    /***************************************************************************** * Android init.rc文件格式 ...

  4. mp4文件格式解析(转载)

    mp4文件格式解析 原作:http://blog.sina.com.cn/s/blog_48f93b530100jz4b.html 目前MP4的概念被炒得很火,也很乱.最开始MP4指的是音频(MP3的 ...

  5. C++PE文件格式解析类(轻松制作自己的PE文件解析器)

    PE是Portable Executable File Format(可移植的运行体)简写,它是眼下Windows平台上的主流可运行文件格式. PE文件里包括的内容非常多,详细我就不在这解释了,有兴趣 ...

  6. 解析prototxt文件的python库 prototxt-parser(使用parsy自定义文件格式解析)

    解析prototxt文件的python库 prototxt-parser https://github.com/yogin16/prototxt_parser https://test.pypi.or ...

  7. mp4文件格式解析(转)

    mp4文件格式解析 MP4文件格式带数据详解 MP4文件格式的解析,以及MP4文件的分割算法

  8. Qt的.pro文件格式解析

    Qt的.pro文件格式解析 在Qt中用qmake生成makefile文件,它是由.pro文件生成而来的,.pro文件的具体格式语法如下: 1.注释 .pro文件中注释采用#号,从"#&quo ...

  9. Dotnet文件格式解析

    0x0.序 解析过程并没有介绍对pe结构的相关解析过程,网上此类相关资料很多可自行查阅,本文只介绍了网上资料较少的从pe结构的可选头中的数据目录表中获取dotnet目录的rva和size,到完全解析d ...

随机推荐

  1. android framework-安装samba

    用于在windows下使用souceinsight访问linux中的android源代码. □    apt-get install samba samba-common      #安装samba ...

  2. thread-local-allocation-buffers

    https://www.azul.com/files/Whats-inside-a-JVM-webinar-presentation.pdf https://www.zhihu.com/questio ...

  3. CSocket类的使用

    重点介绍一个MFC中CSocket类的使用 1.创建套接字 使用CSocket类创建套接字对象是通过该类的构造函数创建的.其原型如下: CSocket::CSocket(); 例如,用户创建CSock ...

  4. Frosh Week

    Problem Description During Frosh Week, students play various fun games to get to know each other and ...

  5. mysql 加入远程用户

    USE mysql; GRANT ALL PRIVILEGES ON *.* TO panjing @"%" IDENTIFIED BY "123456"; F ...

  6. 使用 LocalReport 对象进行打印

    添加引用   从“项目”菜单中,选择“添加引用”.将显示“添加引用”对话框. 从“.NET”选项卡上显示的列表框中,选择 Winforms 和 Drawing 组件. 添加代码 应打开 Program ...

  7. ssh 移植记录

    利用buildroot 先编译一个 sshd cd buildroot-2016.05/ make menuconfig Target packages ---> Networking appl ...

  8. Android——Handler 多线程

    java 打开界面 实现图片轮播 //Handler final ImageView iv_2 = (ImageView)findViewById(R.id.iv_2); final int[] im ...

  9. HTML——图片自动轮换和手动轮换

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. openwrt内核配置选项添加

    摘自:http://blog.csdn.net/weiniliuchao/article/details/50295527 增加内核配置选项 openwrt的.config文件中,关于内核的选项都是形 ...