C Sharp爬虫常用设置代理IP教程

爬虫必须用代理IP吗?很多用户认为爬虫必须要用代理IP,没有代理IP将寸步难行;也有人说,代理IP是非必须的。那么他们这样认为的理由都是什么呢?
有的用户他自己写爬虫程序,公司的任务一天要爬取几十万个页面,有时任务多的时候一天要上百万,爬着爬着IP就被封了,没有代理IP根本不行,他认为没有代理ip爬虫将寸步难行。
他们说很有道理,都用亲身体验来证明了自己的观点。爬虫程序从本质上来说也是个访问网页的用户而已,只不过是个不那么守规矩的特殊用户,服务器一般很不欢迎这样的特殊用户总是用各种手段发现和禁止。最常见的就是判断你访问的频率,因为普通人访问网页的频率是不会很快的,如果发现某个ip访问的过快就会将此ip封禁。
当任务量比较大的时候,一天采集上百万的数据,慢慢爬就完不成任务了,加速爬的话,目标服务器压力太大,就会封IP,同样完不成任务。那怎么办呢,只有用代理IP来解决了。在这里我就是使用了我们长期使用的一家质量好的代理,亿牛云代理,而且是使用的他们的爬虫代理(动态转发)和一般的api模式不一样。这种更简单更方便,对于懒人来说绝对是最佳选择。
具体代码的使用
// 要访问的目标页面
string targetUrl = “http://httpbin.org/ip”;
// 代理服务器
string proxyHost = “http://t.16yun.cn”;
string proxyPort = “6447”;
// 代理隧道验证信息
string proxyUser = “16IXNGXO”;
string proxyPass = “366338”;
// 设置代理服务器
WebProxy proxy = new WebProxy(string.Format("{0}:{1}", proxyHost, proxyPort), true);
ServicePointManager.Expect100Continue = false;
var request = WebRequest.Create(targetUrl) as HttpWebRequest;
request.AllowAutoRedirect = true;
request.KeepAlive = true;
request.Method = “GET”;
request.Proxy = proxy;
//request.Proxy.Credentials =CredentialCache.DefaultCredentials;
request.Proxy.Credentials = new System.Net.NetworkCredential(proxyUser, proxyPass);
// 设置Proxy Tunnel
// Random ran=new Random();
// int tunnel =ran.Next(1,10000);
// request.Headers.Add(“Proxy-Tunnel”,String.valueOf(tunnel));
//request.Timeout = 20000;
//request.ServicePoint.ConnectionLimit = 512;
//request.UserAgent = “Mozilla/5.0 (Windows NT 6.3;Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82Safari/537.36”;
//request.Headers.Add(“Cache-Control”,“max-age=0”);
//request.Headers.Add(“DNT”, “1”);
//String encoded =System.Convert.ToBase64String(System.Text.Encoding.GetEncoding(“ISO-8859-1”).GetBytes(proxyUser+ “:” + proxyPass));
//request.Headers.Add(“Proxy-Authorization”,"Basic " + encoded);
using (var response = request.GetResponse() as HttpWebResponse)
using (var sr = new StreamReader(response.GetResponseStream(),Encoding.UTF8))
{
string htmlStr = sr.ReadToEnd();
}

你可能感兴趣的:(数据采集,爬虫代理,http代理,网络爬虫)