源网址http://bbs.csdn.net/topics/390830518
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; } }