分享一个Http代理Get请求(C#)

原创 2017年08月24日 21:11:47

防止目标站点封禁IP,所以使用了一个http代理Get请求,下面上代码



         try
            {
                WebProxy proxyObject = new WebProxy(ip, port);//str为IP地址 port为端口号 代理类
                HttpWebRequest Req = (HttpWebRequest)WebRequest.Create(Url);
                Req.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; QQWubi 133; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; CIBA; InfoPath.2)";
                Req.Proxy = proxyObject; //设置代理 
                Req.Method = "GET";
                Req.Timeout = 15000;
                HttpWebResponse Resp = (HttpWebResponse)Req.GetResponse();
                Encoding code = Encoding.Default;
                using (StreamReader sr = new StreamReader(Resp.GetResponseStream(), code))
                {
                    return sr.ReadToEnd();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }




什么?您是说您没有代理IP吗?


刚刚百度了一下免费代理IP的网站,然后写下了一个比较简单的爬代理IP的方法,下面上代码


	    List<string[]> IPList = new List<string[]>(); //获取的IP存储方式为 IPList[0][0] = IP, IPList[0][1] = Prot,
	    string[] str;
            var url = Htmlbase.GetHtml("http://www.xicidaili.com/wt/");
            var reg = new Regex("<tr class.+[\r\n].+[\r\n].+[\r\n].+[\r\n]").Matches(url);
            foreach (Match m in reg)
            {
                str = new string[2];
                var ip = new Regex(@"((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)").Match(m.Value).Value;
                var html = new Regex("<td>.+</td>").Matches(m.Value);
                string port = html[1].Value.Replace("</td>", "").Replace("<td>", ""); ;
                str[0] = ip;
                str[1] = port;
                Console.WriteLine(ip);
                foreach (string[] s in IP)
                {
                    if (str[0] == s[0])
                    {
                        continue;
                    }
                }
                IPList.Add(str);
            }


接下来您是不是发现 有一个方法是无效的?请自行百度获取指定页面Html的方法吧~哈哈

玩笑玩笑~至于GetHtml方法参考我的另一篇文章吧,仅供参考你懂的。效果还不错

无视网页编码获取网页的Html


IP爬下来之后,又发现一个问题,有好多IP对于本机或者是目标是无效的,那么下面就使用一个验证代理IP的方法吧,下面上代码


 for (int i = 0; i < IPList.Count; i++)
            {
                var rs = i;
                var ip = $"{IPList[rs][0]}";
                Console.WriteLine(rs);
                var port = Convert.ToInt32(IP[rs][1]);
                try
                {
                    WebProxy proxyObject = new WebProxy(ip, port);//str为IP地址 port为端口号 
                    HttpWebRequest Req = (HttpWebRequest)WebRequest.Create("目标URL或者IP");
                    Req.Proxy = proxyObject; //设置代理 
                    Req.Method = "GET";
                    Req.Timeout = 4000;
                    HttpWebResponse Resp = (HttpWebResponse)Req.GetResponse();
                    Encoding code = Encoding.Default;
                    using (StreamReader sr = new StreamReader(Resp.GetResponseStream(), code))
                    {
                        Console.WriteLine($"IP可用 {ip}");
                        StreamWriter str = new StreamWriter("IP.txt", true);
                        str.WriteLine($"{ip}:{port}");
                        str.Close();
                    }
                }
                catch
                {
                    Console.WriteLine(ip + " 失效,删除");
                    IP.Remove(IP[rs]);
                }
            }

嗯,这样子就完美了,程序仅提供一个思路,欢迎您拿去使用



版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013542549/article/details/77542161

C#通过GET/POST方式发送Http请求

介绍http请求的两种方式,get和post方式。并用C#语言实现,如何请求url并获取返回的数据两者的区别: 参数Get请求把提交的数据进行简单编码,同时将url的一部分发送到服务器 比如url...
  • mrli113
  • mrli113
  • 2016-11-17 15:22:56
  • 19352

c#发送get请求

c#发送get请求
  • kebi007
  • kebi007
  • 2016-09-13 00:34:38
  • 3958

分享一个Http代理Get请求(C#)

防止目标站点封禁IP,所以使用了一个http代理Get请求,下面上代码 try { WebProxy proxyObj...
  • u013542549
  • u013542549
  • 2017-08-24 21:11:47
  • 21929

在一个国内免费代理网站筛选有效代理

免费代理:免费代理是有地域和实效性的,所以要频繁更新。 import random import requests import re normalHeaders = { &quot;...
  • Marvel__Dead
  • Marvel__Dead
  • 2018-02-26 11:45:39
  • 1423

[GO]HTTP 请求实例(GET)以及设置代理

GO语言在Bee框架下的应用,前台Ajax的后台HTTP请求
  • zjgdtl
  • zjgdtl
  • 2015-01-20 20:18:11
  • 1433

HTTP GET/CONNECT代理区别

举例说明: http proxy server :  127.0.0.1 8080 access web site: www.example.com/index.php   1) ...
  • kobejayandy
  • kobejayandy
  • 2014-04-27 23:24:22
  • 4173

HomeHttp 是一个免费的网站反向代理服务

HomeHttp 是一个免费的网站反向代理服务. 使用HomeHttp,可以把你部署在局域网甚至是个人电脑上的网站, 公开到互联网中. 仅需要简单地运行软件, 使用免费的二级域名, 或者绑...
  • homehttp
  • homehttp
  • 2014-11-10 19:39:12
  • 533

Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点

上一篇分享了 Nginx + Tomcat 反向代理 负载均衡 集群 部署指南,感觉还是相当实用型的,但是一般集群部署是基于大访问量的,可能有的企业用不到,类似一些企业官网,访问量并不是很大,基于这个...
  • u013354805
  • u013354805
  • 2017-03-05 10:02:52
  • 579

JAVA实现http/https的Post、Get、代理访问请求

前言平时测试的时候可能会遇到使用Java发送http或者https请求的需求.网上找了一圈暂时没有发现比较称心方便能够直接使用的代码.所以就借鉴别人的代码按自己需求改造了一下.主要实现http/htt...
  • M1mory
  • M1mory
  • 2017-08-08 22:13:24
  • 1056

C#实现http协议GET、POST请求

  • 2009年04月06日 22:18
  • 68KB
  • 下载
收藏助手
不良信息举报
您举报文章:分享一个Http代理Get请求(C#)
举报原因:
原因补充:

(最多只允许输入30个字)