2017-05-03 34 views
-1

我使用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可能可以解決它,但在這種情況下,這些方法是無法使用的問題。

回答

0

我找到了解決方案 - 當然這是一個非常簡單而實用的解決方案。

我必須在Chrome開發人員工具中的「保留日誌」上設置一個勾號,以覆蓋實際發佈數據的重定向調用。在此之後,我可以看到帖子數據並可以用Unirest複製它