爬虫必学:verify=False 解决网络证书问题
- 一、先明确 `verify=False` 的核心含义
- 二、为什么有的官网需要用 `verify=False`?
- 三、在项目中如何使用?
- 1. 基础用法(requests.get/post)
- 2. 关键补充:关闭证书警告
- 四、使用 `verify=False` 的风险与注意事项
- 1. 核心风险:中间人攻击(MITM)
- 总结
verify=False是 Python 爬虫中处理 HTTPS 证书问题的关键参数,尤其在爬取 CDE 官网这类可能存在证书配置问题的网站时非常实用。一、先明确verify=False的核心含义
verify是 Pythonrequests库发送 HTTPS 请求时的一个参数,作用是:
- 默认值
verify=True:requests 会自动验证目标网站的 HTTPS 证书是否合法(比如是否过期、是否由可信机构颁发),如果证书有问题,会抛出SSLError异常,请求失败; - 设置
verify=False:跳过 HTTPS 证书的验证步骤,无论证书是否合法,都会继续发送请求并接收响应,解决“证书验证失败导致爬取不了网”的问题。
二、为什么有的官网需要用verify=False?
实际爬取时可能遇到这些情况:
- 证书链不完整:服务器配置问题导致证书的中间链缺失,requests 验证时判定为“非法”;
- 本地网络环境问题:比如公司内网/代理服务器的证书拦截,导致本地验证官网证书失败;
- 证书过期/更新延迟:官网证书刚更新,但本地缓存未同步,触发验证错误。
此时设置verify=False是快速解决“爬取第一步就因证书报错”的有效手段。
三、在项目中如何使用?
1. 基础用法(requests.get/post)
这是最常见的场景,在发送请