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 会话,否则容易掉线、被判定异地登录 |
| 并发与频率 | 人工操作,速度慢、间隔随机 | 可高并发、高速访问,极易触发限流 / 封禁 |
| 目的 | 给人看,追求体验 | 给程序提取数据,追求效率 |

相关推荐
月光船幽幽24 分钟前
门控函数SHS阈值与调制机制解析
人工智能·python·算法
测试199825 分钟前
2026全新软件测试面试八股文(含答案+文档)
自动化测试·软件测试·python·测试工具·面试·职场和发展·测试用例
Zane199435 分钟前
map 比推导式快"是真的吗?一文讲透 map、filter、reduce 与 lambda 的真实性能与设计取舍
后端·python
过期的秋刀鱼!1 小时前
带替换的采样
人工智能·python·算法·决策树·机器学习
Python私教1 小时前
AI Agent 可观测性不只是日志:一套可回放的多步执行链
人工智能·后端·python
Python私教1 小时前
模型越强越不需要 Skills?我把 AI 编程能力拆成 4 层
人工智能·后端·python
databook1 小时前
如何快速构建一个数据科学应用?从零到上线
python·机器学习·scikit-learn
上下求索,莫负韶华1 小时前
切面学习笔记
笔记·python·学习
2301_806709382 小时前
国内知名的生活水箱制造厂有哪些
python·生活
学掌门2 小时前
超级菜鸟怎么学习数据分析?
python·学习·数据分析