我正在使用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可以解决它,但在这种情况下,使用这些方法是不可能的。
答案 0 :(得分:0)
我找到了解决方案 - 当然这是一个非常简单实用的解决方案。
我必须勾选"保留日志"在Chrome开发者工具中,进行重定向调用,覆盖实际的帖子数据。在此之后,我可以看到帖子数据,并可以使用Unirest
复制它