Python 爬虫 · http 协议基础

Python 学习第 27 天:


一、http vs https

1. http 超文本传输协议

**· 默认端口:**80

**· 超文本:**超过文本,意指不仅限于文本,还包括图片、音频、视频等文件

**· 传输协议:**使用约定好的固定格式来转递转换或字符串的超文本内容

**注意:**http 采用明文传输,也就是说在传输过程中,如果超文本内容被截取,截取方可以直接读取其内容,具有极大的不安全性。

2. https 具有安全套接字层的超文本传输协议

**·**http + ssl(安全套接字层)

**· 默认端口:**443

**·**ssl 用于对传输的内容(超文本,也就是请求体或响应体)进行加密

二、爬虫关注的请求头

1. 必带 / 最容易被封

**· User - Agent:**标识浏览器 / 设备,如果不带,基本会被拦截;

**· Referer:**标识从哪个界面跳转,用于站点校验;

**· Origin:**常用于跨域请求,主要用于 POST、接口请求;

**· Host:**目标域名,requests 会自动带,但在手动构造时需要注意标注。

2. 登录 / 权限相关

**· Cookie:**登录态、会话标识,很多数据必须带 Cookie 才能爬;

**· Authorization:**Token 认证,常见于 RESTful / 小程序 / App 端口。

3. 反爬高频检测项

**· Accept:**接受的数据类型有 text、html、application、json 等;

**· Accept - Language:**语言 zh - CN,zh;q=0.9;

**· Accept - Encoding:**压缩方式 gzip、deflate、br;

**· Content - Type:**POST 提交时必须正确。

**表单:**application / x - www - form - urlencoded

**JSON:**application / json;

**FormData:**multipart / form - data。

4. 进阶反扒 / 风控常用

**· X - Requested - With:**标识 AJAX,XMLHttpRequest;

**· Sec - Fetch - Site / Sec - Fetch - Mode / Sec - Fetch - Dest:**浏览器安全指纹,用于现代站点检验;

**· DNT:**Do Not Tiack,可有可无,但带上会让爬虫更像 "真人"。

5. 移动端 / APP 爬虫常用

· X - Requested - With

**·**将 User - Agent 改为 手机 / APP

**·**自定义头:token / device - id / vuid / sign

三、爬虫关注的相应头

1. 状态与结果相关

**· Status Code:**状态码

**200:**成功;

**301:**永久重定向(Permanent Redirect),旧地址彻底废弃,浏览器会记住新地址,以后直接访问新地址。方法:GET 请求会保留,POST 会变成 GET;

**302:**临时跳转,新的 url 在响应的 Location 头中给出。方法:POST 可能变成 GET;

**303:**浏览器对于 POST 的响应进行重定向至新的 url。强制使用 GET 访问新地址;

**307:**临时重定向(Temporary Redirect),严格保留原请求方法(POST 还是 POST,不会变)。不会修改请求方式;

**308:**永久重定向(Permanent Redirect),严格保留原请求方法(POST 永远是 POST,不会变)。永久跳转,且不改变请求方式;

403: 资源不可用 / 服务器理解客户的请求,但拒绝处理,即客户无权限;

404: 找不到该界面;

500: 服务器内部错误;

**503:**服务器由于维护或负载过量未能应答。

2. 重定向相关

**· Location:**重定向目标地址

**· Set - Cookie:**服务器设置新 Cookie,必须在爬虫时自动保存或在后续请求中带上,否则会导致会话丢失、登陆失败、触发反爬等

4. 内容与编码相关

**· Content - Type:**返回内容的类型 text / html ; charset = utf - 8、application / json、image / png、application / octet - stream

**· Content - Encoding:**反映是否压缩,gizp、br、requests 会自动解压

**· Content - Length:**反映内容大小,用于下载、判断是否完整

5. 缓存控制相关

**· Cache - Control:**用于控制是否缓存,no - cache、max - age = 等

**· Expires:**反映资源过期时间

**· Etag / Last - Modified:**用于协商缓存,爬虫可用于判断页面是否更新

6. 反爬与风控相关

**· Server:**反映服务器信息,有时能看出用了什么防护

**· Via / X - Powered - By:**中间代理、框架信息

**· WWW - Authenticate:**反映需要身份验证

**· Set - Cookie 里的特殊字符:**如典型风控标识 __cfduid、__RequestVerificationToken、sessionid 等

7. 下载与附件相关

**· Content - Disposition:**如表示下载文件 attachment、filename = "xxx.zip"

8. 跨域与安全相关

**· X - Frame - Options:**反映是否允许 iframe 嵌套

**· X - XSS - Protection / X - Content - Type - Options:**反映安全策略,可以辅助判断站点防护程度

9. 页面刷新相关

**· Refresh:**自动跳转页面,如 Refresh: 5 ; url = ...

四、浏览器 vs 爬虫爬取

浏览器与爬虫爬取本质上都是向服务器发起请求、接收响应、解析数据,也都使用想用的网络协议,请求头、响应头、状态码、Cookie、重定向机制都完全一样。它们的目标都是获取服务器资源,如网页、图片、接口数据、文件等。且都会被服务器反爬策略检测,如 UA、Cookie、访问频率、行为特征都会被风控识别。但它们之间的区别在于:

|---------------------|-----------------------------------------------|-------------------------------------------------------------------------|
| | 浏览器 | 爬虫爬取 |
| 是否执行 JavaScript | 是,执行 JS,加载 CSS、图片、发起异步请求(AJAX / fetch) | 否,不执行 JS,只获取原始 HTML。看不到动态加载内容。想要动态内容必须用 Selenium、Playwright、Pyppeteer 等 |
| 是否渲染页面 | 是,渲染成可视化界面 | 否 |
| 请求行为特征 | 一次打开页面会开发请求几十次资源(JS / 图片 / 字体),行为自然 | 通常之请求目标接口 / 页面,请求序列单一、频率高、无鼠标行为,容易被风控识别 |
| 请求头与指纹 | 自带完整请求头 + 浏览器指纹(UA、Sec - Fetch、Canvas、WebGL等) | 请求头往往不完整,指纹缺失,容易被识别为机器 |
| Cookie 与会话管理 | 自动管理 Cookie,自动携带、自动更新 Set - Cookie | 需要手动维护 Coo/kie 会话,否则容易掉线、被判定异地登录 |
| 并发与频率 | 人工操作,速度慢、间隔随机 | 可高并发、高速访问,极易触发限流 / 封禁 |
| 目的 | 给人看,追求体验 | 给程序提取数据,追求效率 |

相关推荐
书到用时方恨少!4 小时前
Python Pandas 使用指南:数据分析的瑞士军刀
python·数据分析·pandas
智算菩萨5 小时前
【Pygame】第8章 文字渲染与字体系统(支持中文字体)
开发语言·python·pygame
:mnong5 小时前
全图纸语义理解升级分析
python·openvino·paddleocr·qt6.3·paddleocr-vl
qh0526wy5 小时前
pathlib 核心功能一览
python
Hello eveybody6 小时前
PyCharm性能调优避坑录
python·pycharm
¥-oriented6 小时前
【Python桌面应用开发环境搭建指南】
开发语言·python
Etherious_Young6 小时前
用u2写一个实况足球图像识别自动化脚本(3)
python·自动化·游戏自动化
项目管理小胡6 小时前
2026年项目管理工具选型指南:功能对比、适用场景与避坑建议
java·python·安全·团队开发·个人开发
雷帝木木6 小时前
Python 数据库 ORM 实战:SQLAlchemy 详解
人工智能·python·深度学习·机器学习