【问题标题】:Imitating Web browsers behavior in Java在 Java 中模仿 Web 浏览器的行为
【发布时间】:2015-11-02 20:47:00
【问题描述】:

当要求 Web 浏览器加载 URL 时,它会向 Web 服务器发出 HTTP 请求,以获取与该 HTTP 请求对应的响应。收到响应后,它将解析响应(HTML 文档)以获取其他资源(如果有)。因此,Web 浏览器会自动向 Web 服务器发出更多的 HTTP 请求。

在 Java 中,我们可以使用 java.net.URLConnection 为特定 URL 发出 HTTP 请求。响应将在很短的时间后可用。然后,我们需要自己解析收到的 HTML 响应,并为每个检测到的资源一个接一个地发出 HTTP 请求。

  • 有什么方法可以在 Java 中自动发出这些自动 HTTP 请求?

  • 或者至少有任何解析器可以解析 HTML 文档并提取应请求的所有资源的列表?

【问题讨论】:

  • 寻找“java 模拟浏览器”可能会带你去你想去的地方。 htmlunit.sourceforge.net
  • 您实际上是在问“我如何用 Java 编写 Web 浏览器?”对于 SO 应该是的问答格式来说,这太宽泛了。否则,您是在寻求 HTML 解析工具的推荐——参见help center中的#4@

标签: java browser httpurlconnection urlconnection


【解决方案1】:

你的问题有点不具体。你的意图是什么? (你是想写浏览器,测试服务器,还是测试网站?)

您可能需要检查Apache JMeter,这是一个用于在 Web 服务器上运行负载测试的 Java 包。

您可能还想看看Selenium Webdriver,它允许您为网站编写自动化测试并模拟浏览器的行为(即发送请求、接收和分析响应......)

这是你要找的吗?

【讨论】:

  • 我要测试网站。我通常通过无头 Web 浏览器 PhantomJS 来执行此操作。现在,我需要访问由 Web 浏览器获取的 JavaScript 函数。目前,使用 PhantomJS,我无法访问 HTTP 响应的正文。然后,我无法访问 JavaScript 函数。但是,对我来说,一个解决方案是获取所有 HTTP 请求的列表并将它们发送到 Web 服务器以获得响应......现在,我想也许我可以在我的项目的这一部分中使用 Java 而不是 PhantomJS只是为了获取 JavaScript 函数...
  • 我不想使用 Selenium Web 驱动程序,但我会检查您刚刚建议的第一个链接,看看它是否能解决我的问题。不过还是谢谢...
猜你喜欢
  • 1970-01-01
  • 2012-04-12
  • 1970-01-01
  • 1970-01-01
  • 2020-01-20
  • 1970-01-01
  • 2020-05-20
  • 1970-01-01
  • 2019-11-04
相关资源
最近更新 更多