最近在做一個項目,要求集成到第三方系統中,由于先前沒有做過類似的活,所以折騰了幾天,蹭著有閑情的時候記錄一下。
以下實例,都是我用asp.net語言進行開發的,關于HTML元素的獲取,使用的是Google瀏覽器。
我們拿www.51cto.com來做實例,首先進入www.51cto.com,點擊登錄,就進入到該博客的登錄頁面。使用Google瀏覽器,按下F12,找到其表單的action值,可以發現其action值為http://home.51cto.com/index.php?s=/Index/doLogin,然后點擊賬號和密碼的文本框,右擊鼠標,審查元素,分別找到其對應的name值。
下面的代碼是賬號文本框的html代碼,我們要的是其name屬性,發現只為email,同樣的方法我們可以得到密碼的name屬性。
<input name="email" type="text" class="login_shuru1" onfocus="this.className='login_shuru2';if (this.value=='用戶名/注冊郵箱') {this.value=''}" onblur="this.className='login_shuru1';if (this.value=='') {this.value='用戶名/注冊郵箱'}" value="用戶名/注冊郵箱">我們要的基本元素都已經,現在我們就可以模擬登錄51cto了,新建一個Asp.net的項目,寫上幾行html代碼,如下
<form action="http://home.51cto.com/index.php?s=/Index/doLogin" method="post" name="_DominoForm" id="form1" > <input name="email" id="email" type="hidden" value="whonest@sohu.com" /> <input name="passwd" id="passwd" type="hidden" value="passWord" /> </form>
然后再寫兩行JS代碼,進行表單提交
var theForm = document.getElementById('form1');theForm.submit();現在運行程序看一下,如果填寫的用戶名和密碼正確的話,發現就已經模擬登錄到51cto的網站了。
[多說一句:如果登錄失敗,和該網站的按鈕有點關系,按鈕是圖片按鈕,用審查元素的方法,找到button的name屬性,在Form表單下添加下面幾行代碼就可以了。]
<input type="hidden" name="button" id="button" value="登陸" /><input type='hidden' name='button.x' id='button.x' value='26' /><input type='hidden' name='button.y' id='button.y' value='86' />
[PS:這三個的值,似乎不重要,可以隨便填的]
為何要將Asp.net開發的網站拿出來單獨說明,這和它背后的實現技術有關系,詳細不說明,直接看實例。我發現博客園正好是用Asp.net開發的,所以我們就拿博客園作為實例來講,同上面的操作一樣,我們進入登錄頁面找到我們想要的幾個元素。
首先,我們我們寫上和1類似的代碼,如下
<form action="http://passport.VEVb.com/login.aspx" method="post" name="form1" id="form1"> <input name="tbUserName" id="tbUserName" type="hidden" value="TowerKing" /> <input name="tbPassword" type="txtPWD" id="tbPassword" value="password" /></form>
運行程序,我們發現壓根就沒什么發現,只是進入了一個普通的登錄頁面而已。細心的朋友應該會發現,其源碼中有幾個隱藏的div層下的input,分別是__LASTFOCUS、__EVENTARGUMENT、__EVENTTARGET、__VIEWSTATE和__EVENTVALIDATION,我們在這里比較有用的就是__VIEWSTATE和__EVENTVALIDATION這兩個玩意兒,所以我們得把代碼做個簡單的修改,修改后的代碼如下所示

<form action="http://passport.VEVb.com/login.aspx" method="post" name="form1" id="form1"> <input name="tbUserName" id="tbUserName" type="hidden" value="TowerKing" /> <input name="tbPassword" type="txtPWD" id="tbPassword" value="password" /> <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE1MzYzODg2NzZkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zd
新聞熱點
疑難解答