你的位置:首页 > ASP.net教程

[ASP.net教程]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);         }       }     }   } }