搜档网
当前位置:搜档网 › C#自动更换IE代理IP并判断代理是否可连接网络

C#自动更换IE代理IP并判断代理是否可连接网络

C#自动更换IE代理IP并判断代理是否可连接网络
C#自动更换IE代理IP并判断代理是否可连接网络

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Runtime.InteropServices;

using System.Diagnostics;

using Microsoft.Win32;

using https://www.sodocs.net/doc/e34216026.html,workInformation;

using https://www.sodocs.net/doc/e34216026.html,;

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("https://www.sodocs.net/doc/e34216026.html,");

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("https://www.sodocs.net/doc/e34216026.html,") > -1)//如果访问网站成功,则网页中包含置顶的关键字符串“https://www.sodocs.net/doc/e34216026.html,”表示访问网页成功

{

return true;

}

else

{

return false;

}

}catch(Exception ex){

}

return false;

}

}

}

相关主题