Http

HTTP 协议,即超文本传输协议,是 Web 系统最核心的内容,用于从 Web 服务器传输数据到客户端。

  • text/html:HTML 格式的文本文档。
  • image/jpeg:JPEG 格式的图片。
  • image/png:PNG 格式的图片。
  • image/webp:无损格式的图片。
  • image/gif:GIF 格式的图片。
  • text/plain:普通的 ASCII 文本文档。
  • application/json:JSON 格式的内容。
  • video/mp4:MP4 格式的视频。
  • video/quicktime:Apple 的 QuickTime 视频(MOV 格式的视频)。
  • video/x-msvideo:AVI 格式的视频。
  • video/x-flv:FLV 格式的视频。

HTTP 是应用层协议,其数据在网络中传输需要依赖于 TCP/IP 协议

TCP(Transmission Control Protocol),即传输控制协议,用于保证数据在两台主机之间传输的可靠性

TCP 实行“顺序控制”(数据会按照发送的顺序到达)和“重发控制”(传输数据时,为每个数据包启动一个超时定时器,如果定时器在超时之前,接收方确认了信息,则释放数据包占用的缓存区,否则,发送方就重新发送这个数据包)。

IP(Internet Protocol),即网际协议,负责将数据包从源发送到最终的目标计算机,但不提供可靠性传输,也不具备“重发控制”。

TCP/IP 协议通常被认为是具有 4 个层次的系统

  • 应用层:该层位于计算机网络体系结构的最上层,其他三层为其服务。日常开发以及使用的应用软件便处于应用层,如使用浏览器访问网页。TCP/IP 协议的应用架构多采用客户端/服务端(Client/Server)模型,即客户端(如浏览器)向服务端(服务器)发送请求,服务端向客户端传送数据。因此,可以看出HTTP 协议处于应用层。
  • 传送层:该层用于保证客户端与服务端之间的数据传输。
  • 网络层:该层用于选择合适的网间路由和交换节点,处理网络中流动的数据包(数据传输的最小单位)。
  • 数据链路层:该层又称为网络接口层,用于处理连接网络的硬件部分,包括操作系统、硬件驱动设备、网卡和光纤等。

在进行网络通信前,需要通过 URL 建立客户端与服务器之间的连接。

  • 统一资源定位符,是统一资源标识符 URI(UniformResource Identifier)的子集
  • 描述了请求资源在某个特定服务器的位置信息。基于 URL,可以精确地定位到网络资源。
  • 协议:该 URL 使用的协议为 HTTP,在 HTTP 后面跟“://”。有很多网站,从安全角度考虑,使用的是安全超文本传输协议(HyperText Transfer ProtocolSecure,HTTPS)。
  • HTTPS 在 HTTP 的基础上加入了安全套接层(Secure SocketsLayer,SSL)。SSL 主要用于客户端与服务器之间的身份认证和数据加密传输,其支持使用 X509 数字认证。如使用 HttpClient 处理一些 HTTPS 对应的 URL时,需要创建定制的 SSL 连接
  • 端口:位于域名的后面,域名和端口采用“:”分隔。如果使用默认端口号 80, URL 可以省略端口信息
  • 域名:没有域名,则必须有客户端可以访问到的主机 IP 地址
  • 路径:由多个“/”隔开的字符串组成,表示主机上的一个目录或文件地址。
  • 参数:以“?”开始,采用 name=value 的格式。URL 中的参数可以有多个,参数之间用一个“&”隔开。

浏览器(客户端)获取服务器资源的详细步骤

  • 浏览器从输入的URL中解析出服务器的域名和端口号(如果没有端口号,则为 80)。
  • 浏览器将服务器的域名转化为服务器的 IP 地址。
  • 基于服务器的 IP 地址及端口号,建立浏览器与服务器的 TCP 连接。
  • 浏览器向服务器发送 HTTP 请求报文。
  • 基于浏览器请求内容,服务器向浏览器返回相应的 HTTP 响应报文。
  • 浏览器获取响应报文并解析报文。
  • 关闭连接。

报文是指以一定格式组织起来的数据

  • 请求报文包括请求方法、请求的 URL、版本协议以及请求头信息。请求头信息包括Host、User-Agent 和 Accept 等。
  • 响应报文包括请求协议、响应状态码、响应头信息和响应内容。响应头信息包括 Cache-Control、Content-Type 和 Content-Encoding 等

HTTP 请求方法

  • 客户端向服务器发送请求时,需要确定使用的请求方法(也称为动作)。
  • 请求方法表明了对 URL 指定资源的操作方式,服务器会根据不同的请求方法进行不同的响应。
  • 不同的请求方法 常用放大GET和POST
    • GET:发送请求获取服务器上的某特定资源。例如,HTML 文档、PDF 和图片等。GET 是相对常见的 请求方法,但安全性较低。大多数网络爬虫,都采用GET 获取网络资源。
    • POST:向服务器提交数据,请求服务器进行处理。在通常情况下,表单提交操作需要使用 POST。
    • HEAD:与 GET 类似,只会从服务器获取资源的头信息,不能获取响应内容。
    • PUT:使用客户端向服务器传送的数据取代指定的内容。
    • DELETE:请求服务器删除指定资源。
    • CONNECT:在客户端配置代理的情况下,使用 CONNECT 建立客户端与服务器之间的联系。
    • OPTIONS:询问服务器支持的请求方法,允许客户端查看服务器的性能。
    • TRACE:对可能经过代理服务器传送到服务器上的报文进行追踪。

HTTP 状态码

  HTTP 状态码由 3 位数字组成,描述了客户端向服务器请求过程中发生的状况。
  状态码的第一个数字描述了状况类型(成功、重定向等)
image.png
  • 200:表示客户端发送的请求已被服务器正常处理。
  • 204:表示客户端发送的请求已被服务器正常处理,但在返回的响应报文中不包含实体的主体部分。
  • 301:永久性重定向,表示请求资源已被分配到新的 URL。
  • 302:临时性重定向,表示请求资源已被临时分配到新的 URL,希望用户能使用新的 URL 访问,如用户登录某网站后会通过 302 跳转到登录后的主页
  • 303:临时重定向,告知客户端请求的资源存在另一个 URL,应使用 GET 方法定向获取请求资源。
  • 403:表示客户端的请求被服务器拒绝,一般不说明拒绝的原因。使用网络爬虫短时间内获取大量数据时,会被服务器认定为攻击行为,服务器可能产生拒绝行为,同时本机的 IP 也会被封。
  • 404:表示服务器无法找到 URL 对应的资源。通常服务器会返回一个实体,以便在客户端展示给用户
  • 500:表示服务器在执行请求时发生了错误,也有可能是 Web 应用存在 bug或临时故障。
  • 503:表示服务器暂时处于超负载或正在进行停机维护状态,无法处理请求。

通用头

  通用头既可以在请求信息中出现也可以在响应信息中出现,其提供了与报文相关的基本信息
image.png
  • Cache-Control:指令可按请求和响应分类。请求消息中的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh 和 only-if-cached 等,响应消息中的指令包括 public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate 和 max-age 等


    image.png
  • Connection:主要指令有 Upgrade、keep-alive、close。Upgrade 用于检测协议是否可以使用更高版本连接控制不在转发给代理头字段。HTTP/1.1 版本的请求默认使用持久连接,当服务器想断开连接时,则 Connection 指定为 close。HTTP/1.1 之前的 HTTP 版本默认使用非持久连接,当客户端想要保持网络连
    接打开时,则 Connection 指定为 keep-alive。


    image.png

书籍参考:《网路数据采集技术—Java网络爬虫与实战》

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354