如何HTTP-GETHTML喜欢浏览器?

How to HTTP-GET HTML like a browser?

TL;DR;

我想知道 Apache HttpClient and Jsoup are doing differently, specifically how I can achieve that, to receive an HTML page (in this case google.com) 就像浏览器一样。

问题

当我在浏览器中执行 a Google search 时,它看起来像这样:

这显然是预期的行为。 使用 Apache HttpClient or Jsoup 我得到一个 非常相似的结果 像这样:

正是我想要的因为它包含响应中的所有内容 .

在我的 HTTP-GET 请求中,我刚收到这个:

并且缺少 HTML-text content.

缺少什么?

我想要有关结果的所有信息,正如您在最后一张图片中看到的那样,甚至没有 结果 URL 特色。

方法

我尝试添加这些 headers:

Accept  
text/html,application/xhtml+xm…plication/xml;q=0.9,*/*;q=0.8
Accept-Encoding 
gzip, deflate, br
User-Agent  
Mozilla/5.0 ...

虽然他们没有改变任何东西。

Jsoup 只能下载静态 html 网页。一些数据由 javascript 加载在网页上,由浏览器执行。这些脚本可能会从不同的 url 以异步方式加载网页内容的某些部分。

要获取此内容,您应该使用 HtmlUnit 或 Selenium 等工具。

我认为 headers 是正确的选择。我确信这只是我的 Kotlin HTTP 库的问题。

Accept  
text/html,application/xhtml+xm…plication/xml;q=0.9,*/*;q=0.8
Accept-Encoding 
gzip, deflate, br
User-Agent  
Mozilla/5.0