[問題] 登入網頁並存取資料

看板java作者 (菜渣)時間9年前 (2016/04/12 00:18), 編輯推噓3(309)
留言12則, 3人參與, 最新討論串1/1
各位前輩好,小弟這學期才開始寫Java,還算是新手,還請多多指教 最近興起了想要開始研究Android App的念頭 打算從寫個登入我們學校的網路大學,並存取登入後的資料的App開始下手 然而光是在研究怎麼登入這一步就卡住了 不才其實基本上一點HTML或是Javascript的基礎都沒有, 在網頁source code裡面撞了許久,摸索了些頭緒,可是有些迷惑,因此前來向前輩們討教 目前我找到的 我以為是送出登入帳密的source code是這裡 <form autocomplete="off" method="post" action="http://cu.nsysu.edu.tw/login.php" id="loginForm" name="loginForm" onsubmit="return checkLogin();" target="_self"> 而checkLogin()寫在login.js內,code如下 function checkLogin() { /* if (typeof MSG_NEED_USERNAME == "undefined") var MSG_NEED_USERNAME = "Please fill username"; if (typeof MSG_NEED_PASSWORD == "undefined") var MSG_NEED_PASSWORD = "Please fill password"; */ var node = document.getElementById("loginForm"); if (node == null) return false; if (node.username.value == "") { alert(MSG_NEED_USERNAME); node.username.focus(); return false; } if (node.password.value == "") { alert(MSG_NEED_PASSWORD); node.password.focus(); return false; } else { var pwdmask = "********************************"; /* NSYSU客製 begin 修正密碼加密方式(因為本身不存密碼, 到後端會解不開) */ // var md5key = MD5(node.password.value); // var cypkey = md5key.substr(0,4) + node.login_key.value.substr(0,4); var cypkey = node.login_key.value.substr(0,8); /* NSYSU客製 begin end */ node.encrypt_pwd.value = stringToBase64(des(cypkey, node.password.value, 1)); node.password.value = pwdmask.substr(0,node.password.value.length); } return true; } 小弟想知道的是 : 1. 我目前的認知有沒有錯誤 2. 假如我要進行"送出帳密並登入"的動作,是要使用httpclient去對應loginForm 像 https://www.ptt.cc/bbs/java/M.1206936382.A.D75.html 這篇這樣嗎 ? 3. 假如2沒有錯的話,那麼登入後的資料抓取也是透過使用httpclient嗎 ? 懇請各位前輩協助解惑,感恩 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.117.180.34 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1460391521.A.B6A.html

04/12 07:51, , 1F
其實就是知道要傳什麼值到什麼欄位,傳到哪個頁面
04/12 07:51, 1F

04/12 07:51, , 2F
然後打開cookiestore的功能 以你這個例子
04/12 07:51, 2F

04/12 07:51, , 3F
就是先將密碼加密後才傳送 其他可能還有一些驗證用欄位
04/12 07:51, 3F

04/12 07:51, , 4F
也要一併傳送 因為那就是避免機器人的欄位
04/12 07:51, 4F

04/12 07:51, , 5F
如果是用Ajax產生的值 那你還需要找可以執行js的套件
04/12 07:51, 5F

04/12 07:51, , 6F
重點是你要猜到他們在server端做了什麼處理與驗證
04/12 07:51, 6F

04/12 07:51, , 7F
不論正確與否記得將結果output出來
04/12 07:51, 7F

04/12 07:51, , 8F
登入後就跟一般爬網頁一樣了
04/12 07:51, 8F

04/13 00:59, , 9F
借問,後學目前也在研究這個,傳送帳密過去但回傳500狀態碼
04/13 00:59, 9F

04/13 00:59, , 10F
,因此我在想是不是因為沒有加密傳過去,想請問各位先學如
04/13 00:59, 10F

04/13 00:59, , 11F
何處理?
04/13 00:59, 11F

04/13 01:55, , 12F
500應該是exception了,抓log出來看死在哪一句吧...
04/13 01:55, 12F
文章代碼(AID): #1N2yvXjg (java)
文章代碼(AID): #1N2yvXjg (java)