Java: Post-request 登录远程网站,在 login-button 上使用 javascript

Java: Post-request to login on remote website, which using javascript on login-button

我正在使用 Unirest 和 Java,试图登录远程网页。

我可以通过 Chrome 开发人员工具和 HTTP Trace 看到该网站正在使用 POST 和 header 中的 XMLHttpRequest:

POST [site]/Services/UserService.asmx/Authenticate
Origin: [site]
X-DevTools-Emulate-Network-Conditions-Client-Id: 86825bab-dcb4-4bef-885e-5350c11fe43b
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
Content-Type: application/json; charset=UTF-8
Accept: /
Referer: [site]
Accept-Encoding: gzip, deflate, br
Accept-Language: da-DK,da;q=0.8,en-US;q=0.6,en;q=0.4
Cookie: ASP.NET_SessionId=xgea1elpr3dmrgbsotcghu5k; _ga=GA1.2.632065975.1472

如果我检查站点的源代码,我可以看到他们在提交按钮上使用 javascript.onClick()。 这是 javascript 部分的 code-snip 处理用户名和密码的部分(在 .onClick() 中):

    ...
    var service = new Website.Services.UserService();
                    service.Authenticate(email, password, rememberMe, referrer, 

function(result) {

                    if (!result.Authenticated) {
                        var message = result.Message || "Det var ikke muligt at logge ind med din e-mail og kode";

                        button.closest("fieldset").find(".error-text").text(message).show();
                        return;
                    } else {
                        // Redirect to my page
                        location.href = result.Url;
                    }

                }, function() {

                    alert("Det var ikke muligt at få forbindelse til serveren, opdater siden og prøv igen");

                }, true);
...

我的问题是,我可以 "simulate" 上面的 Java 脚本,使用 Unirest(或 Java 中的类似脚本)以便我可以登录页面吗? 如果是这样,怎么办?
或者有什么办法"by-pass"是?

我熟悉 Selenium 和 PhantomJS,它们可能可以解决它,但在这种情况下,这些方法无法使用。

我找到了解决方案 - 当然,这是一个非常简单实用的解决方案。

我必须在 Chrome 开发人员工具中对 "Preserve log" 设置一个勾号,执行覆盖实际 post 数据的重定向调用。在此之后,我可以看到 post 数据并可以使用 Unirest

复制它