【问题标题】:HtmlUnit stucks on js compileHtmlUnit 卡在 js 编译
【发布时间】:2017-12-25 14:31:33
【问题描述】:

我运行这段代码

val client = new WebClient(BrowserVersion.CHROME)
val url = "https://belovo.drom.ru/jaguar/f-pace/26324638.html"
val req = new WebRequest(new URL(url))
client.getPage[HtmlPage](req)

使用的 HtmlUnit 版本

<dependency>
   <groupId>net.sourceforge.htmlunit</groupId>
   <artifactId>htmlunit</artifactId>
   <version>2.28</version>
</dependency>

加载页面卡在编译https://c.rdrom.ru/js/DromContacts.min.js?3176009243

这段js代码很混乱,可能是这个原因。

日志中的这一行

[2017-12-25 17:15:21,657] WARN  [main] Obsolete content type encountered: 'application/x-javascript'.
[2017-12-25 17:15:21,658] TRACE [main] Javascript compile https://c.rdrom.ru/js/DromContacts.min.js?3176009243

然后很长一段时间(5 分钟)什么都没有发生。

有人遇到过这样的问题吗?

【问题讨论】:

  • 您期望发生什么?我不认为这些日志消息非常令人担忧。混淆应该不是问题,虽然它使调试变得棘手,所以如果它确实是一个 javascript 问题,那么你应该尽可能尝试用非混淆版本替换它。
  • 我希望 WebClient 成功加载页面而不会阻塞 js 编译无限时间。
  • 你怎么知道是javascript编译的问题?
  • 如果解析 javascript 失败,那么我认为它会立即失败。日志中是否还有其他看起来可疑的行?或者有没有说它正在尝试做某事但从未说它已经完成的部分?
  • 因为我尝试将超时设置为 js 执行 client.setJavaScriptTimeout(5000) 并在此 js 文件上出现 TimeoutError 失败

标签: javascript java htmlunit


【解决方案1】:

我过去在某些页面上得到了这个。因为 HtmlUnit 不呈现内容,所以某些宽度/高度方法会返回或多或少的固定值。一些聪明的 javascript 会使用一个循环来布局文本,该循环会剪切文本然后再次检查宽度。就我而言,这会导致无限循环。

如果接下来几天有时间我会试试你的例子。

【讨论】:

  • 很抱歉,我没有好消息,我已经使用调试器/分析器进行了初步查看,看起来混淆的源代码是个问题。请尝试向 Rhino 人员报告此问题,因为 HtmlUnit 是基于 Rhino 的,这对我来说似乎是 Rhino 的问题。
猜你喜欢
  • 2021-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-27
  • 1970-01-01
  • 2014-03-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多