如何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
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