如何采集网站而不被加入黑名单:防封策略完整指南
爬虫被封是所有从业者都会遇到的问题。但被封不是必然的——只要方法得当,你可以长期稳定地采集数据。本文总结了一套经过验证的防封策略。
为什么爬虫会被封
网站通过各种信号判断一个访问者是人是机器:
- IP 地址:同一 IP 短时间内发太多请求 → 封
- 请求频率:固定间隔、人体不可能达到的速度 → 封
- 请求头异常:缺少 Referer、UA 是默认 Python 库 → 封
- 行为模式:全站扫描不点任何链接、没有鼠标轨迹 → 封
- 浏览器指纹:Canvas、WebGL、字体等特征一致 → 封
核心防封策略
1. IP 管理
每个请求换不同 IP 是最有效的方法。使用住宅代理(Bright Data、Decodo),启用轮换。数据中心代理采集小站还行,采集大站基本秒封。
2. 请求头伪装
- 设置真实浏览器的 User-Agent
- 添加 Referer 头(从搜索结果或首页跳转)
- 设置 Accept-Language
- 携带 Cookie(先访问首页建立 Cookie)
3. 频率控制
随机延迟 3-10 秒。不要用固定间隔——让请求间隔看起来像人在操作。夜间和凌晨降低频率(人类不会在凌晨 3 点疯狂浏览网页)。
4. 行为模拟
- 先访问首页 → 模拟搜索 → 浏览结果 → 点进详情页(模仿真实用户路径)
- 在页面间引入随机浏览时间
- 使用无头浏览器时注入 JS 隐藏自动化标记
5. 浏览器环境隔离
每个账号/任务使用独立浏览器 Profile。反检测浏览器(Multilogin、AdsPower)可以帮助为每个会话创建唯一指纹。
实战注意事项
- 遵守 robots.txt
- 监控响应状态码(429=太快,403=被封,5xx=服务端问题)
- 自动重试时加退避策略(等待时间逐次翻倍)
- 维护多个代理源,一个被封后自动切换
- 测试阶段用少量 IP 验证策略,不要一上来就大规模跑
1 Response