2017-07-18 29 views
0

我目前正在實習,我想建立一個能夠連接到公司電子郵件服務器的Android應用程序。如何找出服務器想要成功響應的https域?

但是爲了能夠將設備連接到服務器,我需要知道除了工作用戶/密碼憑證之外,服務器期望在客戶端https請求中的哪些字段。

我試着獲取有關使用tcpdumb(服務器和客戶端)和wireshark發送的數據包的信息,但它們似乎被加密或不可讀,考慮到它的https是有意義的。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>Roundcube Webmail :: Willkommen bei Roundcube Webmail</title> 
<meta name="Robots" content="noindex,nofollow" /> 
<meta http-equiv="X-UA-Compatible" content="IE=EDGE" /> 
<link rel="index" href="./?_task=login" /> 
<link rel="shortcut icon" href="skins/classic/images/favicon.ico"/> 
<link rel="stylesheet" type="text/css" href="skins/classic/common.min.css?s=1418906028" /> 

<meta http-equiv="content-type" content="text/html; charset=UTF-8" /> 
<link rel="stylesheet" type="text/css" href="plugins/jqueryui/themes/classic/jquery-ui-1.9.2.custom.css?s=1418906027"> 
<script src="program/js/jquery.min.js?s=1418906027" type="text/javascript"></script> 
<script src="program/js/common.min.js?s=1418906027" type="text/javascript"></script> 
<script src="program/js/app.min.js?s=1418906027" type="text/javascript"></script> 
<script src="program/js/jstz.min.js?s=1418906027" type="text/javascript"></script> 
<script type="text/javascript"> 
/* <![CDATA[ */ 

var rcmail = new rcube_webmail(); 
rcmail.set_env({"task":"login","x_frame_options":"sameorigin","standard_windows":false,"cookie_domain":"","cookie_path":"\/","cookie_secure":true,"skin":"classic","refresh_interval":60,"session_lifetime":600,"action":"","comm_path":".\/?_task=login","compose_extwin":false,"date_format":"yy-mm-dd","request_token":"029873c7042111df50bf712676a72046"}); 
rcmail.gui_container("loginfooter","bottomline"); 
rcmail.add_label({"loading":"Wird geladen...","servererror":"Serverfehler!","connerror":"Verbindungsfehler (Fehler beim Erreichen des Servers)!","requesttimedout":"Zeit\u00fcberschreitung der Anforderung","refreshing":"Aktualisieren\u2026"}); 
rcmail.gui_object('message', 'message'); 
rcmail.gui_object('loginform', 'form'); 
/* ]]> */ 
</script> 

<script type="text/javascript" src="plugins/jqueryui/js/jquery-ui-1.9.2.custom.min.js?s=1418906027"></script> 
<script type="text/javascript" src="plugins/jqueryui/js/i18n/jquery.ui.datepicker-de.js?s=1418906027"></script> 
</head> 
<body> 

<img src="skins/classic/images/roundcube_logo.png" id="logo" border="0" style="margin:0 11px" alt="Roundcube Webmail"> 

<div id="message"></div> 

<div id="login-form"> 
<div class="boxtitle">Willkommen bei Roundcube Webmail</div> 
<div class="boxcontent"> 

<form name="form" method="post" action="./?_task=login"> 
<input type="hidden" name="_token" value="029873c7042111df50bf712676a72046"> 
<input type="hidden" name="_task" value="login"><input type="hidden" name="_action" value="login"><input type="hidden" name="_timezone" id="rcmlogintz" value="_default_"><input type="hidden" name="_url" id="rcmloginurl" value=""><table summary="" border="0"><tbody><tr><td class="title"><label for="rcmloginuser">Benutzername</label> 
</td> 
<td class="input"><input name="_user" id="rcmloginuser" required="required" autocapitalize="off" autocomplete="off" type="text"></td> 
</tr> 
<tr><td class="title"><label for="rcmloginpwd">Passwort</label> 
</td> 
<td class="input"><input name="_pass" id="rcmloginpwd" required="required" autocapitalize="off" autocomplete="off" type="password"></td> 
</tr> 
</tbody> 
</table> 
<p class="formbuttons"><input type="submit" id="rcmloginsubmit" class="button mainaction" value="Anmelden"></p> 

</form> 

</div> 
</div> 

<noscript> 
    <p id="login-noscriptwarning">Warnung: Dieser Webmail-Service erfordert Javascript. Um ihn zu benutzten aktivieren Sie Javascript in ihren Browser-Einstellungen.</p> 
</noscript> 

<div id="login-bottomline"> 
    Roundcube Webmail 

</div> 



<script type="text/javascript"> 
/* <![CDATA[ */ 

$(document).ready(function(){ 
rcmail.init(); 
var images = ["skins\/classic\/images\/icons\/folders.png","skins\/classic\/images\/mail_footer.png","skins\/classic\/images\/taskicons.gif","skins\/classic\/images\/display\/loading.gif","skins\/classic\/images\/pagenav.gif","skins\/classic\/images\/mail_toolbar.png","skins\/classic\/images\/searchfield.gif","skins\/classic\/images\/messageicons.png","skins\/classic\/images\/icons\/reset.gif","skins\/classic\/images\/abook_toolbar.png","skins\/classic\/images\/icons\/groupactions.png","skins\/classic\/images\/watermark.gif"]; 
      for (var i=0; i<images.length; i++) { 
       img = new Image(); 
       img.src = images[i]; 
      } 
}); 
/* ]]> */ 
</script> 

</body> 
</html> 

這是從客戶端登錄頁面的代碼,有沒有一種方法,我可以根據此代碼想出服務器想要什麼? 我沒有經驗的PHP無論如何,但我在java上學期建立了休息api +客戶端。

感謝您的幫助!

+0

查看全部''元素中的'

' – Barmar

回答

0

我試圖獲得關於與tcpdumb(服務器和客戶端)和Wireshark發送的數據包的信息,但他們似乎被加密或不可讀,這是有道理的,因爲它是https。

使用瀏覽器中的開發人員工具。它們允許您在進入加密隧道之前檢查請求。

這是從客戶端登錄頁面的代碼,有沒有辦法根據這段代碼想出服務器想要的東西?

也許吧。

如果服務器使用常規表單提交,表單的字段(輸入,選擇,按鈕和textareas)會告訴您提交了哪些數據。名稱屬性告訴你字段名稱。

當提交事件觸發時,頁面中的JavaScript可能會修改表單。

我想構建一個能夠連接到公司電子郵件服務器的Android應用程序。

該HTML表明您正嘗試訪問Roundmail。上次我查了一下,那是一個與IMAP後端對話的web應用程序。

IMAP是一個有據可查的標準郵箱協議,有大量的庫可用於使用它。你會更好的只是使用它,而不是試圖屏幕刮Webmail的前端。

+0

謝謝,不知道檢查員! 我會採取你的建議,並看看IMAP,即時通訊工具與其他任何比http APIs一樣的新手。 – Huel

0

只需提交表單,然後檢查什麼被髮送到服務器(使用那個檢查員)

+0

謝謝,不知道檢查員! – Huel