zoukankan      html  css  js  c++  java
  • C# 设置代理

    1.检查代理是否可用:

      /// <summary>
            ///  验证代理IP地址是否可用
           /// </summary>
           /// <param name="callback">是否可用</param>
           /// <param name="ip">地址</param>
           /// <param name="port">端口</param>
           public void ChecKedForIP(Action<bool> callback,string ip,int port,int timeout=0)
           {
               try
               {
                   string Reshtml = string.Empty;//请求返回的结果
                   WebProxy webproxy = new WebProxy(ip, port);  //实例代理设置
                   HttpWebRequest Httpweq = (HttpWebRequest)WebRequest.Create("http://www.baidu.com");
                   Httpweq.Proxy = webproxy;//模拟设置代理请求
                   HttpWebResponse HttpRespon = (HttpWebResponse)Httpweq.GetResponse();
                   Httpweq.Timeout = timeout != 0 ? timeout : 10000; //默认10秒,如果设置值,就用设置的值
                   Encoding encoding = Encoding.GetEncoding("gb2312");//设置编码格式为汉字,防止英文系统,无法解码
                   using (StreamReader reader = new StreamReader(HttpRespon.GetResponseStream(), encoding))
                   {
                       Reshtml = reader.ReadToEnd().Trim();
                       if (!string.IsNullOrEmpty(Reshtml))
                       {
                           callback(true);
                       }
                       else
                       {
                           callback(false);
                       }
                   }
    
               }
               catch (Exception)
               {
    
                   callback(false);
               }
               finally { }
               
           }
    

     2.设置好恢复代理设置

    [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
           );
    
    
           /// <summary>
           /// 设置代理
           /// </summary>
           /// <param name="ip_port">IP地址和端口</param>
           public void SetProxy(string ip_port)
           {
               //打开注册表
               RegistryKey regKey = Registry.CurrentUser;
               string SubKeyPath = @"SoftwareMicrosoftWindowsCurrentVersionInternet Settings";
               RegistryKey optionKey = regKey.OpenSubKey(SubKeyPath, true);
               //更改健值,设置代理,
               optionKey.SetValue("ProxyEnable", 1);
               if (ip_port.Length == 0)
               {
                   optionKey.SetValue("ProxyEnable", 0);
               }
               optionKey.SetValue("ProxyServer", ip_port);
    
               //激活代理设置
               InternetSetOption(0, 39, IntPtr.Zero, 0);
               InternetSetOption(0, 37, IntPtr.Zero, 0);
           }
    
           /// <summary>
           /// 不使用代理设置
           /// </summary>
           public void UnSetProxy()
           {
               RegistryKey regKey = Registry.CurrentUser;
               string SubKeyPath = @"SoftwareMicrosoftWindowsCurrentVersionInternet Settings";
               RegistryKey optionKey = regKey.OpenSubKey(SubKeyPath, true);
               //更改健值,设置代理,
               optionKey.SetValue("ProxyEnable", 0);
               //激活代理设置
               InternetSetOption(0, 39, IntPtr.Zero, 0);
               InternetSetOption(0, 37, IntPtr.Zero, 0);
           }
    
  • 相关阅读:
    linux系统调优工具
    搭建ceph分布式文件系统
    ansible管理windows主机
    jenkins结合ansible发布
    Linux系统安全配置
    tomcat 的安全配置预防后台被攻击
    【9】添加主页日志列表展示
    【8】添加新建/编辑博客逻辑
    【7】使用css/js/html模板来实现一个注册、登录和管理的功能
    Ubuntu下给Sublime Text 3添加用python3运行文件
  • 原文地址:https://www.cnblogs.com/it888/p/3844659.html
Copyright © 2011-2022 走看看