您的位置:首页 > 代理IP资讯
发布时间:2020-04-02 17:09:06
爬虫代理ip的获取与检测

  现如今大数据时代,数据的信息的重要性已经涉及到很多的方面。爬虫也因此应运而生,成为了很火的一种技术。现在从事爬虫技术工作的人很多,很多的不管大还是小的公司,只要对数据有需求都需要用到爬虫,而爬虫代理对于数据的获取又是一个不可或缺的要素,很多的代理商也因此诞生。今天我们来分享下大家在数据采集过程必须的过程吗,代理IP的获取与检测。


  许多写爬虫的朋友第一个碰到的难题就是:在对某个网站进行了持续一段时间的爬取之后,网站的反爬虫机制会返回一些错误的结果给爬虫,503、407,,,,要不就是强制给你跳转到登录界面,让你获取elements的时候出错。或者最厉害的就是出现验证码。这时要应对这些问题就需要用到代理IP。接下里以爬取拉勾网的所有招聘信息为例,为大家解决这个问题。


  由于现在网站的代理商很多,代理质量也是参差不齐,但是有点是肯定的,免费的代理质量是不会好到哪里去的,至于付费代理,只有大家实际的去测试了才知道效果。毕竟很多宣传和实际也是有出入的。下文介绍的是亿牛云代理,个人觉得质量很好。


  C Sharp


  //要访问的目标页面


  stringtargetUrl="ttps://weibo.com";


  //代理服务器


  stringproxyHost="http://t.16yun.cn";


  stringproxyPort="6447";


  //代理隧道验证信息


  stringproxyUser="16IXNGXO";


  stringproxyPass="366338";


  //设置代理服务器


  WebProxy proxy=newWebProxy(string.Format("{0}:{1}",proxyHost,proxyPort),true);


  ServicePointManager.Expect100Continue=false;


  varrequest=WebRequest.Create(targetUrl)asHttpWebRequest;


  request.AllowAutoRedirect=true;


  request.KeepAlive=true;


  request.Method="GET";


  request.Proxy=proxy;


  //request.Proxy.Credentials=CredentialCache.DefaultCredentials;


  request.Proxy.Credentials=newSystem.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.82 Safari/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(varresponse=request.GetResponse()asHttpWebResponse)


  using(varsr=newStreamReader(response.GetResponseStream(),Encoding.UTF8))


  {


  stringhtmlStr=sr.ReadToEnd();


  }


  我这个是使用的动态转发代理,程序不需要自己管理ip池,配置好就可以直接采集数据,这个比较方便节约时间,他们的后台会自动切换ip。只要程序跑起来采集到数据就是代理用上了。不过这个需要看业务需求,如果需要自己管理ip池,自己控制ip的使用那可以换成api模式的。代理虽然是采集数据的但是程序的反爬策略优化也是不能少的,需要完善自己的爬虫程序,ua,cookie等都需要完善才能更好的采集数据。


上一篇 下一篇