什么是协议?
协议是网络中通信双方必须共同遵守的规则,就像两个人说话要用同一种语言一样。
常见的协议有:
- TCP/IP:网络传输基础协议(打包、路由、传输)
- HTTP:浏览器和服务器之间传递网页数据的协议
- SMTP:发邮件用的协议
- SOAP:早期Web服务数据交换用的协议(现在常被REST替代)
HTTP协议详解
HTTP 是 浏览器(客户端)和服务器之间通信的规范。它定义了消息的结构,包括请求和响应两大类。
HTTP请求结构
- 请求行:说明你要做什么
示例:GET /index.html HTTP/1.1 POST /api/user HTTP/1.1 - 请求头(Headers) :提供请求的附加信息
常见的请求头有:
User-Agent: 表明是哪个浏览器或工具发出的请求(如Chrome、爬虫)Referer: 表示当前请求是从哪个页面跳转来的(防盗链相关)Cookie: 存放登录状态、用户ID等数据
- 请求体(Body) :仅POST等方式才包含,一般用于提交表单或JSON数据
HTTP响应结构:
- 状态行:告诉客户端请求结果
示例:HTTP/1.1 200 OK HTTP/1.1 404 Not Found - 响应头(Headers) :附加信息
常见的响应头有:
Content-Type: text/html(返回的是网页)Content-Type: application/json(返回的是JSON数据)
- 响应体(Body) :真正返回的数据,比如网页HTML、JSON、图片等
请求方式 GET vs POST
| 项目 | GET | POST |
|---|---|---|
| 参数位置 | URL后面 | 请求体 |
| 安全性 | 差(明文) | 相对更好 |
| 数据长度限制 | 有限制 | 无限制(理论) |
| 用途 | 查询数据 | 提交数据 |
爬虫重点关注:
- 请求头中的:
User-Agent: 模拟正常用户访问Referer: 模拟跳转来源,绕过防盗链Cookie: 携带登录状态、反爬 token
- 响应头中的:
Set-Cookie: 服务端设置 cookieContent-Type: 判断数据类型- 其他包含
token、auth字段的内容(防爬关键)
示例请求(GET):
GET /search?q=chatgpt HTTP/1.1
Host: www.google.com
User-Agent: Mozilla/5.0
Referer: https://www.google.com/
示例响应:
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Set-Cookie: sessionid=abc123