• 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
  • 相关阅读:
    MYSQL数据库实验(存储过程与触发器)
    Markdown
    EXT文件系统
    Arch在VirtualBox虚拟机中挂载U盘
    U盘启动没有引导项
    安装ArchLinux的两篇博文
    Arch Linux上安装Win10
    Gentoo系统安装痕迹化记录
    物联网操作系统安全研究综述
    2013.06_多线程_多核多线程技术综述_眭俊华
  • 原文地址:https://www.cnblogs.com/benbenfishfish/p/5830149.html
Copyright © 2020-2023  润新知