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∵代理存在两种形式,分别简单介绍如下: ... [阅读全文]
最新标签
推荐阅读
10
2019-01
换IP地址软件哪个最好用?
在网上有时会碰到需要更换IP的情况,这个时候,就会用到换IP软件。虽然手动式也可以更改IP,可是特别得麻烦。因为手动式的情况下,更换IP是十分繁琐的。而软件在更换IP的时候,特别方便
22
2019-04
七大方法解决http爬虫被封代理ip的问题
之前有个邻居孩子要上学,因为没有考上重点,成绩又不算太低,所以打算上一个好一点的私立高中,家长不知道哪一所学校的口碑和往年的成绩会好一些所以,就请我一个做数据的朋友利用数
11
2018-10
安卓有没有一键自动换IP的软件?
互联网已经成为了现代社会不可或缺的重要组成部分,无论是PC端还是手机端的网民,数量早已超过了十亿。
26
2019-06
代理ip软件可以解决很多问题
代理ip浏览器谁听说过,能够干什么用?这个是能换IP的浏览器,成为网页代理软件第一名,为大家提供解读很多问题,不在局限于单一的IP了。这样的软件可以关注黑洞代理,这是一个纯净绿色
热门文章