相关疑难解决方法(0)

Indy - IdHttp如何处理页面重定向?

使用:Delphi 2010,Indy的最新版本

我试图从Googles Adsense网页上删除数据,目的是获取报告.但到目前为止我还没有成功.它在第一次请求后停止,但不继续.

使用Fiddler调试流向Google Adsense网站的流量/请求,以及用于加载Adsense页面的Web浏览器,我可以看到请求(来自webbrowser)会生成许多重定向,直到页面加载完毕.

但是,我的Delphi应用程序只在停止之前生成一些请求.

以下是我遵循的步骤:

  1. 在表单上删除IdHTTP和IdSSLIOHandlerSocketOpenSSL1组件.
  2. 将IdHTTP组件属性AllowCookies和HandleRedirects设置为True,将IOHandler属性设置为IdSSLIOHandlerSocketOpenSSL1.
  3. 设置IdSSLIOHandlerSocketOpenSSL1组件属性方法:='sslvSSLv23'

最后我有这个代码:

procedure TfmMain.GetUrlToFile(AURL, AFile : String);
var
 Output : TMemoryStream;
begin
  Output := TMemoryStream.Create;
  try
    IdHTTP1.Get(FURL, Output);
    Output.SaveToFile(AFile);
  finally
    Output.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

但是,它没有按预期进入登录页面.我希望它表现得好像它是一个webbrowser并继续重定向,直到找到最后一页.

这是Fiddler标题的输出:

HTTP/1.1 302 Found
Location: https://encrypted.google.com/
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Set-Cookie: PREF=ID=5166063f01b64b03:FF=0:TM=1293571783:LM=1293571783:S=a5OtsOqxu_GiV3d6; expires=Thu, 27-Dec-2012 21:29:43 GMT; path=/; domain=.google.com
Set-Cookie: NID=42=XFUwZdkyF0TJKmoJjqoGgYNtGyOz-Irvz7ivao2z0--pCBKPpAvCGUeaa5GXLneP41wlpse-yU5UuC57pBfMkv434t7XB1H68ET0ZgVDNEPNmIVEQRVj7AA1Lnvv2Aez; expires=Wed, 29-Jun-2011 21:29:43 GMT; path=/; domain=.google.com; HttpOnly
Date: Tue, 28 Dec 2010 21:29:43 GMT
Server: gws
Content-Length: 226
X-XSS-Protection: 1; mode=block

首先,这个输出有什么问题吗?

还有什么我应该做的让IdHTTP组件继续追求重定向直到最后一页?

delphi indy web-scraping

8
推荐指数
1
解决办法
2万
查看次数

标签 统计

delphi ×1

indy ×1

web-scraping ×1