如何使用TEmbeddedWB获取所有cookie详细信息?

时间:2015-08-18 19:33:46

标签: delphi cookies delphi-xe8 tembeddedwb

在Delphi XE8 VCL表单应用程序中,TEmbeddedWB我使用此方法获取cookie:

CookieStr := EmbeddedWB1.Cookie;
CodeSite.Send('CookieStr', CookieStr);

这是结果(例如):

  

NAME1 =值1; 2 =值2; NAME3 =值3

但是,正如您所看到的,这只会获得Cookie的名称

那么我怎样才能获得其他cookie字段,例如路径到期日期等?

1 个答案:

答案 0 :(得分:0)

以下是解决方案:

首先,我们需要让我们熟悉Winapi FILETIME structure

然后从这里获取IE cookie文件:

  

C:\用户\%的用户名%\应用程序数据\漫游\微软\的Windows \饼干\

现在查找与name=value相同TEmbeddedWB.Cookie对的Cookie文件。

以下是IE cookie文件内容的示例,我们从中获取数据:

enter image description here

(与活着的人或其他当局的相似之处纯属偶然而非意图!)

我们可以从红色的评论中看到各种数字的含义。

以下是解密这些数字的源代码:

uses Winapi.Windows;

function ConvertWinapiFileTimeLoHiValuesToDateTimeStr(const AFTLoValue, AFTHiValue: Cardinal): string;
const
  InvalidDate = '01/01/80 12:00:00 AM';
var
  lCookieFileTime: TFileTime;
  lDosDT: Integer;
  lLocalFileTime: TFileTime;
begin
  lCookieFileTime.dwLowDateTime  := AFTLoValue;
  lCookieFileTime.dwHighDateTime := AFTHiValue;

  FileTimeToLocalFiletime(lCookieFileTime, lLocalFileTime);
  if FileTimeToDosDateTime(lLocalFileTime, Longrec(lDosDT).Hi, Longrec(lDosDT).Lo) then
  begin
    try
      Result := DateTimeToStr(FiledateToDatetime(lDosDT));
    except
      Result := InvalidDate;
    end;
  end
  else
    Result := InvalidDate;
end;

现在我们可以将此函数与上述cookie文件中的数字一起使用,例如:

CodeSite.Send('Expiration Date', ConvertWinapiFileTimeLoHiValuesToDateTimeStr(2496134912, 30471078));
CodeSite.Send('Modified Date', ConvertWinapiFileTimeLoHiValuesToDateTimeStr(2624224682, 30465043));

这会给我们这个结果:

enter image description here