博主信息
Laical
博文
27
粉丝
0
评论
0
访问量
12882
积分:0
P豆:64

隧道转发的原理

2020年10月10日 17:29:59阅读数:174博客 / Laical/ 网络爬虫教程

网络爬虫都知道使用HTTP代理去进行业务采集,效果和质量都会上升。使用过HTTP代理的爬虫用户都知道,代理分为两种。一种是传统的API优质代理和隧道转发的爬虫代理加强版。
API代理:
传统API提取式代理,通过URL定时获取代理IP信息,需验证IP的可用性、更换代理设置,同时需要设计多线程异步IO,实现代理IP并发处理,不仅繁琐,而且影响效率。
隧道转发代理:
“亿牛云爬虫代理IP”通过固定云代理服务地址,建立专线网络链接,代理平台自动实现毫秒级代理IP切换,保证了网络稳定性和速度,避免爬虫客户在代理IP策略优化上投入精力。
隧道转发代理的工作流程:
设置一个隧道代理服务器,发出请求随机分配一个代理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. }

以上可看出API代理使用比较麻烦,而隧道转发代理使用方便简单,速度快。

全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论
  • 扬声器工作是电动机,因为扬声器是利用了通电导体在磁场中受力,将电信号化为声信号,所以与电动机相同。
    重中之重、Vue双向数据绑定是什么?vue面试题,干货,面试绝对问
    下面由Laravel教程栏目给大家介绍laravel事件实现,希望对需要朋友有所帮助!
    大多数人都知Node.js中require()函数做什么,但是有多少人知工作呢?我们每天使用它加载库包和模块,但是它内部行为很神秘。
    本文分享12高频vue面试题,覆盖了 vue 核心实现,其实一个框架实现一篇文章是不可能说完,希望通过这 12 问题,让读者对自己 Vue 掌握程度有一定认识(B 数),从而弥补自己不足
    正向代是一个位于客户端和始服务器之间服务器,客户端向代送一个请求并指定目标(始服务器),然后代始服务器交请求并将获得内容返回给客户端。
    想必大家都知,JavaScrip是全栈开语言,浏览器,手机,服务器端都可以看到JS身影。 本文会分享一些高效JavaScript最佳实践,提高大家对JS底层和实现解。
    ngrx/store灵感来源于Redux,是一款集成RxJSAngular状态管库,由Angular者Rob Wormald开
    linux作用:1、linux是开放源代码操作系统,可以让你知系统是怎样工作;2、Linux系统是由C语言写成,可以让你领悟C语言;3、linux能当服务器,学好linux,可以进行服务器维护或
    首先你对Vue需要有一定了解,知MVVM。这样才能更有助于你顺利完成下面阅读学习和编写。
    很多人都想知单线程 Node.js 怎么能与多线程后端竞争。考虑到其所谓单线程特性,许多大公司选择 Node 作为其后端似乎违反直觉。要想知因,必须解其单线程真正含义。
    网络延迟因:1、本机到服务器之间路由跳数过多,本机到服务器链路中有太多路由了;2、网络带宽不够,或处带宽不够,但需要处信息量过大,则超额网络流量就会导致设备反应缓慢,造成网络延迟。
    模块是Node.js里面一个很基本也很重要概念,各种生类库是通过模块提供,第三方库也是通过模块进行管和引用
    下面由Laravel教程栏目给大家介绍Laravel生命周期,希望对需要朋友有所帮助!世间万物皆有生命周期,当我们使用任何工具时都需要解它工作,那么用起来就会得心应手,应用开也是如此。
    PHP8Alpha版本,过几天就要布了,其中包含了不少新特性,今天呢,我想谈谈Attributes,为啥呢, 是昨天我看到很多群在一个文章,叫做《解PHP8中Attributes》,说实在
    php实现重定向页面跳方法:可以利用header()函数来进行重定向。header()函数用于向客户端HTTP报头。
    dmp文件是可以删除;dmp文件是windows系统中错误储文件;Windows操作系统中内存储文件,当Windows生错误蓝屏时候,系统将当前内存中数据直接写到文件中去,方便定位故障
    下面由Redis教程​栏目给大家介绍分析redis及实现,希望对需要朋友有所帮助!redis是nosql(也是个巨大map) 单线程,但是可处1秒10w...
    照片失真是指图片在过程中图像信息丢失,而产生图像质量下降现象;失真又称“畸变”,指信号在传输过程中与有信号或标准相比所偏差,在放大器中,输出波形除放大外,应与输入波形完全相同。
    Wi-Fi信号差解决方法:1、在路由器后台管页面中WIFI设置中改变频,切换至不那么拥挤;2、进入控制面板找到网络适配器名称,然后去官方网站下载最新驱动,进行安装即可;3、调整路由器放置位置