
qq:800819103
在线客服,实时响应
qq群
在线客服,实时响应
客服电话
13318873961http代理是如何爬取数据的? Web 代理是一种存在于网络中间的实体,提供各式各样的功能。现代网络系统中,Web 代理无处不在。我之前有关 HTTP 的博文中,多次提到了代理对 HTTP 请求及响应的影响。今天这篇文章,我打算谈谈 HTTP 代理本身的一些原理,以及如何用 Node.js 快速实现代理。
HTTP 代理存在两种形式,分别简单介绍如下:
第一种是 RFC 7230 - HTTP/1.1: Message Syntax and Routing(即修订后的 RFC 2616,HTTP/1.1 协议的第一部分)描述的普通代理。这种代理扮演的是「中间人」角色,对于连接到它的客户端来说,它是服务端;对于要连接的服务端来说,它是客户端。它就负责在两端之间来回传送 HTTP 报文。
第二种是 Tunneling TCP based protocols through Web proxy servers(通过 Web 代理服务器用隧道方式传输基于 TCP 的协议)描述的隧道代理。它通过 HTTP 协议正文部分(Body)完成通讯,以 HTTP 的方式实现任意基于 TCP 的应用层协议代理。这种代理使用 HTTP 的 CONNECT 方法建立连接,但 CONNECT 最开始并不是 RFC 2616 - HTTP/1.1 的一部分,直到 2014 年发布的 HTTP/1.1 修订版中,才增加了对 CONNECT 及隧道代理的描述,详见 RFC 7231 - HTTP/1.1: Semantics and Content。实际上这种代理早就被广泛实现。
普通代理
第一种 Web 代理原理特别简单:
HTTP 客户端向代理发送请求报文,代理服务器需要正确地处理请求和连接(例如正确处理 Connection: keep-alive),同时向服务器发送请求,并将收到的响应转发给客户端。
下面这张图片来自于《HTTP 权威指南》,直观地展示了上述行为:
假如我通过代理访问 A 网站,对于 A 来说,它会把代理当做客户端,完全察觉不到真正客户端的存在,这实现了隐藏客户端 IP 的目的。当然代理也可以修改 HTTP 请求头部,通过 X-Forwarded-IP 这样的自定义头部告诉服务端真正的客户端 IP。但服务器无法验证这个自定义头部真的是由代理添加,还是客户端修改了请求头,所以从 HTTP 头部字段获取 IP 时,需要格外小心。这部分内容可以参考我之前的《HTTP 请求头中的 X-Forwarded-For》这篇文章。
给浏览器显式的指定代理,需要手动修改浏览器或操作系统相关设置,或者指定 PAC(Proxy Auto-Configuration,自动配置代理)文件自动设置,还有些浏览器支持 WPAD(Web Proxy Autodiscovery Protocol,Web 代理自动发现协议)。显式指定浏览器代理这种方式一般称之为正向代理,浏览器启用正向代理后,会对 HTTP 请求报文做一些修改,来规避老旧代理服务器的一些问题,这部分内容可以参考我之前的《Http 请求头中的 Proxy-Connection》这篇文章。
还有一种情况是访问 A 网站时,实际上访问的是代理,代理收到请求报文后,再向真正提供服务的服务器发起请求,并将响应转发给浏览器。这种情况一般被称之为反向代理,它可以用来隐藏服务器 IP 及端口。一般使用反向代理后,需要通过修改 DNS 让域名解析到代理服务器 IP,这时浏览器无法察觉到真正服务器的存在,当然也就不需要修改配置了。反向代理是 Web 系统最为常见的一种部署方式,例如本博客就是使用 Nginx 的 proxy_pass 功能将浏览器请求转发到背后的 Node.js 服务。
隧道代理
第二种 Web 代理的原理也很简单:
HTTP 客户端通过 CONNECT 方法请求隧道代理创建一条到达任意目的服务器和端口的 TCP 连接,并对客户端和服务器之间的后继数据进行盲转发。
下面这张图片同样来自于《HTTP 权威指南》,直观地展示了上述行为:
假如我通过代理访问 A 网站,浏览器首先通过 CONNECT 请求,让代理创建一条到 A 网站的 TCP 连接;一旦 TCP 连接建好,代理无脑转发后续流量即可。所以这种代理,理论上适用于任意基于 TCP 的应用层协议,HTTPS 网站使用的 TLS 协议当然也可以。这也是这种代理为什么被称为隧道的原因。(部分转载)
相关文章内容简介
1 http代理是如何爬取数据的?
http代理是如何爬取数据的?∵Web∵代理是一种存在于网络中间的实体,提供各式各样的功能。现代网络系统中,Web∵代理无处不在。我之前有关∵HTTP∵的博文中,多次提到了代理对∵HTTP∵请求及响应的影响。今天这篇文章,我打算谈谈∵HTTP∵代理本身的一些原理,以及如何用∵Node.js∵快速实现代理。 HTTP∵代理存在两种形式,分别简单介绍如下: ... [阅读全文]
最新标签
推荐阅读
26
2019-04
免费代理IP软件如何使用?
当今时代,互联网上的免费代理IP软件可谓是层出不穷,每一家在使用方法上都有所不同。其中,拥有一定知名度的黑洞代理浏览器绝对属于代理IP软件中的佼佼者。
10
2019-01
自动换IP软件哪家的比较好用?
我们平常的工作经常需要换ip来开展业务,尤其是一些需要换IP平台推广如:百度知道、天涯论坛、百度贴吧、搜狗问问等。然而这些平台都是目前国内影响力最大,代理IP做网站推广必不可少的
30
2019-01
使用代理切换IP连不上网怎么回事
很多人在切换IP当中,发现切换自己的IP地址后连接不上网络的问题,这是怎么回事呢?这到底是代理的问题,还是IP本身问题,或者是设备的问题?怎么找出原因,并解决的?
16
2019-04
换ip软件有什么作用?
在现如今我们不论是衣食住行还是工作中都离不开互联网,而用来连接互联网的电子计算机都会有一个ip地址,主要是用来确定计算机的具体位置同事也是为了标识计算机,毕竟每天都会有不计
热门文章