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);
           }
    
  • 相关阅读:
    移动端1px问题
    js几种数组排序及sort的实现
    从零开始搭建vue移动端项目到上线
    Maven项目常见错误解决方法汇总
    重读《Java编程思想》
    ubuntu开发环境下eclipse的alt+/自动补全功能不能用
    Linux环境下解压rar文件
    Ubuntu 16.04下deb文件的安装
    优化Ubuntu 16.04系统的几件事
    Ubuntu16.04 安装 “宋体,微软雅黑,Consolas雅黑混合版编程字体” 等 Windows 7 下的字体
  • 原文地址:https://www.cnblogs.com/it888/p/3844659.html
Copyright © 2011-2022 走看看