Cookie文件格式

2017-12-30 11:20:29来源:oschina作者:xiaomin0322人点击

分享
Cookie文件格式 博客分类: 搜索引擎,爬虫
Cookie文件格式

原文参考: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//Cookies/目录下(此处的为你登录系统时使用的用户名,在 开始->运行中输入cookies便可打开该目录),命名规则为@.txt。


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


3、Cookie文件的格式


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


英文说明:Line Summary1 The Variable Name2 The Value for the Variable3 The Website of the Cookie’s Owner4 Optional Flags5 The Most Significant Integer for Expired Time, in FILETIME Format6 The Least Significant Integer for Expired Time, in FILETIME Format7 The Most Significant Integer for Creation Time, in FILETIME Format8 The Least Significant Integer for Creation Time, in FILETIME Format9 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_cookie0.123my.demo.site160015890528003063445067281676829899592*


其中第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.} http://www.cnblogs.com/qguohog/archive/2012/11/13/2768131.html

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台