程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> http 代理 測試,http代理

http 代理 測試,http代理

編輯:C#入門知識

http 代理 測試,http代理


Technorati 標記: http 代理驗證及測試 Technorati 標記: C#

參考了網上很多資料,綜合整理出來最終的代碼:

 
using System; 
using System.Collections; 
using System.Collections.Generic; 
using System.Configuration; 
using System.Diagnostics.Contracts; 
using System.IO; 
using System.Linq; 
using System.Net; 
using System.Net.NetworkInformation; 
using System.Text; 
using System.Threading.Tasks; 
using static System.Console; 
using static System.GC; 
using static System.Net.WebRequest;

namespace 代理測試 
{ 
    class Program 
    { 
        int printCount; 
        Uri uri; 
        Encoding bin; 
        string[] IpSectionSpan = { "10.197.255.", "10.197.198." }; 
        NetworkCredential credit;

        [STAThread] 
        static void Main(string[] args) 
        { 
            new Program(); 
            ReadKey(); 
        }

        public Program() 
        { 
            var dr = new AppSettingsReader();

            credit = new NetworkCredential( 
                dr.GetValue("uid", typeof(string)).ToString(), 
                dr.GetValue("pwd", typeof(string)).ToString());

            //var creadentiCache = new CredentialCache(); 
            uri = new Uri("http://wwww.baidu.com/");

            bin = Encoding.GetEncoding("UTF-8");

            //測試 IpSectionSpan 中所有IP段中所有IP 
            TestIPSetions(); 
        }

        private void TestIPSetions() 
        { 
            //for (int i = 1; i < 255; i++) 
            //{ 
                TestInSpan(198.ToString()); 
            //} 
        }

        private void TestInSpan(string ipSect) 
        { 
            for (var i = 255; i > 0; i--) 
            { 
                var wproxy = new WebProxy(@"10.137." + ipSect + "." + i, 3128); 
                //uri = new Uri("http://10.137.255." + i+":3128/"); 
                //creadentiCache.Add(uri, "Basic", credit); 
                //wproxy.Credentials = creadentiCache; 
                wproxy.Credentials = credit;

                //Collect(); 
                var req = Create(uri) as HttpWebRequest; 
                req.PreAuthenticate = true; 
                req.Timeout = 1000; //超時 
                req.Proxy = wproxy; 
                req.KeepAlive = false;

                try 
                { 
                    WebResponse resp;

                    req.BeginGetResponse(ra => 
                    { 
                        try 
                        { 
                            using (resp = req.EndGetResponse(ra)) 
                            { 
                                if (resp != null) 
                                { 
                                    var sr = new StreamReader(resp.GetResponseStream(), bin); 
                                    var str = sr.ReadToEnd(); 
                                    if (!str.Contains("百度")) return; 
                                    WriteLine("{0}\t:{1} \t 驗證成功!", printCount++, wproxy.Address); 
                                    sr.Close(); 
                                    sr.Dispose(); 
                                } 
                            } 
                        } 
                        catch (Exception ex) 
                        { 
                            WriteLine("{0}\t:{1} \t 驗證失敗,失敗原因:\t {2}", printCount++, wproxy.Address, ex.Message); 
                        }

                    }, null); 
                } 
                catch (Exception e) 
                { 
                    WriteLine(e.Message); 
                } 
            } 
        } 
    } 
} 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved