设为首页收藏本站language 语言切换
查看: 2027|回复: 0
收起左侧

[其他情况] python爬虫中IP为什么会出现延迟高的情况

[复制链接]
发表于 2023-6-25 16:37:10 | 显示全部楼层 |阅读模式
IP的的出现让我们很多的营销工作做得更便利,对于爬虫工作者来说更是让数据爬取的工作效率大幅度提升。但是我们也会遇到在使用了代理IP后出现了延迟高不稳定的情况。这是为什么呢?下面就来说一说。
QQ图片20230625152500.png
特别是在爬虫领域代理IP是必不可少的一部分,经常会看到有小伙伴在网上抱怨使用的代理IP延迟较高,导致数据的采集量下降,甚至造成掉线等情况。那么什么情情况下会出现代理ip延迟高呢?我们来分析性下原因:
1、你使用的这个代理ip池的服务器使用的人数较多,或者在使用高峰期,超过了服务器的承载能力,就会延迟较高影响了用户的正常使用;
2、客户端网络不佳,自行的网络环境问题,稍微有点波动,就会导致延迟升高。
3、要访问的目标网站不稳定,比如那种反扒很严的网站或跨国网站;
4、代理IP服务器网络环境不佳,比如不是BGP链路,无法为用户提供稳定的速度;
以上这些原因都可能会导致代理ip的延迟很高,在实际项目使用过程中午我们需要先经过严格的测试对比,严格选择优质的代理IP。经过多年爬虫经验,使用的代理很多,但是从代理使用的速度,延迟,稳定性,IP池大小,售后服务等综合来看,真正做的好没有几家,我们长期使用的有亿牛云和阿布云,这2家都是业务口碑最好的。
这里简单的给大家示例下其中一家亿牛云代理的使用,C Sharp爬虫程序配置代理ip教程,示例如下:
  1. // 要访问的目标页面
  2. string targetUrl = "http://httpbin.org/ip";


  3. // 代理服务器(产品官网 www.16yun.cn)
  4. string proxyHost = "http://t.16yun.cn";
  5. string proxyPort = "31111";

  6. // 代理验证信息
  7. string proxyUser = "username";
  8. string proxyPass = "password";

  9. // 设置代理服务器
  10. WebProxy proxy = new WebProxy(string.Format("{0}:{1}", proxyHost, proxyPort), true);


  11. ServicePointManager.Expect100Continue = false;

  12. var request = WebRequest.Create(targetUrl) as HttpWebRequest;

  13. request.AllowAutoRedirect = true;
  14. request.KeepAlive = true;
  15. request.Method    = "GET";
  16. request.Proxy     = proxy;

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

  18. request.Proxy.Credentials = new System.Net.NetworkCredential(proxyUser, proxyPass);

  19. // 设置Proxy Tunnel
  20. // Random ran=new Random();
  21. // int tunnel =ran.Next(1,10000);
  22. // request.Headers.Add("Proxy-Tunnel", String.valueOf(tunnel));


  23. //request.Timeout = 20000;
  24. //request.ServicePoint.ConnectionLimit = 512;
  25. //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";
  26. //request.Headers.Add("Cache-Control", "max-age=0");
  27. //request.Headers.Add("DNT", "1");


  28. //String encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(proxyUser + ":" + proxyPass));
  29. //request.Headers.Add("Proxy-Authorization", "Basic " + encoded);

  30. using (var response = request.GetResponse() as HttpWebResponse)
  31. using (var sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
  32. {
  33.     string htmlStr = sr.ReadToEnd();
  34. }
复制代码



您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-2-23 05:09 , Processed in 0.065000 second(s), 22 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表