《52讲轻松搞定网络爬虫》读书笔记 - HTTP基本原理

简介: 《52讲轻松搞定网络爬虫》读书笔记 - HTTP基本原理

URI 和 URL


URI :Uniform Resource Identifier,即统一资源标志符,

URL :Universal Resource Locator,即统一资源定位符。

 

举栗子,加深理解

链接https://github.com/favicon.ico,它是一个URI也是一个URL,唯一指向一个图标资源,可以通过URI/URL在互联网上找到它

 

URL和URI的关系

URL 是 URI 的子集,也就是说每个 URL 都是 URI,但不是每个 URI 都是 URL;URI还包括一个子类叫做URN(Uniform Resource Name),即统一资源名称

 

URN的作用

URN 只命名资源而不指定如何定位资源

举栗子

比如 urn:isbn:0451450523 指定了一本书的 ISBN,可以唯一标识这本书,但是没有指定到哪里定位这本书

 

URI、URL、URN的关系图

image.png


总结

但是在目前的互联网,URN 的使用非常少,几乎所有的 URI 都是 URL,所以一般的网页链接我们可以称之为 URL,也可以称之为 URI

 

HTTP协议


超文本

我们在浏览器里看到的网页就是超文本解析而成的,其网页源代码是一系列 HTML 代码,而这些可称为超文本

 

HTTP 和 HTTPS

HTTP:超文本传输协议

HTTP作用:从网络传输超文本内容到本地浏览器的协议,保证高效准确的传送超文本内容;最常用1.1版本

HTTPS:HTTP的安全版,在HTTP协议的基础上加了一层SSL协议,SSL属于安全协议


HTTPS的作用

  • 建立一个安全传输通道,保证数据传输的安全性
  • 确认网站的真实性,在浏览器可通过网站的证书查看它认证后的真实信息,也可以通过CA机构颁发的安全签章来查询

 

HTTP请求过程

image.png


在客户端(PC电脑或者手机)输入URL,回车后即可看到页面内容,那这个过程的原理是啥呢?

  1. 客户端发送请求到服务器
  2. 服务器接收请求,处理和解析请求
  3. 服务器返回对应的响应给浏览器

 

通过浏览器开发者工具的network看请求信息


image.png


  1. Name:请求名称,一般截取URL的最后一部分内容当名称
  2. Status:响应状态码
  3. Type:请求的文档类型
  4. Initiator:请求源,标记请求是由哪个对象或进程发起的
  5. Size:有三种类型 memory cache、disk cache、资源本身大小
  6. Time:完成一个请求事务的所需时间(发起请求-处理请求-返回响应)
  7. Waterfa:页面请求过程的可视化瀑布

 

memory cache、disk cache区别

memory cache:字面意思就是内存缓存,代表这个资源直接从内存获取, 不经过服务器,当关闭当前页面时,这个资源就被释放掉了

disk cache:硬盘缓存,代表这个资源从本地硬盘获取,也不经过服务器,但不会因关闭当前页面会释放掉,下次打开该页面,该资源仍然显示disk cache

 

细品一个请求的正确组成


image.png


首先,请求的组成部分

Request从客户端向服务端发送,可以分为4部分:请求方法(Request Method),请求网址(Request URL),请求头(Request Headers),请求体(Request Body)

 

然后,看General部分


已经包含了刚刚说的请求方法和请求网址

status code:响应状态码

Remote Address:远程服务器的地址和端口

Referrer Policy:Referrer 判别策略

 

请求方法

image.png


请求头

用来说明服务器要使用的附加信息,比较重要的信息有:Cookie、Refer、User-Agent

  • Accept:请求报头域,用于指定客户端可接受哪些类型的信息。
  • Accept-Language:指定客户端可接受的语言类型。
  • Accept-Encoding:指定客户端可接受的内容编码。
  • origin:请求协议+请求域名
  • referer:请求资源地址,标识这个请求是从哪个页面;作用:服务器拿到这信息做处理,如来源统计、防盗链处理
  • user-agent:俗称  UA ,让服务器识别客户端的操作系统、系统版本、浏览器版本等信息。在做爬虫时需要加上此信息,伪装成浏览器
  • Content-type:互联网媒体类型,也称MIME类型,一般叫请求的媒体类型信息;常见的有:text/html 代表 HTML 格式,image/gif 代表 GIF 图片,application/json 代表 JSON 类型
  • Cookie:存储用户信息,一般搭配服务端的Session使用

 

请求体

Query String Paramter:请求URL后面跟的请求参数,一般是GET请求的数据

Request Playload:请求数据,一般是POST请求的数据

 

POST请求提交数据方式和Content-Type的关系


image.png


细品响应的组成


一般分为三部分:响应状态码(Response Status Code)、响应头(Response Headers)、响应体(Response Body)

 

响应状态码

image.png


响应头

  • 包含了:服务器对请求的应答信息,如 Content-Type、Server、Set-Cookie 等
  • 常见响应信息有
  • Date:响应产生的时间
  • Last-Modified:资源的最后修改时间
  • Content-Encoding:响应内容的编码
  • Content-Length:响应内容长度
  • Server:包含服务器的信息,比如名称、版本
  • Content-Type:响应内容的文档类型,如果是接口响应,通常为application/json,也可能会加charset=utf-8指定字符集
  • Set-Cookie:设置 Cookies。响应头中的 Set-Cookie 告诉浏览器需要将此内容放在 Cookies 中,下次请求携带 Cookies 请求
  • Expires:指定响应的过期时间,可以让客户端将加载的内容更新到缓存中,如果再次访问时,可以直接从缓存中加载,降低服务器负载,缩短压缩时间

 

