如何写一个爬虫 - 第五篇

这可能是一篇教你如何写爬虫的博客。

这篇博客讲一下 HTTP 中 header 的作用,以及一些爬虫中会用到的部分。

Authentication

通用的 HTTP 认证框架,前后端分离的框架常用的 JWT 就是用 Authentication 做的认证。

Content-Range

在 HTTP 协议中,响应首部 Content-Range 显示的是一个数据片段在整个文件中的位置。当断点继传下载静态文件时会用到。

Content-Type

Content-Type 实体头部用于指示资源的 MIME 类型 media type

Cookie 是一个请求首部,其中含有先前由服务器通过 Set-Cookie 首部投放并存储到客户端的 HTTP cookies

对于需要进行用户身份认证的爬虫来说,这是最重要的 header 了。下一篇博客就会对这个头部进行详细的分析。

Host

Host 请求头指明了服务器的域名(对于虚拟主机来说),以及(可选的)服务器监听的 TCP 端口号。

如果没有给定端口号,会自动使用被请求服务的默认端口(比如请求一个 HTTP 的 URL 会自动使用 80 端口)。

HTTP/1.1 的所有请求报文中必须包含一个 Host 头字段。如果一个 HTTP/1.1 请求缺少 Host 头字段或者设置了超过一个的 Host 头字段,一个 400(Bad Request)状态码会被返回。

Origin

请求首部字段 Origin 指示了请求来自于哪个站点。该字段仅指示服务器名称,并不包含任何路径信息。该首部用于 CORS 请求或者 POST 请求。除了不包含路径信息,该字段与 Referer 首部字段相似。

有些网站会通过 Origin 来认证请求来源。

User-Agent

User-Agent 首部包含了一个特征字符串,用来让网络协议的对端来识别发起请求的用户代理软件的应用类型、操作系统、软件开发商以及版本号。

服务器可以用 UA 来判断用户使用的浏览器,微信与淘宝等都使用了 UA 来判断是否是手机端的访问,还有很多网站用 UA 来验证是不是真实用户。


更多的信息请参考 MDN