網站狀態驗證WebBrowser控制元件實現
現在管理的網站(主要是一些小網站)不下幾十個每天早上一來要瀏覽一遍,看一下這些網站是否能正常的訪問.這是一項枯燥又不得不做的事,後來想用程式來實現這一工作,跳離重複的去驗證工作.
首先選用的是HttpWebRequest HttpWebResponse 來讀返回狀態碼;後來發現這是徒勞的一些不能訪問的網站被劫持到“鐵通”一個固定ip的網站頁面下。又換用IPHostEntry hostentry = Dns.Resolve(url); IPEndPoint ipendpoint= new IPEndPoint(hostentry.AddressList[0],0);來找ip 結果同樣被被劫持到“鐵通”一個固定ip(可能是我對HttpWebRequest瞭解不深)。
不得不選用WebBrowser 這個比較“耗資源”的控制元件來實現了
一.首先建一個form 加入一個 linklabel 一個button 一個webbrowser 控制元件就齊了
二. 為了記錄時間加入了一個private Stopwatch sw = new Stopwatch(); //建立一個記時函式
using System.Diagnostics;
using System.Collections.Specialized;
StringCollection sc = new StringCollection();//為了記錄出錯資訊
三.將所有的網址放入一個陣列
private string[] UrlAddress()
{ string[] urladdress ={
"網站標題x", //用兩個逗號做截斷
"網站標題y"};
return urladdress;
}
四.建立按鈕響應事件
private void buttonCheck_Click(object sender, EventArgs e)
{
sw.Start();
string[] url = UrlAddress();
array = null;
this.webBrowserResult.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(browser_DocumentCompleted);//載入完成後的委託事件
for (int i = 0; i < url.Length; i++)
{
this.linkLabelUrlAddress.Text = url[i];
this.linkLabelUrlAddress.Refresh();
loading = true;
array = url[i].Split(new string[] { ".." }, StringSplitOptions.None); //分割字串
this.webBrowserResult.Navigate(array[0]);
while (loading)
{
Application.DoEvents();
}
// this.webBrowserResult.Show();
//System.Threading.Thread.Sleep(3000);
// this.webBrowserResult.Hide();
}
for (int i = 0; i < sc.Count; i++)
{
this.textBoxUrl.AppendText(sc[i]);
}
this.webBrowserResult.Visible = false;
this.textBoxUrl.Visible = true;
this.textBoxUrl.Refresh();
MessageBox.Show("查詢用時" + sw.Elapsed.ToString()); //計時顯示並結束
sw.Stop();
}
五. WebBrowser 控制元件完成載入後的事件
private void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if(this.webBrowserResult.ReadyState==WebBrowserReadyState.Complete )
{
loading = false;
if (this.webBrowserResult.Document != null)
{
string title = this.webBrowserResult.Document.Title.ToString();
string url = this.webBrowserResult.Document.Url.ToString();
if (title.Equals("中國鐵通提醒您! 您輸入的域名無法訪問!"))
{
sc.Add(url+"被鐵通截獲無法訪問!!!");
this.webBrowserResult.Stop();
}
else if(title.IndexOf(array[1])<0)
{
sc.Add(url + "訪問出現異常 ----異常提示" + title+"!!!");
this.webBrowserResult.Stop();
}
}
}
}
這個小程式可以用但是不是太理想幾十個網站大概要兩三分鐘才可以完成判斷。也沒用多執行緒(主要是不知道怎麼用)那裡要改進的希望廣大網友給我留言
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13380151/viewspace-1024233/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 為網站實現一個驗證碼網站
- C#實現JWT無狀態驗證的實戰應用C#JWT
- 直播網站原始碼,css實現狀態平滑的動畫網站原始碼CSS動畫
- 使用javascript 實現.net 驗證控制元件功能JavaScript控制元件
- web動態驗證碼的實現Web
- 實現動態驗證碼的思路
- WebBrowser 控制元件-說明Web控制元件
- 網站http請求狀態碼網站HTTP
- 驗證控制元件控制元件
- java實現動態驗證碼原始碼——繪製驗證碼的jspJava原始碼JS
- JAVAWEB實現簡訊驗證---夢網雲JavaWeb
- easy-captcha實現驗證碼驗證APT
- 阿里雲簡訊服務實現網站手機簡訊驗證碼阿里網站
- 利用IPsec實現網路安全之四(CA證書實現身份驗證)
- 使用 Testinfra 和 Ansible 驗證伺服器狀態伺服器
- 使用WebBrowser控制元件獲取網頁原始碼的方法Web控制元件網頁原始碼
- 影片直播原始碼,前端canvas動態驗證碼實現原始碼前端Canvas
- Python識別網站驗證碼Python網站
- 利用shell指令碼監控網站狀態指令碼網站
- Django實現驗證碼Django
- java實現驗證碼Java
- rails實現驗證碼AI
- 狀態模式(c++實現)模式C++
- vue的狀態管理實現Vue
- js實現身份證號碼驗證JS
- 利用IPsec實現網路安全之五(Kerveros實現身份驗證)ROS
- 夢網科技--手機簡訊驗證碼實現
- 遮蔽WebBrowser2控制元件聲音Web控制元件
- WebBrowser 控制元件設計模式設定Web控制元件設計模式
- 如何防止他人在站長平臺驗證你的網站?網站
- laravel + guzzle 讀取網站連結http狀態Laravel網站HTTP
- 簡訊驗證實現方式
- canvas實現滑動驗證Canvas
- Swift實現Touch ID驗證Swift
- lumen驗證類 實現控制器場景驗證
- Tealeaf:美國電子商務網站使用者體驗改進現狀網站
- Kubernetes 兩步驗證 - 使用 Serverless 實現動態准入控制Server
- vue+elementUI實現動態增加表單項並新增驗證VueUI