网络编程总结
约 1236 字大约 4 分钟
2026-05-10
阅读导览
网络编程总结
本章从网络基础讲到 HTTP、requests、httpx、API Client、socket、WebSocket、爬虫和安全实践。
- 核心概念总结
- 工具对比
- 常见异常速查
- 方案选择
实践清单
学习练习清单
- 1学习路线:网络基础 → URL/HTTP → requests → Session/Cookie → API Client → 超时/重试 → asyncio + httpx → socket/WebSocket → 安全。
- 2选型一图:日常 API 用 requests,异步高并发用 httpx + asyncio,实时双向用 WebSocket,底层学习用 socket。
- 3写完网络代码的检查清单:params/timeout/raise_for_status/异常分类/敏感脱敏/限流上限 —— 缺一项就回去补。
- 4200 不等于业务成功 —— 很多接口失败也返回 200,{code: -1, msg: ...} 也要判。
- 5不设 timeout、复制浏览器 Cookie、无限重试、过早造协议 —— 这四个是 Python 网络新手最常见的坑。
本章从网络基础讲到 HTTP、requests、httpx、API Client、socket、WebSocket、爬虫和安全实践。
核心概念总结
| 概念 | 说明 |
|---|---|
| IP | 标识网络设备 |
| 端口 | 标识机器上的服务 |
| 域名 | 方便人类记忆的地址 |
| DNS | 把域名解析成 IP |
| TCP | 可靠、有序、面向连接 |
| UDP | 快速、无连接、不保证可靠 |
| HTTP | Web API 常用协议 |
| HTTPS | HTTP + TLS 加密 |
工具对比
| 工具 | 适合场景 |
|---|---|
| requests | 简单同步 HTTP 请求 |
| requests.Session | 登录态、Cookie、连接复用 |
| httpx | 同步/异步 HTTP 客户端 |
| socket | 底层 TCP/UDP 编程 |
| websockets | WebSocket 实时通信 |
| BeautifulSoup | HTML 解析 |
常见异常速查
| 问题 | 可能原因 |
|---|---|
| 连接超时 | 网络不通、服务不可达、防火墙 |
| 读取超时 | 服务响应慢、数据太大 |
| 401 | 未登录或 Token 无效 |
| 403 | 无权限 |
| 404 | URL 或资源错误 |
| 429 | 请求过多,被限流 |
| 5xx | 服务端错误 |
| JSON 解析失败 | 响应不是 JSON 或为空 |
方案选择
- 调用普通 API:requests
- 需要保持登录态:requests.Session
- 需要异步高并发请求:httpx.AsyncClient
- 需要封装第三方服务:API Client
- 需要底层 TCP 学习:socket
- 需要实时双向通信:WebSocket
- 需要提取网页数据:requests + BeautifulSoup
学习建议
- 先理解 IP、端口、域名、DNS。
- 掌握 URL 和 HTTP 基础。
- 熟练使用 requests。
- 学会 Session、Cookie 和 Token。
- 学会封装 API Client。
- 理解超时、重试、限流。
- 再学习 socket 和 WebSocket。
- 最后补充安全和最佳实践。
一张学习路线图
如果你是初学者,可以按下面顺序学习,不用一口气吃完:
网络基础概念
↓
URL、HTTP、状态码、Header
↓
requests 调用 API
↓
超时、异常处理、Session、Cookie
↓
封装 API Client
↓
爬虫、httpx、WebSocket、socket前面几步最重要。大多数日常 Python 网络任务,其实都可以用 HTTP + requests/httpx 解决。
常见任务该用什么
| 我想做什么 | 优先考虑 |
|---|---|
| 调用第三方接口 | requests / httpx |
| 下载文件 | requests 流式下载 |
| 保持登录态访问网站 | requests.Session |
| 批量请求接口 | httpx + asyncio 或控制频率的 requests |
| 抓取网页内容 | requests + BeautifulSoup |
| 实时聊天或通知 | WebSocket |
| 理解底层 TCP | socket |
工具不是越底层越好。能用 HTTP API 解决,就不要一上来自己写 socket 协议。
写网络代码的检查清单
每次写完网络请求,可以问自己:
- URL 是否由可靠方式拼接,query 是否用了
params? - 是否设置了
timeout? - 是否检查了状态码?
- 响应不是 JSON 时会怎样?
- Token、Cookie 有没有硬编码或打印到日志?
- 批量请求时是否控制了频率?
- 报错信息是否足够定位问题?
如果这些问题都有答案,你的代码通常就比“能跑就行”的脚本稳很多。
初学阶段最该避免的误区
- 不设置 timeout:程序卡住时很难排查。
- 把 200 当作唯一成功标准:有些接口业务失败也可能返回 200,需要看响应内容。
- 直接复制浏览器 Cookie:容易过期,也有泄漏风险。
- 无限重试:可能让问题更严重,尤其是写入类接口。
- 过早造协议:业务接口优先用成熟的 HTTP、WebSocket 或 SDK。
学网络编程,重点不是背协议名,而是知道每一层大概负责什么,出问题时能一步步缩小范围。
总结
网络编程的难点不只是 API,而是可靠性和安全性。真正可用的网络程序,必须能处理失败、保护敏感信息、控制资源消耗,并用清晰的结构组织请求逻辑。
重点总结
要点回收
- Python 网络编程先学 HTTP + requests/httpx,再理解 Session、超时、重试、安全和封装。
- socket 和 WebSocket 很有价值,但不是所有业务都要从底层协议开始。
- 写完网络代码后,用检查清单确认 timeout、状态码、异常、敏感信息和限流都处理过。
版权所有
版权归属:Shuo Liu
