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复制它