我正在使用 Delphi,我正在尝试从网页获取源代码。
我的问题是,当我使用 Indy (idHttp) 或 Clever Components (clHttp) 而不是 IE 和/或 Google Chrome 时,我得到了不同的源代码。
有什么方法可以用 Delphi 检索网页源,与浏览器显示的方式完全相同?
我正在使用 Delphi,我正在尝试从网页获取源代码。
我的问题是,当我使用 Indy (idHttp) 或 Clever Components (clHttp) 而不是 IE 和/或 Google Chrome 时,我得到了不同的源代码。
有什么方法可以用 Delphi 检索网页源,与浏览器显示的方式完全相同?
这可能是因为控件发送的用户代理字符串与 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)
基本上,从组件请求页面与浏览器的操作相同。只有浏览器可能会做更多的请求和其他活动,例如。可能会改变 DOM 的 JavaScript。
尝试关闭 JavaScript 并再次比较。如果您熟悉 chrome 开发人员工具,请检查第一个 HTTP 获取的原始输入并进行比较。如果仍然不同,则修改您的请求以使其与 chrome 请求相同。