结论先行
爬虫本身 不违法 ,但 怎么爬、爬什么、用来干什么,决定了你是否会收到律师函甚至刑事传唤。
合法爬虫的 4 条底线
1. 遵守 robots.txt
网站的 /robots.txt 是站长给出的 ” 可爬取范围 ” 声明。虽然 技术上可以无视,但如果因此被起诉,这是对方律师的第一个证据。
# 查看目标网站的 robots.txt
import requests
r = requests.get('https://example.com/robots.txt')
print(r.text)
2. 不绕过技术保护措施
以下行为属于《刑法》285 条的 ” 非法侵入计算机信息系统 ”:
- 破解验证码(特别是短信验证码)
- 绕过登录(利用 Cookie 劫持、Session 固定等)
- 使用代理 IP 池伪装请求来源(大规模如此可能被认定为 ” 规避访问控制 ”)
3. 不爬取个人信息
《个人信息保护法》规定,未经同意收集个人信息(姓名、电话、身份证、行踪轨迹等)属于违法。公开在网络上的信息≠可以爬取并存储。
真实案例:2023 年某 ” 简历大数据 ” 公司,爬取各大招聘网站的简历数据并出售,创始人被判侵犯公民个人信息罪。
4. 控制请求频率
高并发爬取导致对方服务器瘫痪,可能构成《刑法》286 条的 ” 破坏计算机信息系统罪 ”。原则上,请求频率 不应超过正常人类浏览的速度(每秒 1 - 2 次请求)。
可以爬的场景
- 公开市场数据:股票行情、天气预报、政府公开数据
- 新闻资讯:正规新闻媒体网站的正文内容(注意版权)
- 自己的数据:用爬虫自动备份自己账号下的数据(如导出微博、导出 GitHub Star 记录)
- 学术研究:在严格匿名化前提下,爬取公开社交媒体数据用于研究(需通过伦理审查)
不能爬的场景
- 需要登录才能看到的内容:即使你有账号,用爬虫批量抓取也可能违反 ToS
- 付费内容:用爬虫绕过付费墙(如知网论文、付费研报)
- 明确标注 ” 禁止爬取 ” 的内容:查看 ToS(服务条款),一般会有 ”no scraping” 条款
- 暗网数据:这个不用解释了
技术实操:一个合规的爬虫模板
import requests
import time
from urllib.robotparser import RobotFileParser
# 1. 检查 robots.txt
rp = RobotFileParser()
rp.set_url('https://example.com/robots.txt')
rp.read()
if not rp.can_fetch('MyBot', 'https://example.com/target-page'):
print('该页面不允许爬取')
exit()
# 2. 设置合理的请求头
headers = {'User-Agent': 'MyResearchBot/1.0 (+https://mysite.com/bot)',
'Accept': 'text/html',
'Accept-Language': 'zh-CN,zh;q=0.9',
}
# 3. 控制频率
for url in urls:
r = requests.get(url, headers=headers)
# 处理数据...
time.sleep(2) # 每次请求间隔 2 秒
# 4. 只收集公开可见数据,不存储个人信息
如果收到了律师函
- 立即停止爬取,删除已爬取的数据
- 不要回复 律师函,先咨询律师
- 如果确实违规,主动删除并道歉,大多数公司会撤诉
- 如果认为自己合法,准备 robots.txt 截图、ToS 截图、请求日志作为证据
总结
爬虫技术的正确用途是 提高效率 ,而不是 绕过规则。在动手之前,问自己三个问题:
- 这个目标网站允许爬取吗?(看 robots.txt 和 ToS)
- 我爬的数据涉及个人信息吗?
- 我的请求会给对方服务器造成负担吗?
三个问题有一个答案是 ” 是 ” 且你没有合法依据,就 不要爬。
正文完
发表至: 技术
2026年6月6日