HTTP/HTTPS基础知识点详解
1. URL结构
协议部分
-
`http://` - 超文本传输协议,明文传输
-
`https://` - 安全的超文本传输协议,使用SSL/TLS加密
-
爬虫注意点:HTTPS网站有TLS指纹(JA3指纹),可被用于检测爬虫
域名部分
-
顶级域名:`.com`、`.org`、`.cn`等
-
二级域名:`example.com`中的`example`
-
子域名:`blog.example.com`中的`blog`
-
爬虫注意点:有时同一网站内容在不同子域名有不同访问限制
端口部分
-
格式:`:`后跟数字,如`:80`、`:443`
-
默认端口:HTTP为80,HTTPS为443
-
爬虫注意点:非标准端口可能有不同的访问策略
路径部分
-
以`/`分隔的字符串,表示服务器上资源位置
-
示例:`example.com/news/technology`
-
爬虫注意点:URL路径通常反映网站结构,有助于构建爬虫规则
参数部分
-
以`?`开始,`&`分隔多个参数
-
格式:`?key1=value1&key2=value2`
-
爬虫注意点:参数常用于分页、筛选和搜索,对动态内容爬取至关重要
锚点部分
-
以`#`开始,指向页面特定部分
-
示例:`example.com/page#section2`
-
爬虫注意点:锚点不会发送到服务器,仅客户端有效,通常不影响爬虫数据获取
2. 请求方法
GET
-
用途:获取资源,无副作用
-
特点:参数附加在URL中,有长度限制,可被缓存
-
爬虫应用:大多数基础爬虫使用GET请求获取页面内容
POST
-
用途:提交数据,可能有副作用
-
特点:参数在请求体中,无长度限制,默认不缓存
-
爬虫应用:表单提交、登录、需要发送大量数据的场景
其他重要方法
-
HEAD:仅获取响应头,不获取响应体
-
PUT:上传资源,替换原有资源
-
DELETE:删除资源
-
OPTIONS:查询服务器支持的方法
-
爬虫应用:HEAD可用于检查资源是否存在,节省带宽
3. 请求头/响应头
常用请求头
-
`User-Agent`:标识客户端类型,爬虫必备
-
`Accept`:指定客户端接受的内容类型
-
`Accept-Language`:指定语言偏好
-
`Accept-Encoding`:指定接受的编码方式
-
`Cookie`:存储用户会话信息
-
`Referer`:标识请求来源页面
-
`Authorization`:认证信息
-
`Content-Type`:POST请求的数据类型
-
`X-Requested-With`:标识AJAX请求
常用响应头
-
`Content-Type`:返回内容的类型
-
`Content-Length`:响应体长度
-
`Content-Encoding`:响应体编码方式
-
`Set-Cookie`:设置Cookie
-
`Location`:重定向目标URL
-
`Cache-Control`:缓存控制策略
-
`ETag`:资源标识符,用于缓存验证
爬虫相关
-
反爬策略常检测的头部:`User-Agent`、`Referer`、`Cookie`
-
设置适当的`User-Agent`可降低被封风险
-
某些网站需要特定请求头值才能正常响应
4. 状态码含义
1xx - 信息性状态码
-
100 Continue:继续发送请求
-
101 Switching Protocols:协议切换
2xx - 成功状态码
-
200 OK:请求成功
-
201 Created:资源创建成功
-
204 No Content:成功但无返回内容
3xx - 重定向状态码
-
301 Moved Permanently:永久重定向
-
302 Found:临时重定向
-
304 Not Modified:资源未修改,使用缓存
4xx - 客户端错误状态码
-
400 Bad Request:请求语法错误
-
401 Unauthorized:未授权/需要身份验证
-
403 Forbidden:服务器拒绝访问
-
404 Not Found:资源不存在
-
429 Too Many Requests:请求过多(常见于爬虫被限制)
5xx - 服务器错误状态码
-
500 Internal Server Error:服务器内部错误
-
502 Bad Gateway:网关错误
-
503 Service Unavailable:服务暂时不可用
-
504 Gateway Timeout:网关超时
爬虫处理策略
-
2xx:正常处理数据
-
3xx:根据重定向目标继续请求
-
4xx:分析原因(可能是反爬措施)
-
429:实施延迟/代理策略
-
5xx:稍后重试