delphi - 使用 Indy 和 Delphi 7 从 protected 网页获取 html 源时出现问题

标签 delphi indy10

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


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

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

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

谢谢,
道格拉斯

最佳答案

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

关于delphi - 使用 Indy 和 Delphi 7 从 protected 网页获取 html 源时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4062766/

相关文章:

delphi - 迭代 IHTMLElementCollection

delphi - 反转 ClientDataSet 索引的顺序

delphi - 从 DWScript 调用类的过程

delphi - Delphi 11 上的 Indy SSL 出现未知协议(protocol)错误

delphi - 使用 TIdSSLIOHandlerSocketOpenSSL 时 idSMTP 连接超时

delphi - Delphi 的哪些程序分析工具支持持续集成系统?

Delphi:找不到资源错误?

delphi - Indy TIdHTTPResponseInfo.ContentType 未设置

delphi - Indy 10 + SSL = 适用于 Windows 7,不适用于 XP

delphi - 安装Indy-应该将哪些文件夹添加到Delphi的“库”列表中?