C​#​自​动​更​换​I​E​代​理​I​P​并​判​断​代​理​是​否​可​连​接​网​络

来源:互联网 发布:oracle sql脚本编写 编辑:程序博客网 时间:2024/05/22 04:57
using System; 
using System.Collections.Generic; 
using System.Linq; using System.Text; 
using System.Runtime.InteropServices; 
using System.Diagnostics; 
using Microsoft.Win32; 
using System.Net.NetworkInformation; 
using System.Net; using System.IO;    
namespace TestBlog { 
    class Program     { 
        [DllImport(@"wininet",         SetLastError = true,         CharSet = CharSet.Auto, 
        EntryPoint = "InternetSetOption", 
        CallingConvention = CallingConvention.StdCall)]  
        public static extern bool InternetSetOption( 
        int hInternet,         
        int dmOption,         
IntPtr lpBuffer,         
int dwBufferLength         
);   
        public static void SetProxy(string proxy){ 
            //打开注册表 
            RegistryKey regKey = Registry.CurrentUser; 
            string SubKeyPath = @"Software\Microsoft\Windows\CurrentVersion\Internet Settings";             
            RegistryKey optionKey = regKey.OpenSubKey(SubKeyPath, true); //更改健值,设置代理, 
            optionKey.SetValue("ProxyEnable", 1); 
            optionKey.SetValue("ProxyServer", proxy);  
            //激活代理设置【用于即使IE没有关闭也能更新当前打开的IE中的代理设置。】             
            InternetSetOption(0, 39, IntPtr.Zero, 0);             
InternetSetOption(0, 37, IntPtr.Zero, 0);         
}   
        static void Main(string[] args){ 
            //本事例中未对代理服务器设置密码的情况进行尝试             
           String ip = null; 
           for (int i = 1; i <254;i++ ){ 
                ip = "172.0.0." + i + ":808";
           //ip请替换为你需要查找的ip段
  SetProxy(ip); 
                if (prcessBaidu()){ 
                    Console.WriteLine(ip+"_____________TestOK");break;
                   }else{ 
                    Console.WriteLine(ip + "__false");                 
                    }             
}         
   }  
         
    //成功返回true,错误返回false  
     public static Boolean prcessBaidu(){    
      HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("http://www.163.com");        
      myRequest.Method = "POST"; 
 //采用post方式提交访问163主页 
 // Get response      
     try//当无法访问163网站时,下面的对象会有错误产生,所以用try..catch处理掉这些异常      
       { 
        Stream newStream = myRequest.GetRequestStream();//获取请求流     
        //Send the data.         
        newStream.Close();//关闭请求流    
        HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();//获取应答对象     
        StreamReader reader = new StreamReader(myResponse.GetResponseStream());//获取应答流     
string content = reader.ReadToEnd();//将流对象读取到string 中 
      if (content.IndexOf("http://reg.163.com") > -1)//如果访问网站成功,则网页中包含置顶的关键字符串“http://reg.163.com”表示访问网页成功
      {
        return true;  
      }else{ 
        return false;     
      } 
      }catch(Exception ex){} 
           return false;                        
      }     
   }
}
0 0
原创粉丝点击