實現校園網的網關自動認證。
從網上找到了兩種思路:一種是模擬網站的點擊動作,實現自動登錄。第二種是自動向登錄目標發送登陸字符串。
下面是源碼:
第一種:
//webBrowser1.Url =new Uri("http://);
////定義html元素 通過Name獲取控件值
//HtmlElement tbUserid = webBrowser1.Document.All["DDDDD"];
//HtmlElement tbPasswd = webBrowser1.Document.All["upass"];
//HtmlElement btnSubmit = webBrowser1.Document.All["0MKKey"];
//////定義html元素 通過ID獲取控件值 (用戶名 密碼 登錄按鈕)
////HtmlElement tbUserid = webBrowser1.Document.GetElementById("DDDDD");
////HtmlElement tbPasswd = webBrowser1.Document.GetElementById("upass");
////HtmlElement btnSubmit = webBrowser1.Document.GetElementById("0MKKey");
////三個元素其一爲空返回 加載後才執行賦值 否則會出現爲null值的崩潰錯誤
//if (tbUserid == null || tbPasswd == null || btnSubmit == null)
//{
// return;
//}
////設置元素value屬性值 (用戶名 密碼值)
//tbUserid.SetAttribute("value","111111");
//tbPasswd.SetAttribute("value", "111111");
////執行元素的方法:如click submit
//btnSubmit.InvokeMember("click");
第二種:
string username = "11";//用戶名
string password = "1111";//密碼
//新建一個用於保存cookies的容器
CookieContainer container = new CookieContainer();
//拼接post數據DDDDD=11&upass=1111&0MKKey=%C1%AC%BD%D3%CD%F8%C2%E7
string postData = ("DDDDD=" + username);
postData += ("&upass=" + password);
postData += ("&0MKKey=%C1%AC%BD%D3%CD%F8%C2%E7");
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] data = encoding.GetBytes(postData);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://");
request.Method = "Post";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
request.KeepAlive = true;
request.CookieContainer = container; //返回的cookie會附加在這個容器裏面
//發送數據
Stream newStream = request.GetRequestStream();
newStream.Write(data, 0, data.Length);
newStream.Close();
////以下倆句不可缺少
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
response.Cookies = container.GetCookies(request.RequestUri);
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);
string content = reader.ReadToEnd();
textBox3.Text = content;