Appearance
HTTP客户端、浏览器与搜索引擎
元信息
- 目标:借"能力阶梯"(收数据→解析→执行 JS→渲染)区分命令行客户端、爬虫、无头浏览器与浏览器,由此真正抓住"前端"的定义——前端技术只在阶梯顶端那一格被执行
- 关键概念:HTTP客户端、能力阶梯、爬虫、搜索引擎、无头浏览器、渲染、SEO、语义搜索
- 关联阶段:cp1
- 常见误区:以为所有 HTTP 客户端都会"显示"网页(curl 只收字节流,渲染是浏览器独有的能力);以为爬虫和浏览器看到的是同一个页面(爬虫解析不渲染,执行 JS 的程度也不同);以为 SEO 靠堆砌关键字(其技术底座是规范的语义标记)
采用 HTTP 协议与 Web 服务器通讯的软件,统称 HTTP 客户端。但同样是"发请求、收响应",不同客户端拿到响应之后做的事差别巨大——这正是理解"什么是前端"的钥匙:前端技术,就是只有浏览器那一类客户端才执行的技术。
能力阶梯
把任意一个 URL 交给不同的客户端,观察它们各自走到哪一步,可以得到一条清晰的能力阶梯:
| 客户端 | 接收数据 | 解析理解内容 | 执行 JS | 渲染呈现 |
|---|---|---|---|---|
| 命令行客户端(curl) | ✔ | ✘ | ✘ | ✘ |
| 爬虫 / 搜索引擎 | ✔ | ✔ | 少数 | ✘ |
| 无头浏览器 headless browser | ✔ | ✔ | ✔ | ✘(不输出到屏幕等外设) |
| 浏览器 | ✔ | ✔ | ✔ | ✔ |
- 只将响应当作字节流存下来,是命令行客户端
- 能将 Web 页面解析为内存里的数据结构、进行分析和排序,但不渲染为可视的图像或可听的语音,就有了爬虫、搜索引擎与无头浏览器
- 在此之上还能解析、执行 html/css/javascript 并渲染到屏幕,才称得上 Web 浏览器
阶梯越往上,软件越复杂;而 html/css/js 之所以叫"前端"语言,是因为它们只在阶梯顶端那一格被解释执行。
命令行客户端
最小、最纯粹的 HTTP 客户端,调试接口、理解协议的第一工具。
- curl https://curl.se/windows/
- 中文手册 https://www.ruanyifeng.com/blog/2019/09/curl-reference.html
- 电子书《Everything curl》 https://curl.se/book.html
- hcurl https://github.com/vishnukumarkvs/hcurl 使用简单的纯文本格式就能定义复杂的 HTTP 请求,无论是处理 HTML、REST、SOAP 还是 GraphQL API 都游刃有余。
- Posting,一个开源的,在终端下使用的HTTP客户端,https://github.com/darrenburns/posting
- 不装任何软件也有网页版可用:httpie https://httpie.io/app
爬虫与搜索引擎
基于上述各种客户端编写的、用于批量抓取数据的软件,统称爬虫;搜索引擎则是爬虫 + 内容理解 + 排序检索的完整系统。它读取网页,对其进行解析、分类和排序,但并不渲染为可视的图像或可听的语音——目的是分析和理解网页中的内容,而不是如浏览器那样充当媒体代理或翻译。
搜索引擎与SEO
语义搜索引擎与AI
传统的搜索引擎是基于关键字的比较和分析,而下一代语义搜索引擎是对语义的分析和理解,能理解自然语言,这就是RAG、大语言模型LLM(如deepseek、千问等)。
相应地,在新一代互联网,也有了AEO、GEO等新型优化与业务模型:
https://www.ruciai.com/blog/the-differences-between-seo-and-ai-seo-and-geo
传统的搜索引擎是基于关键字比对,目标网页中一定会出现关键字,但语义引擎则不一定。
对站点的启示:想让爬虫"看懂",靠的是规范的语义标记(见语义标记)——搜索引擎优化的技术底座,正是第 2 周讲的 HTML 语义化。
浏览器家族
阶梯顶端的浏览器,也远不止桌面上的那几种:
桌面浏览器
常用的chrome、firefox、edge、IE等浏览器。
命令行浏览器
在终端里渲染网页的浏览器,是"渲染"与"图形界面"两件事相互独立的活证据:
- 类telnet浏览器 https://www.ftelnet.ca/demos/basic-demo/
- https://github.com/browsh-org/browsh
- lynx、elinks、w3m等
语音浏览器
把"渲染到屏幕"换成"渲染到语音",也是可访问性的载体:
无头浏览器
能执行 JS、能渲染为内存中的页面树,只是不输出到外设。没有界面,却是自动化测试、爬虫、AI 生成界面验证的主力工具——浏览器能力与"给人看"彻底解耦的形态。
小结
从 curl 到浏览器,处理的是同一种响应,差别只在"理解到哪一层、呈现给谁"。前端开发的全部技术都活在阶梯顶端那一格;而理解了整条阶梯,也就理解了为什么同一份 HTML,在人、爬虫和屏幕阅读器眼里是三个不同的东西。