Java HtmlUnit和HTTPS页面

Java HtmlUnit和HTTPS页面,java,htmlunit,htmlunit-driver,Java,Htmlunit,Htmlunit Driver,我正在尝试制作一个程序,检查可用的位置并预订第一个可用的位置。我开始写,很早就遇到了一个问题。 问题是,当我尝试连接该站点(即https)时,该程序什么都不做。它不会抛出错误,也不会崩溃。最奇怪的是,它能与一些https网站协同工作,而有些则不能。 我花了无数个小时试图解决这个问题。我试过使用htmlunitdriver,但仍然不起作用。请帮忙 private final WebClient webc = new WebClient(BrowserVersion.CHROME); webc.ge

我正在尝试制作一个程序,检查可用的位置并预订第一个可用的位置。我开始写,很早就遇到了一个问题。 问题是,当我尝试连接该站点(即https)时,该程序什么都不做。它不会抛出错误,也不会崩溃。最奇怪的是,它能与一些https网站协同工作,而有些则不能。 我花了无数个小时试图解决这个问题。我试过使用htmlunitdriver,但仍然不起作用。请帮忙

private final WebClient webc = new WebClient(BrowserVersion.CHROME);
webc.getCookieManager().setCookiesEnabled(true);
HtmlPage loginpage = webc.getPage(loginurl);        
System.out.println(loginpage.getTitleText());

我对此感到非常沮丧。提前谢谢。

如果没有您正在查询的URL,很难说出可能的错误。然而,在一段时间以前使用HTML单元后,我发现它在许多我需要从中获取数据的站点上失败了。网站所有者会做很多事情来避免您使用程序访问它们,您可能不得不求助于使用一些较低级别的库,比如您可以更好地控制引擎盖下发生的事情


还要检查网站是否使用JavaScript构建,JavaScript越来越流行,但越来越难以使用程序查询内容。

据我所知,这与HttpS无关。使用Charles或Fiddler进行流量分析是个好主意。 你能看到的

从服务器返回的页面作为对您第一次调用的响应,以加载一些外部javascript。然后故事开始了:

这个JS看起来像

(function() {
    var z = "";
    var b = "766172205f3078666.....";
    eval((function() {
        for (var i = 0; i < b.length; i += 2) {
            z += String.fromCharCode(parseInt(b.substring(i, i + 2), 16));
        }
        return z;
    })());
})();
好了,现在我们有了模糊的javascript。如果你喜欢,你可以从开始,以获得一些更可读的文本,但这是一个步骤,我已经停止了我的分析。看起来这个脚本做了一些非常糟糕的事情,或者有人仍然相信默默无闻的安全性

如果您使用HtmlUnit运行此程序,则会对这些代码进行解释-是的,解码工作正常,代码运行正常。遗憾的是,这段代码无休止地运行(可能是因为一个错误或与真实浏览器不兼容)


如果你想让它工作,你必须弄清楚错误在哪里,并为HtmlUnit打开一个bug报告。为此,您可以简单地从一个小的本地HTML文件开始,并包含来自第一个外部javascript的代码。然后添加一些日志语句以获得解码版本。然后将其替换为解码版本,并尝试了解发生了什么。您可以开始添加警报语句,并检查HtmlUnit中的代码是否遵循与浏览器相同的路径。很抱歉,我的时间有限,无法完成所有这些工作,但如果您能指出HtmlUnit中与实际浏览器不同的特定功能,我真的很想提供帮助/修复。

您是否有一个示例url来重现您的问题。你使用最新的HtmlUnit版本吗?是的,我使用最新的版本。无效的url是,有效的url是
var _0xfbfd = ['\x77\x71\x30\x6b\x77 ....
(function (_0x2ea96d, _0x460da4) {
    var _0x1da805 = function (_0x55e996) {
        while (--_0x55e996) {
            _0x2ea96d['\x70\x75\x73\x68'](_0x2ea96d['\x73\x68\x69\x66\x74']());
        }
    };
.....