响应体

响应返回的内容都在响应体中,比如请求网页时,它的响应体就是网页的 HTML 代码;请求一张图片时,它的响应体就是图片的二进制数据;请求一个查询接口时,它响应体就是json字符串

相关文章
|
16天前
|
安全 测试技术 虚拟化
VMware-三种网络模式原理
本文介绍了虚拟机三种常见网络模式(桥接模式、NAT模式、仅主机模式)的工作原理与适用场景。桥接模式让虚拟机如同独立设备接入局域网;NAT模式共享主机IP,适合大多数WiFi环境;仅主机模式则构建封闭的内部网络,适用于测试环境。内容简明易懂,便于理解不同模式的优缺点与应用场景。
122 0
|
13天前
|
机器学习/深度学习 人工智能 算法
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic带你深入卷积神经网络(CNN)核心技术,从生物启发到数学原理,详解ResNet、注意力机制与模型优化,探索视觉智能的演进之路。
222 11
|
16天前
|
存储 网络协议 算法
从HPACK到多路复用,揭秘HTTP/2如何终结网络拥堵
HTTP/2通过HPACK压缩头部冗余信息,提升传输效率;并利用多路复用技术,在单个TCP连接上并行处理多个请求,避免队头阻塞,显著提升性能。同时支持服务器推送和流优先级设置,优化资源加载体验。
61 7
|
25天前
|
机器学习/深度学习 算法 搜索推荐
从零开始构建图注意力网络:GAT算法原理与数值实现详解
本文详细解析了图注意力网络(GAT)的算法原理和实现过程。GAT通过引入注意力机制解决了图卷积网络(GCN)中所有邻居节点贡献相等的局限性,让模型能够自动学习不同邻居的重要性权重。
115 0
从零开始构建图注意力网络:GAT算法原理与数值实现详解
|
4月前
|
JSON 中间件 Go
Go 网络编程:HTTP服务与客户端开发
Go 语言的 `net/http` 包功能强大,可快速构建高并发 HTTP 服务。本文从创建简单 HTTP 服务入手,逐步讲解请求与响应对象、URL 参数处理、自定义路由、JSON 接口、静态文件服务、中间件编写及 HTTPS 配置等内容。通过示例代码展示如何使用 `http.HandleFunc`、`http.ServeMux`、`http.Client` 等工具实现常见功能,帮助开发者掌握构建高效 Web 应用的核心技能。
246 61
|
3月前
|
机器学习/深度学习 人工智能 PyTorch
零基础入门CNN:聚AI卷积神经网络核心原理与工业级实战指南
卷积神经网络(CNN)通过局部感知和权值共享两大特性,成为计算机视觉的核心技术。本文详解CNN的卷积操作、架构设计、超参数调优及感受野计算,结合代码示例展示其在图像分类、目标检测等领域的应用价值。
180 7
|
4月前
|
Web App开发 网络协议 应用服务中间件
HTTP2.0 从原理到实践,保证把你治得服服帖帖!
HTTP/2 是 HTTP/1.1 的重要升级,通过多路复用、头部压缩、服务器推送等特性显著提升性能与效率。本文详细解析了 HTTP/2 的优势、配置方法及实际应用,涵盖 Nginx/Apache/IIS 配置、curl 测试工具使用,并对比 HTTP/1.1 指出其优化点。同时提醒需注意 HTTPS 支持、客户端兼容性等问题,助你高效掌握并运用 HTTP/2 技术。
394 5
HTTP2.0 从原理到实践,保证把你治得服服帖帖!
|
4月前
|
JSON 编解码 API
Go语言网络编程:使用 net/http 构建 RESTful API
本章介绍如何使用 Go 语言的 `net/http` 标准库构建 RESTful API。内容涵盖 RESTful API 的基本概念及规范,包括 GET、POST、PUT 和 DELETE 方法的实现。通过定义用户数据结构和模拟数据库,逐步实现获取用户列表、创建用户、更新用户、删除用户的 HTTP 路由处理函数。同时提供辅助函数用于路径参数解析,并展示如何设置路由器启动服务。最后通过 curl 或 Postman 测试接口功能。章节总结了路由分发、JSON 编解码、方法区分、并发安全管理和路径参数解析等关键点,为更复杂需求推荐第三方框架如 Gin、Echo 和 Chi。
|
3月前
|
数据采集 监控 网络协议
基于aiohttp的高并发爬虫实战:从原理到代码的完整指南
在数据驱动时代,传统同步爬虫效率低下,而基于Python的aiohttp库可构建高并发异步爬虫。本文通过实战案例解析aiohttp的核心组件与优化策略,包括信号量控制、连接池复用、异常处理等,并探讨代理集成、分布式架构及反爬应对方案,助你打造高性能、稳定可靠的网络爬虫系统。
185 0
|
5月前
|
安全 网络协议 Linux
Linux网络应用层协议展示:HTTP与HTTPS
此外,必须注意,从HTTP迁移到HTTPS是一项重要且必要的任务,因为这不仅关乎用户信息的安全,也有利于你的网站评级和粉丝的信心。在网络世界中,信息的安全就是一切,选择HTTPS,让您的网站更加安全,使您的用户满意,也使您感到满意。
145 18

热门文章

最新文章