2011年1月31日 星期一

簡單的自動登入網頁 in C#

公司裡面使用網路需要登入認證網頁作認證。但是我不想每天都要輸入認證密碼,想要電腦自動去認證。在C#中,做到這樣的事其實很簡單。使用WebBrowser類別就可以達到模擬登入的效果了。

首先我們看網頁長怎樣。下圖是一個很典型的登入畫面
image

首先要知道網址在哪裡。將WebBrowser指向這個網址。

webBrowser1.Navigate(http://10.10.10.1/);

待網頁讀取完後,就在WebBrowserDocumentCompleted事件裡面去讀取網頁的內容。在這裡需要一點html的知識。先確認Username、Password跟Login元件的name。你應該可以找到類似這樣的html。

<p><label for="login">Username</label><br/>
<input id="user_login" name="username" size="30" type="text" /><br/></p>
<p><label for="password">Password</label><br/>
<input id="user_password" name="password" size="30" type="password" /></p>
<p><input class="button" name="commit" type="submit" value="Log in" /></p>

有了name就好辦了。

在WebBrowser裡面,可以針對name把該元件提取出來,並作一些動作。我們可以把要登入的資料寫進裡面。

HtmlElement username = webBrowser1.Document.All["username"];
username.InnerText = "David";

HtmlElement password = webBrowser1.Document.All["password"];
password.InnerText = "@#Fae@r";

接著模擬按下按鈕的行為。
HtmlElement commit = webBrowser1.Document.All["commit"];
commit.InvokeMember("click");

執行一次,試試看可不可以動吧~。使用WebBrowser好處是可以幫你處理掉一些安全認證問題,如果用socket方式寫的話,遇到SSL就頭大了。其他工具的話,AutoIt也可以達到類似的效果。

參考資料:
[1] Automated Web button click in WebBrowser control

2 則留言:

YAMAHA's Blog 提到...

我都用瀏覽器自動登入

kikilala 提到...

哪套瀏覽器
是要下載外掛嗎