1

使用 Delphi 的 Indy10 组件,我正在获取网页的源代码并使用以下代码将其显示在 Memo 控件中。


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

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

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

谢谢,道格拉斯

4

2 回答 2

3

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

于 2010-10-31T11:51:25.380 回答
1

那是因为 Indy 只为您提供运输服务。

Indy 不进行登录;该网站确实如此。
网站可以通过多种方式进行登录。
大多数这些登录都需要网络浏览器的支持。

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

为大量工作做好准备……

——杰伦

于 2010-10-31T13:07:41.587 回答