学习目标
跟随架构师律师马原的脚步读完这一讲,你能:
- 理解网页内容的著作权分层
- 识别不同内容类型的法律风险
- 建立一个内容抓取的风险评估矩阵
技术原理
网页内容的著作权分析:
网页内容
├── HTML/CSS 结构 → 可能受著作权保护(编排独创性)
├── 文字内容 → 受著作权保护(原创作品)
├── 图片 → 受著作权保护(摄影作品/美术作品)
├── 视频 → 受著作权保护(视听作品)
├── 用户生成内容(UGC) → 用户享有著作权,平台可能享有邻接权
└── 数据/事实信息 → 通常不受著作权保护
知乎的反爬系统"知天监"
知乎自研的反盗版系统,功能包括:
- 内容监控:全网扫描盗版内容,覆盖网站、小程序、公众号、社群
- 反爬取:技术层面阻止爬虫抓取付费内容
- 创作者维权:帮助创作者发起维权
据报道,知乎反盗版行动已抓获犯罪嫌疑人30余名,打击近10个盗版团伙。
知乎盐言故事案的技术路径
被告人用爬虫抓取知乎盐言故事的付费内容,然后搬运到其他平台牟利。技术上,这需要:
- 绕过盐言故事的付费墙(可能需要破解登录态或内容加密)
- 抓取完整的文字内容
- 在自己的平台上原样展示或稍加修改
真实判例
知乎盐言故事案(2025年初宣判)
罪名:侵犯著作权罪。
注意:不是非法获取计算机信息系统数据罪,是侵犯著作权罪。
为什么?因为他们抓的内容——知乎上的小说、故事——是享有著作权的作品。未经许可复制、传播这些作品,符合刑法第217条侵犯著作权罪的构成要件。
这个案子的启示:爬虫的罪名,有时候不取决于"怎么抓",而取决于"抓了什么"。
龚某某案
被告人利用爬虫技术建立网站,提供淫秽视频的 BT 种子和磁力链接。罪名是传播淫秽物品牟利罪,刑法第363条。
法律分析
内容类型 × 使用方式 的风险矩阵
| 内容类型 | 内部研究 | 公开展示 | 商业出售 |
|---|---|---|---|
| 公开事实数据 | 🟢 低风险 | 🟡 中风险 | 🟠 中高风险 |
| 用户评论/UGC | 🟡 中风险 | 🟠 中高风险 | 🔴 高风险 |
| 新闻/文章 | 🟡 中风险 | 🟠 中高风险 | 🔴 高风险 |
| 付费小说/故事 | 🟠 中高风险 | 🔴 高风险 | 🔴 极高风险 |
| 图片/视频 | 🟠 中高风险 | 🔴 高风险 | 🔴 极高风险 |
| 软件/代码 | 🟠 中高风险 | 🔴 高风险 | 🔴 极高风险 |
"实质性相似"的司法认定
著作权侵权的判断标准是"接触 + 实质性相似"。爬虫抓取内容后:
- 原样展示 → 100% 实质性相似
- 改几个字 → 仍然是实质性相似
- 做摘要/节选 → 需要看比例,可能构成"合理使用"
- 深度分析/评论 → 可能构成"转换性使用",风险较低
实战输出:内容抓取风险评估矩阵
"""
内容抓取风险评估矩阵
按内容类型和使用方式评估法律风险
"""
CONTENT_RISK_MATRIX = {
# 内容类型: {使用方式: 风险等级}
'public_facts': {
'internal_research': 'low',
'public_display': 'medium',
'commercial_sale': 'medium_high',
},
'user_comments': {
'internal_research': 'medium',
'public_display': 'medium_high',
'commercial_sale': 'high',
},
'news_articles': {
'internal_research': 'medium',
'public_display': 'medium_high',
'commercial_sale': 'high',
},
'paid_content': {
'internal_research': 'medium_high',
'public_display': 'high',
'commercial_sale': 'extreme',
},
'images_videos': {
'internal_research': 'medium_high',
'public_display': 'high',
'commercial_sale': 'extreme',
},
'software_code': {
'internal_research': 'medium_high',
'public_display': 'high',
'commercial_sale': 'extreme',
},
}
RISK_DESCRIPTIONS = {
'low': '🟢 低风险 - 一般不构成侵权',
'medium': '🟡 中风险 - 注意使用范围和频率',
'medium_high': '🟠 中高风险 - 建议获得授权',
'high': '🔴 高风险 - 可能构成侵权',
'extreme': '🔴 极高风险 - 可能构成刑事犯罪',
}
def assess_content_risk(content_type, usage):
risk = CONTENT_RISK_MATRIX.get(content_type, {}).get(usage, 'unknown')
return risk, RISK_DESCRIPTIONS.get(risk, '未知风险')
# 批量评估示例
scenarios = [
('public_facts', 'internal_research'),
('paid_content', 'public_display'),
('images_videos', 'commercial_sale'),
('user_comments', 'public_display'),
]
print("=== 内容抓取风险评估 ===\n")
for content_type, usage in scenarios:
risk, desc = assess_content_risk(content_type, usage)
print(f"内容类型: {content_type} | 使用方式: {usage}")
print(f"风险等级: {desc}\n")