Java:后请求登录远程网站,在登录按钮上使用JavaScript

问题描述:

我使用Unirest与Java,试图登录远程网页。Java:后请求登录远程网站,在登录按钮上使用JavaScript

我可以用Chrome开发者工具和HTTP Trace是该网站是在头使用POST使用XMLHttpRequest看到:

POST [现场] /Services/UserService.asmx/Authenticate
产地:[现场]
X-DevTools - 模拟 - 网络的条件,客户端ID:86825bab-dcb4-4bef-885e-5350c11fe43b
X-要求 - 由于:XMLHttpRequest的
的User-Agent:Mozilla的/ 5.0(Windows NT的10.0; Win64平台; 64 )AppleWebKit/537.36(KHTML,如Gecko)Chrome/57.0.2987.133 Safari/537.36
Content-Type:application/json;字符集= UTF-8
接受:/
Referer的:[站点]
接受编码:gzip,放气,BR
接受语言:DA-DK,哒; 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部分的代码剪断(它在.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); 
... 

我的问题是,我可以“模拟”以上的JavaScript,与Unirest(或类似于Java),所以我可以登录页面? 如果是这样,怎么样?
或者有没有办法“旁路”是?

我很喜欢Selenium和PhantomJS可能可以解决它,但在这种情况下,这些方法是无法使用的问题。

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

我必须在Chrome开发人员工具中的“保留日志”上设置一个勾号,以覆盖实际发布数据的重定向调用。在此之后,我可以看到帖子数据并可以用Unirest复制它