【问题标题】:Access FritzBox via HtmlUnit通过 HtmlUnit 访问 FritzBox
【发布时间】:2022-01-23 15:37:02
【问题描述】:

我正在尝试通过 HTMLUnit 访问我的 FritzBox,但收到错误提示我的浏览器太旧且不受支持。

    try (final WebClient webClient = new WebClient(BrowserVersion.CHROME)) {
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().setRedirectEnabled(true);
final HtmlPage page1 = webClient.getPage("http://fritz.box/");
System.out.println(page1.getWebResponse().getContentAsString());
}

【问题讨论】:

  • 听起来是个不错的谜语,因为我这里也有一个毛躁盒,请在 github 上打开一个问题,我会尝试找出这里出了什么问题。

标签: htmlunit fritzbox


【解决方案1】:

从第一个分析开始: UI 会进行一些浏览器检查,以确保您的浏览器支持使用的功能。

检查看起来像这样(参见 js/browser.js)

var ok = true,
    gNbc;
try {
    if (!gNbc) {
        ok = ok && window.Proxy && typeof new window.Proxy({}, function() {}) === "object";
        ["1"].forEach(function() {});
        ok = ok && window.Promise && typeof new window.Promise(function() {}) === "object";
        ok = ok && window.Blob && typeof new window.Blob(["<a></a>"], {
            type: "text/html"
        }) === "object";
        ok = ok && window.requestAnimationFrame && true;
        ok = ok && window.Promise.resolve(true).finally(function() {});
    }
} catch (err) {
    ok = false;
}
if (!ok) {
    window.location.href = "sorry.lua";
}

HtmlUnit(从 2.56 版开始)不支持 javascript 代理,这就是检查失败的原因,最后你被重定向到 /sorry.lua。

再次 - 请在 https://github.com/HtmlUnit/htmlunit 上打开一个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-04
    • 2015-03-21
    • 2011-02-27
    • 1970-01-01
    • 2017-01-06
    • 2021-07-31
    • 2013-02-09
    相关资源
    最近更新 更多