使用Indy& amp从受保护的网页获取html源代码时出现问题德尔福7

时间:2010-10-31 10:37:08

标签: delphi indy10

使用Indy10组件进行delphi,我抓住网页的来源并使用以下代码将其显示在Memo控件中。


procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Text := IdHTTP1.Get(Edit1.Text);
end;

当我试图显示的页面只是一个普通页面(即不需要登录)时,结果很好,但如果我尝试获取需要登录的页面源,那么结果就是备忘录显示尽管我在Firefox和IE浏览器中登录了该站点,但登录页面的来源而不是我请求的页面。

所以我的问题是如何使用Indy组件对网站进行“身份验证”,这样我就可以获得与登录后在浏览器中查看该页面时相同的来源?

THX, 道格拉斯

2 个答案:

答案 0 :(得分:3)

你应该花一些时间来了解整个HTTP的工作原理,因为有时它比它看起来更复杂。浏览器不仅仅是简单地发布带有URL的HTTP GET或POST请求,还可以获取一些HTML。例如,他们存储了很多关于访问过的网站的信息,因为HTTP标头带有很多有用的信息。他们如何做到这一点通常是浏览器特定的,而不是系统范围的。其他浏览器或应用程序可能无法查看或使用它们。 您必须为给定站点正确设置HTTP标头,并处理身份验证等情况。具有身份验证的站点可以使用多种技术来允许从简单登录页面到HTTP身份验证方法的访问。他们可以将您重定向到处理身份验证的页面,虽然对于已经登录的用户来说可能会出现这种情况,但浏览器(或应用程序)会看到正在发生的事情并且必须处理它。

答案 1 :(得分:1)

那是因为Indy只为你做运输。

Indy没有登录;网站确实。
网站可以通过多种方式登录 大多数登录都需要Web浏览器的支持。

因此,您很可能需要模拟网络浏览器的功能 这包括支持网站用于登录的所有技术 这可能包括Cookie,额外的HTTP标头,HTML 5,JavaScript,Flash或其他功能。

为很多工作做好准备......

- 的Jeroen