最近學習C#網(wǎng)絡編程中,想實現(xiàn)網(wǎng)頁自動登錄并提交GET/POST信息,再實現(xiàn)循環(huán)登錄不斷發(fā)送報文給服務器,服務器發(fā)送消息給客戶端記錄能登錄的賬戶和密碼,做到后面實現(xiàn)繞過驗證碼、動態(tài)抓取登錄位置等,但由于資料很少、進度緩慢,下面這篇文章僅供大家交流閱讀。
也許你可能看過一篇文章關于C#實現(xiàn)POST提交方式中三種提取網(wǎng)頁HTML的方法:WebBrowser、WebClient、HttpWebRequest。我也看了很多人的博客,尤其是關于WebBrowser和HttpWebRequest方法,但能力有限,很多東西還是沒有實現(xiàn)成功,還在繼續(xù)研究中。
下面先講講我該階段唯一的收獲:通過WebBrowser實現(xiàn)簡單瀏覽器自動登錄技術。WebBrowser是一個簡單瀏覽器,允許用戶在該控件內瀏覽網(wǎng)頁,其實就是封裝了IE接口,實現(xiàn)GET/POST功能在WebBrowser的DocumentCompeted中實現(xiàn)。
在“C#網(wǎng)絡編程之最簡單瀏覽器實現(xiàn)”(http://blog.csdn.net/eastmount/article/details/9490009)中我通過WebBrowser控件完成了一個最簡單的瀏覽器,這里實在該程序基礎上繼續(xù)完成網(wǎng)頁自動登錄的功能實現(xiàn)。
一. 界面設計
界面如上,主要是添加一個WebBrowser控件。設置的詳細參數(shù)見網(wǎng)址:http://blog.csdn.net/eastmount/article/details/9490009
重點:點擊”WebBrowser1”控件為其在屬性對話框中添加一個事件DocumentCorr(在Web瀏覽器控件中承載的文檔全部加載后發(fā)生)。該程序主要的實現(xiàn)過程是:
1.點擊按鈕button事件Click中添加簡單瀏覽器功能;
2.再在DocumentCorr事件中查找用戶名、密碼、登錄按鈕三個html元素——HtmlElement,并賦值設置登錄狀態(tài)實現(xiàn)自動登錄。
二. 源代碼
我看了很多博客代碼,但自己實現(xiàn)起來還是非常困難的,所以我填出了所有的代碼并詳細的注釋及實現(xiàn)過程,希望能幫助初學者,高手亦可鞏固知識,對否!同時最重要的是思想。
其實使用WebBrowser控件實現(xiàn)網(wǎng)頁自動登錄的核心代碼就是:
三. 運行結果
上面源代碼中是自動登錄163郵箱的實現(xiàn):http://mail.163.com運行程序,輸入網(wǎng)址即可實現(xiàn)自動登錄163郵箱。
如圖:
其中通過查找該登錄頁面發(fā)現(xiàn)用戶名Id為“idInput”,密碼Id為“pwdInput”,登錄按鈕ID為“loginBtn”。如下圖id和name:
<inputclass="loginFormTdIpt"tabindex="1"title="請輸入賬號"id="idInput"name="username"type="text"maxlength="50"value=""..
<inputclass="loginFormTdIpt"tabindex="2"title="請輸入密碼"id="pwdInput"name="password"type="password" autocomplete="off"/>
<buttonid="loginBtn"class="btnbtn-login
formSubmit"tabindex="6"type="submit">登 錄</button>
注意:上面的值“Eastmount”、“Eastmount”是被我修改過的值,你需要填寫的是自己的密碼和用戶名。同時登錄時會出現(xiàn)一些亂碼,這些都是編碼問題,有可能有的網(wǎng)站能通過該方法實現(xiàn)自動登錄,有的網(wǎng)站不行,但我提供的是一種思想!
在運行時,我首先嘗試的是百度網(wǎng)站,但由于異地登錄有驗證碼最終失??;然后采用:https://passport.csdn.net/account/login但好像CSDN是通過https安全方式登錄也失敗,所以該例僅提供思想?yún)⒖?,最后通過163郵箱和本地網(wǎng)頁實現(xiàn)了該功能。
本地網(wǎng)址: http://localhost:1165/WebTest/MyLogin.aspx 查看源代碼可以在用戶名的Id為”userName”,密碼Id為”password”,登錄按鈕為”loginButton”,用戶名和密碼為1,設置相應的值即可實現(xiàn)登錄。下圖為瀏覽器顯示本地登錄頁面:
其實我由于最近研究HttpWebRequest、Cookies較多,更希望通過該類實現(xiàn)同樣功能,但編寫了幾個程序還是沒有實現(xiàn),還在研究中。希望這篇文章能幫助到大家,也不知道我上面的關于WebBrowser使用的敘述是否正確,如果有錯誤或不足之處,更希望大家指正,希望大家多多交流,相互學習共同進步!
同時感謝一些博客的博主,下面是一些關于WebBrowser該方面的博客,有時間可以看看,我認為都是非常優(yōu)秀的文章,同時我上面講訴的核心思想都與下面的相似的,感謝下面的博主及文章: (By:Eastmount
2013-8-1 下午4點)
參考資料:
1.C#網(wǎng)頁自動填表自動登錄—sonicrang(最簡單的代碼闡述了使用WebBrowser實現(xiàn)自動登錄)
http://blog.csdn.net/sonicrang/article/details/5878611
2.C#中的WebBrowser控件的使用—方培工作室(詳細講述了WebBrowser控件中的使用方法)
http://www.cnblogs.com/txw1958/archive/2012/09/24/CSharp-WebBrowser.html
3.C#實現(xiàn)POST提交方式—陳立國(最經典文章之一,詳細講述了三種方法:WebBrowser、WebClient、HttpWebRequest但不知道最初是那位大師人物寫的)
http://www.cnblogs.com/cgli/archive/2011/04/09/2010497.html
5.C#自動登錄Login代碼—珍惜當下(比較完整的代碼講述登錄功能,僅有代碼)
http://hi.baidu.com/zkbob22/item/da897035b65516362e0f8181
6.暴力破解網(wǎng)站密碼—相信自己(一個暴力破解全代碼,重點是思想,萬能密碼嘗試,但我沒有實現(xiàn)成功)
http://blog.sina.com.cn/s/blog_4de05339010109g7.html
7.關于C#模擬登錄的論壇討論(其中一些代碼比較優(yōu)秀)
http://bbs.csdn.net/topics/330239749?page=1
8.編程代碼實現(xiàn)網(wǎng)站自動登錄C#(與我的思想方法類似)
http://wenku.baidu.com/view/bc46ff9d6bec0975f465e208.html
9.C# WinForm WebBrowser模擬登錄打卡—Kelvin峰(過于高深,有待以后研究)
http://blog.csdn.net/llftc/article/details/7036746