当前位置: 代码迷 >> C# >> http 署理 测试
  详细解决方案

http 署理 测试

热度:647   发布时间:2016-04-28 08:26:33.0
http 代理 测试
Technorati 标记:
Technorati 标记:

参考了网上很多资料,综合整理出来最终的代码:

 
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);                 }             }         }     } } 
  相关解决方案