前面讲了自己写函数,上一篇讲了 Python 自带的内置函数。但绝大多数实战代码,会在文件顶部出现这种东西:

import re
import requests
from bs4 import BeautifulSoup

这些就是库(library)和模块(module)——一大堆别人写好的代码,你 import 进来就能用。Python 的生产力 90% 来自库,不是来自自己写。

但对 vibe-coder 来说,真正的问题不是”怎么 import”,而是:

  1. 这个库是干啥的?AI 为什么选它?
  2. 它是标准库(Python 自带,默认安全),还是第三方(要 pip install,有风险)?
  3. pip install 那一行,我敢不敢按回车?

这一篇把这三件事讲清。


先看全景

类型装在哪怎么用风险
标准库(stdlib)装 Python 时自带import re几乎为零(Python 官方维护)
第三方库要先 pip install 下载pip install requestsimport requests有供应链风险(下面讲)

模块(module)库(library) 的区别:模块是单个 .py 文件,库是一堆模块的合集。日常对话两个词常混用,不用纠结。


import 语法:5 行学完

# 1. 整个模块全导进来
import statistics
statistics.mean([1, 2, 3])            # 调用时要写 模块名.函数名
 
# 2. 只导某个函数(调用时不用再写模块名)
from statistics import mean
mean([1, 2, 3])
 
# 3. 导多个函数,逗号分隔
from statistics import mean, median
 
# 4. 第三方库:先装再用
# 命令行: pip install requests
import requests

就这些。语法本身没难度,真正的功课是认识库评估风险


标准库:按用途记重点模块

不用装、随便用、安全。安全分析师天天用的几个:

用途模块干啥
文本搜索re正则表达式,搜日志里的模式(失败登录、IoC、邮箱)
CSV 文件csv读写 .csv(导出报告、解析告警)
JSONjson解析 API 响应、读 结构化日志
文件/路径os / pathlib遍历目录、改路径
批量匹配文件globglob.glob("logs/*.log") 找一批文件
时间戳time / datetime解析日志时间、计算间隔
统计statisticsmean() / median() 算告警均值/中位数
哈希hashlib算文件 [hash-function|hash]
命令调用subprocess调外部命令(grep[[tcpdump|tcpdump]])
加密secrets / hmac生成安全令牌、防时序攻击

不需要全背。记住”标准库里大概率有”——遇到需求先去标准库翻一下,90% 的事都有现成方案,根本不用装第三方。

举例:算一个用户一年里月均失败登录:

import statistics
monthly_failed = [20, 17, 178, 33, 15, 21, 19, 29, 32, 15, 25, 19]
print("均值:", statistics.mean(monthly_failed))    # → 35.25
print("中位数:", statistics.median(monthly_failed))  # → 20.5

178 那个月把均值拉高了——这种时候中位数比均值更能反映”正常水平”。这就是安全数据分析里一个常见小套路。


第三方库:vibe-coder 该认识的脸熟脸

不在标准库里,要 pip install。下面这些是你在 AI 给的代码里几乎一定会遇到的,认得出来就行:

干啥看到它说明什么
requests发 HTTP 请求代码要访问外部 API/网站
pandas数据表分析在处理结构化数据(CSV、Excel、日志)
numpy数值计算/数组数学密集、机器学习底层
beautifulsoup4 (bs4)解析 HTML在做爬虫/网页抓取
scapy抓包/造包网络层操作,可能是合法监控也可能是攻击工具
paramikoSSH 客户端远程控制服务器
cryptography加密原语在做加解密(默认比自己写靠谱)
pyOpenSSLTLS/证书跟 HTTPS 证书打交道
python-nmap调 nmap端口扫描
flask / fastapiWeb 框架在写 web 服务
playwright / selenium浏览器自动化模拟真人点击

vibe-coder 必会的判断:看到 import scapy / import paramiko / import python-nmap 出现在 AI 给你的代码里——先停一下,问 AI:“为什么需要这个?是不是有更轻量的方案?” 这些是双刃剑库,既能合法监控,也能拿来当攻击工具。


关键一节:pip install 那一行,你敢按回车吗?

这是 vibe-coder 最容易翻车的地方。AI 让你 pip install xxx,你照做——但 PyPI 上有几十万个包,其中相当一部分是钓饵

三种真实风险

1. Typosquatting(类型抢注)

攻击者注册和热门库只差一个字母的恶意包:

真的假的(钓饵)
requestsrequets / request / reqests
urllib3urlib3
python-dateutildateutil-python

输错一个字母,就装上了恶意包。包里可能有后门偷凭据的代码,直接在你 pip install 时跑。

2. 依赖链投毒

你装的是好包,但它依赖的某个小包被攻击者接管了。比如 2018 年 event-stream 事件:维护者把项目转让给陌生人,接手者植入恶意代码偷比特币钱包。下游所有用户跟着中招。

3. 跟系统包名撞车(xz-utils 模式)

2024 年的 xz-utils 后门是更深层的供应链攻击:攻击者花两年时间伪装成可信维护者,把后门塞进一个被几乎所有 Linux 发行版依赖的压缩工具。PyPI 上同样的剧本可以重演——一个用了多年的包,某次更新里就被夹带私货。

四道关,装包前过一遍

怎么检查触发”停手”的信号
1. 名字pypi.org 搜你要装的名字包名拼写、作者、下载量;新包或下载量 < 1000 要警惕
2. 维护活跃度看 GitHub 仓库最近 commit、issue 响应、star 数;长期无人维护 = 风险
3. 依赖树pip install --dry-runpipdeptree它要拉多少依赖?有没有奇怪的小包混在里面
4. 锁定版本requirements.txt + 精确版本号(requests==2.31.0),配合 pip-audit 扫已知漏洞看到 pip install xxx 不带版本,等于”装这个包的最新版”——下次更新可能就被投毒

一条铁律

不要让 AI 推荐什么你就装什么。 AI 可能从训练数据里学到一个当时安全、现在已经被劫持的包名。每次 pip install,过一遍上面四道关——尤其是在生产环境、安全相关项目上。

想做得更稳一点:用虚拟环境(venv / uv),让每个项目的依赖互相隔离;用 pip-audit 定期扫已知 漏洞


一句话总结

import 语法 5 行学完;标准库已经覆盖 90% 安全脚本的需求,先翻它;第三方库认脸就行,但 pip install 那一行别盲按——typosquatting、依赖链投毒、供应链攻击都在等粗心的人。写 Python 自动化的安全意识起点,就是承认”你装的每一个包,都是把别人的代码请进自己的机器”。