• c# 代理IP获取通用方法


    c# 代理IP获取通用方法

    调用:

           ConcurrentQueue<string> proxyIpQueue = new ConcurrentQueue<string>();
                    Grab_ProxyIp(proxyIpQueue);

    返回结果:

    一下是获取代理IP集合的方法:

            #region 生产IP 代理 对象
            private void Grab_ProxyIp(ConcurrentQueue<string> proxyIpQueue)
            {
                HashSet<string> proxyIp = new HashSet<string>();
    
                HttpHelper http = new HttpHelper();
                HttpItem para = new HttpItem();
                para.Timeout = 1000 * 10;
                para.Method = "GET";
    
                int count = 0;
                para.URL = "http://www.xicidaili.com/nn/1"; // 西刺
                RetryFunc(() =>
                {
                    HttpResult result = http.GetHtml(para);
                    if (result.StatusCode == System.Net.HttpStatusCode.OK)
                    {
                        string regex = @"<td>(d+.d+.d+.d+)</td>s+<td>(d+)</td>";
                        Match mstr = Regex.Match(result.Html, regex);
                        while (mstr.Success && count < 20)
                        {
                            proxyIp.Add(mstr.Groups[1].Value + ":" + mstr.Groups[2].Value);
                            mstr = mstr.NextMatch();
                            count++;
                        }
    
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }, 10);
    
                count = 0;
                para.URL = "http://ip84.com/dlgn"; // IP巴士
                RetryFunc(() =>
                {
                    HttpResult result = http.GetHtml(para);
                    if (result.StatusCode == System.Net.HttpStatusCode.OK)
                    {
                        string regex = @"<td>(d+.d+.d+.d+)</td>s+<td>(d+)</td>";
                        Match mstr = Regex.Match(result.Html, regex);
                        while (mstr.Success && count < 10)
                        {
                            proxyIp.Add(mstr.Groups[1].Value + ":" + mstr.Groups[2].Value);
                            mstr = mstr.NextMatch();
                            count++;
                        }
    
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }, 10);
    
                count = 0;
                para.URL = "http://www.ip3366.net/free/?stype=1"; // 云代理
                RetryFunc(() =>
                {
                    HttpResult result = http.GetHtml(para);
                    if (result.StatusCode == System.Net.HttpStatusCode.OK)
                    {
                        string regex = @"<td>(d+.d+.d+.d+)</td>s+<td>(d+)</td>";
                        Match mstr = Regex.Match(result.Html, regex);
                        while (mstr.Success && count < 10)
                        {
                            proxyIp.Add(mstr.Groups[1].Value + ":" + mstr.Groups[2].Value);
                            mstr = mstr.NextMatch();
                            count++;
                        }
    
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }, 10);
    
                count = 0;
                para.URL = "http://www.iphai.com/free/ng"; // IP海
                RetryFunc(() =>
                {
                    HttpResult result = http.GetHtml(para);
                    if (result.StatusCode == System.Net.HttpStatusCode.OK)
                    {
                        string regex = @"<td>s+(d+.d+.d+.d+)s+</td>s+<td>s+(d+)s+</td>";
                        Match mstr = Regex.Match(result.Html, regex);
                        while (mstr.Success && count < 10)
                        {
                            proxyIp.Add(mstr.Groups[1].Value + ":" + mstr.Groups[2].Value);
                            mstr = mstr.NextMatch();
                            count++;
                        }
    
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }, 10);
    
                count = 0;
                para.URL = "http://www.66ip.cn/nmtq.php?getnum=10&isp=0&anonymoustype=3&start=&ports=&export=&ipaddress=&area=1&proxytype=2&api=66ip"; // 66ip
                RetryFunc(() =>
                {
                    HttpResult result = http.GetHtml(para);
                    if (result.StatusCode == System.Net.HttpStatusCode.OK)
                    {
                        string regex = @"(d+.d+.d+.d+):(d+)<br/>";
                        Match mstr = Regex.Match(result.Html, regex);
                        while (mstr.Success && count < 10)
                        {
                            proxyIp.Add(mstr.Groups[1].Value + ":" + mstr.Groups[2].Value);
                            mstr = mstr.NextMatch();
                            count++;
                        }
    
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }, 10);
    
                foreach (var item in proxyIp)
                {
                    proxyIpQueue.Enqueue(item);
                }
            } 
            #endregion
  • 相关阅读:
    sslforfree的证书合并成类似于certbot的ssl证书文件
    190129 胡思乱想
    Android deprecated apache module (HttpClient, HttpResponse, etc.)
    黑阀 adb 命令
    windows10 vs2019 + opencv 3.4.7环境搭建
    ASP.NET MVC 微信公众号支付,微信公众平台配置
    jQuery 滚动条 滚动到底部(下拉到底部) 加载数据(触发事件、处理逻辑)、分页加载数据
    js显示yyyy年mm日dd天 星期几 的格式日期
    jQuery对 动态添加 的元素 绑定事件(on()的用法)
    Jquery判断页面图片是否加载失败,加载失败则显示默认图片
  • 原文地址:https://www.cnblogs.com/yidanda888/p/12768351.html
Copyright © 2020-2023  润新知