我需要从Web获取HTML页面的内容,但相应资源的内容仅在用户登录网站后才可用。
更具体地说,我需要下载在Youtube上被标记为不当的视频文件的HTML页面。我确实有登录凭据,但我不确定如何继续登录。
我目前正在使用来自Synapse的HTTPSend下载非密码保护的HTML页面,而且我还拥有我之前项目中使用的Clever Internet Suite 7的许可副本。
我正在使用的代码看起来像这样(这是严格的信息,我可以在必要时更改方法):
function GetHTMLFile(s: string): string;
var
sHTTPSource:TStringList;
HTTP: THTTPSend;
begin
try
sHTTPSource := TStringList.Create;
if HttpGetText(s, sHTTPSource) then
begin
result := sHTTPSource.Text;
end;
finally
sHTTPSource.Free;
end;
end;
我不指望你为我做所有的工作,但我真的很感激正确方向的暗示。
答案 0 :(得分:3)
THTTPSend有一个属性.Cookies(TStringList),它采用名称 - 值对(每个都是一个cookie)。如果您使用相同的THTTPSend实例发布登录过程,则将捕获从YouTube发送的cookie,并将使用相同的THTTPSend实例保留在将来的请求中。您可以每次执行此操作(获取新cookie),也可以在向受保护页面发出请求之前将cookie信息硬编码(或软编码)到THTTPSend中。
您也可以只登录一次并将.cookies TStringList保存到某处,每次都将其分配给您创建的新THTTPSend以发出新请求。