2

我正在使用 Delphi,我正在尝试从网页获取源代码。

我的问题是,当我使用 Indy (idHttp) 或 Clever Components (clHttp) 而不是 IE 和/或 Google Chrome 时,我得到了不同的源代码。

有什么方法可以用 Delphi 检索网页源,与浏览器显示的方式完全相同?

4

2 回答 2

8

这可能是因为控件发送的用户代理字符串与 IE 或 Chrome 使用的字符串不同。所以换句话说,服务器发回的源与它为 IE 或 Chrome 发送的源不同。

例如,在 TIdDHTTP 中,设置:

Request.Accept=*/*
Request.CacheControl=no-cache
Request.Connection=Keep-Alive
Request.ContentType=application/x-www-form-urlencoded
Request.AcceptEncoding=gzip, deflate
Request.UserAgent=Mozilla/4.0 (compatible; MSIE 6.0; Win32)
Request.Host=(web site name)
于 2012-10-19T10:16:46.950 回答
3

基本上,从组件请求页面与浏览器的操作相同。只有浏览器可能会做更多的请求和其他活动,例如。可能会改变 DOM 的 JavaScript。

尝试关闭 JavaScript 并再次比较。如果您熟悉 chrome 开发人员工具,请检查第一个 HTTP 获取的原始输入并进行比较。如果仍然不同,则修改您的请求以使其与 chrome 请求相同。

于 2012-10-19T06:30:44.077 回答