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

时间:2017-05-03 23:56:36

标签: java request xmlhttprequest unirest

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

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

  

POST [site] /Services/UserService.asmx/Authenticate
  来源:[网站]
  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,如Gecko)Chrome / 57.0.2987.133 Safari / 537.36
  Content-Type:application / json; charset = UTF-8
  接受: /
  推荐人:[网站]
  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部分的代码片段,它处理用户名和密码(它在.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可以解决它,但在这种情况下,使用这些方法是不可能的。

1 个答案:

答案 0 :(得分:0)

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

我必须勾选"保留日志"在Chrome开发者工具中,进行重定向调用,覆盖实际的帖子数据。在此之后,我可以看到帖子数据,并可以使用Unirest

复制它