c# 模擬網站登陸
我們在寫灌水機器人、抓資源機器人和Web網遊輔助工具的時候第一步要實現的就是使用者登入。那麼怎麼用C#來模擬一個使用者的登入拉要實現使用者的登入,那麼首先就必須要了解一般網站中是怎麼判斷使用者是否登入的。
HTTP協議是一個無連線的協議,也就是說這次對話的內容和狀態與上次的無關,為了實現和使用者的持久互動,網站與瀏覽器之前在剛建立會話時將在服務 器記憶體中建立一個Session,該Session標識了該使用者(瀏覽器),每一個Session都有一個唯一的ID,第一次建立會話時伺服器將生成的這 個ID傳給瀏覽器,瀏覽器在接下來的瀏覽中每一個發向伺服器的請求中都將包含該SessionID,從而標識了自己的身份。
伺服器上是使用記憶體來儲存Session中的資訊,那麼瀏覽器又使用什麼來儲存伺服器分配的這個SessionID了對,是Cookie。在剛建立 會話時瀏覽器向伺服器的請求中將不包含SessionID在Cookie中,伺服器就認為是一個全新的會話,從而在伺服器上分配一段記憶體給該 Session用,同時將該Session的ID在Http Header中使用Set-Cookie傳送給瀏覽器。
現在原理已經搞清楚了,那麼我們就來實現一個網站的登入嘛。下面以某某大學的管理資訊系統來進行檢驗(注意:這裡的缺陷就在於沒有驗證碼的識別和多個伺服器的跳轉)難度相對來說要小很多。
首先先用httpAnaly或者是httpwatch等專用的抓包工具,來獲取網頁提交時候的資料資訊和頭資訊。以下程式碼包含了登陸和在登陸後獲取另一個頁面資料資訊。
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--> 1 private void Form1_Load(object sender, EventArgs e)
2 {
3
4 string username = "xxxx";//使用者名稱
5 string password = "xxxx";//密碼
6 //新建一個用於儲存cookies的容器
7 CookieContainer container = new CookieContainer();
8 //拼接post資料
9 string postData = ("username=" + username);
10 postData += ("&passwd=" + password);
11 postData += ("&login=%B5%C7%A1%A1%C2%BC");
12 ASCIIEncoding encoding = new ASCIIEncoding();
13 byte[] data = encoding.GetBytes(postData);
14 HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://xxxx/xxxx/login.asp");
15 request.Method = "Post";
16 request.ContentType = "application/x-www-form-urlencoded";
17 request.ContentLength = data.Length;
18 request.KeepAlive = true;
19 request.CookieContainer = container; //返回的cookie會附加在這個容器裡面
20 //傳送資料
21 Stream newStream = request.GetRequestStream();
22 newStream.Write(data, 0, data.Length);
23 newStream.Close();
24 //以下倆句不可缺少
25 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
26 response.Cookies = container.GetCookies(request.RequestUri);
27
28 HttpWebRequest requestScore = (HttpWebRequest)WebRequest.Create("http://xxxx/xxxx/Score.asp");
29 postData = "term=&TermList=%C7%EB%D1%A1%D4%F1&ckind=&lwPageSize=100&lwBtnquery=%B2%E9%D1%AF";
30 data = encoding.GetBytes(postData);
31 requestScore.Method = "Post";
32 requestScore.ContentType = "application/x-www-form-urlencoded";
33 requestScore.ContentLength = data.Length;
34 requestScore.KeepAlive = true;
35
36 //使用登陸的cookies通過接下來的驗證
37 requestScore.CookieContainer = container;
38 Stream stream = requestScore.GetRequestStream();
39 stream.Write(data, 0, data.Length);
40 stream.Close();
41 HttpWebResponse responseSorce = (HttpWebResponse)requestScore.GetResponse();
42 StreamReader reader = new StreamReader(responseSorce.GetResponseStream(), Encoding.Default);
43 string content = reader.ReadToEnd();
44 textBox1.Text = content;
45
46 }
出處:http://cnblogs.com/xiaoxia
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-617195/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 網站模擬登陸的滑塊驗證碼識別網站
- Python模擬登陸某網教師教育網Python
- 通過抓包實現Python模擬登陸各網站原理分析Python網站
- 通過session模擬登陸Session
- 使用OkHttp模擬登陸LeetCodeHTTPLeetCode
- 模擬部落格園登陸!
- 模擬登陸——以github為例Github
- 爬蟲之普通的模擬登陸爬蟲
- Python模擬微博登陸,親測有效Python
- 使用postman模擬登陸post請求方法Postman
- 使用Selenium模擬登陸百度盤
- JS逆向實戰26——某店ua模擬登陸JS
- 用不同的庫實現模擬登陸知乎!
- 《巴士模擬21》現已登陸PC、PlayStation®和Xbox!
- 如何登陸網站後臺伺服器網站伺服器
- SpringBoot之網站的登陸註冊邏輯Spring Boot網站
- 登陸公司網站顯示亂碼怎麼辦?網站
- 怎麼查詢登陸網站後臺?(如何查詢網站後臺地址)網站
- 如何通過Python暴力破解網站登陸密碼Python網站密碼
- 【Python】python程式碼來登陸網站簽到米粒VPNPython網站
- 科幻模擬潛艇遊戲《潛淵症Barotrauma》現已登陸STEAM!遊戲
- 模擬城市建設類VR遊戲 《迷你都市》登陸PICO平臺VR遊戲
- C#七層登陸及程式碼展示C#
- 利用CSP探測網站登陸狀態(alipay/baidu為例)網站AI
- Python-模擬登入Python
- selenium模擬登入12306
- PbootCMS網站初次登陸失敗(賬號和密碼都對)boot網站密碼
- C#開發——網站應用微信登入開發C#網站
- python 爬蟲網頁登陸Python爬蟲網頁
- SSH安全登陸原理:密碼登陸與公鑰登陸密碼
- 帝國CMS網站忘記後臺登陸密碼怎麼辦?網站密碼
- 利用Python模擬GitHub登入PythonGithub
- 實戰:Mailivery 模擬登入AI
- 【Java】——模擬登入實現Java
- 易優cms網站後臺登陸驗證碼錯誤,如何不使用驗證碼登陸?或者如何修復?網站
- VR火星模擬器《MarsVR》嚐鮮版登陸Steam,助你探索火星荒漠研究中心VR
- C# Post 模擬表單提交C#
- C#專案—模擬考試C#
- 讓我大吃一塹的前後分離 web 站模擬登入Web