Cookie俗称小甜饼,是网站存放在本机的访问信息,其存储在IE临时文件中。可通过以下函数获取
void IECache(FILE *pFile)
{
char tmpbuf[20000];
BOOL bDone = FALSE;
INTERNET_CACHE_ENTRY_INFO *lpCacheEntry = NULL;
DWORD dwTrySize, dwEntrySize; // start buffer size
HANDLE hEnumHandle = NULL;
DWORD dwError = ERROR_INSUFFICIENT_BUFFER;
// 计算第一个IE缓存信息所需的内存空间
dwTrySize = 0;
hEnumHandle=FindFirstUrlCacheEntry(NULL, lpCacheEntry,&dwTrySize);
dwEntrySize = dwTrySize;
// 找第一个IE缓存
lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO) new char[dwEntrySize];
lpCacheEntry->dwStructSize = dwEntrySize;
hEnumHandle=FindFirstUrlCacheEntry(NULL, lpCacheEntry,&dwTrySize);
if(NULL==hEnumHandle)
{
fprintf(pFile,"FindFirstUrlCacheEntry error %d\n",GetLastError());
return;
}
else
{
dwError=ERROR_SUCCESS;
}
//int js=0;
while(!bDone)
{
switch(dwError)
{
case ERROR_INSUFFICIENT_BUFFER:
dwEntrySize = dwTrySize;
delete [] lpCacheEntry;
lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO) new char[dwEntrySize];
lpCacheEntry->dwStructSize = dwEntrySize;
if(TRUE==FindNextUrlCacheEntry(hEnumHandle, lpCacheEntry, &dwTrySize))
dwError = ERROR_SUCCESS;
else
{
dwError = GetLastError();
dwEntrySize = dwTrySize;
}
break;
case ERROR_SUCCESS:
//fprintf(pFile,"%s\n",lpCacheEntry->lpszSourceUrlName);
if(strstr(lpCacheEntry->lpszSourceUrlName,"Cookie:")!=NULL)
{
fprintf(pFile,"%s\n",lpCacheEntry->lpszSourceUrlName);
FILE *fr;
fr=fopen(lpCacheEntry->lpszLocalFileName,"rb");
if(fr!=NULL)
{
int tmp_len=fread(tmpbuf,1,20000,fr);
if(tmp_len>=20000) tmp_len=19999;
fclose(fr);
tmpbuf[tmp_len]=0;
fprintf(pFile,"%s\n",tmpbuf);
}
}
dwTrySize = dwEntrySize;
if (FindNextUrlCacheEntry(hEnumHandle, lpCacheEntry, &dwTrySize))
dwError = ERROR_SUCCESS;//js++;
else
{
dwError = GetLastError();
dwEntrySize = dwTrySize; // use new size returned
}
break;
default:
bDone=TRUE;
break;
}
}
FindCloseUrlCache(hEnumHandle);
return;
}