一、两条路径:官方 API vs 第三方采集
| 维度 | 官方开放平台 API | 第三方采集方案(如 xhs 项目) |
|---|---|---|
| 适用对象 | 企业/认证开发者 | 个人开发者、中小团队 |
| 权限门槛 | 需企业资质审核,周期数周 | 无门槛,注册即用 |
| 数据合规性 | ✅ 完全合规 | ⚠️ 仅限公开数据,需自律 |
| 调用频率 | 官方限制,稳定性高 | 需自行控制频率 |
| 接口地址 | https://open.xiaohongshu.com/api/note/detail | 基于 Web 端请求封装 |
二、官方 API 完整解析
1. 接入前提
小红书开放平台 → 实名认证 → 创建应用 → 申请 red.note.detail.get 权限 → 审核通过 → 获得 app_key + app_secret
⚠️ 笔记详情 API 不对个人开发者开放,仅限通过企业资质审核的合作方。
2. 鉴权机制(双重鉴权)
| 鉴权方式 | 说明 |
|---|---|
| HMAC-SHA256 签名 | 对参数按 ASCII 升序排序,拼接 key=value 字符串,用 app_secret 生成 sign 字段 |
| Access Token | 通过 OAuth2.0 获取,用于个性化查询(如判断当前用户是否点赞) |
| 时间戳校验 | timestamp 与服务器偏差不超过 ±5 分钟,防重放攻击 |
签名生成逻辑(Python):
pythonimport hmac, hashlib, timedef generate_sign(app_secret, params): sorted_params = sorted(params.items(), key=lambda x: x[0]) sign_str = "&".join([f"{k}={v}" for k, v in sorted_params]) return hmac.new( app_secret.encode(), sign_str.encode(), hashlib.sha256 ).hexdigest()3. 请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
app_key | String | ✅ | 应用唯一标识 |
sign | String | ✅ | HMAC-SHA256 签名 |
timestamp | Long | ✅ | 当前时间戳(秒级) |
access_token | String | ❌ | 用户授权令牌,个性化查询需要 |
note_id | String | ✅ | 笔记唯一标识 |
fields | String | ❌ | 筛选字段,如 title,content,like_count |
include_comments | Bool | ❌ | 是否包含评论列表 |
4. 返回数据结构
json{ "code": 0, "msg": "success", "data": { "note_id": "648a7b2f0000000012345678", "title": "夏日穿搭|平价T恤合集", "desc": "这几件T恤真的太好穿了...", "category": "fashion", "tags": ["夏日穿搭", "平价T恤", "学生党"], "media": { "images": ["https://xxx.xiaohongshu.com/xxx/1.jpg"], "video": null }, "author": { "user_id": "12345678", "nickname": "穿搭小能手", "avatar": "https://xxx.xiaohongshu.com/xxx/avatar.jpg", "is_verified": true }, "interaction": { "like_count": 12580, "collect_count": 3620, "comment_count": 890, "share_count": 120 }, "location": {"name": "上海市徐汇区", "latitude": 31.197, "longitude": 121.436}, "status": "published", "is_commercial": false }}5. Python 调用示例
pythonimport requests, time, hmac, hashlibAPP_KEY = "your_app_key"APP_SECRET = "your_app_secret"NOTE_ID = "63f5a8a1000000001f03c4a5"def get_note_detail(note_id, access_token=None): url = "https://openapi.xiaohongshu.com/v2/note/detail" timestamp = str(int(time.time())) params = { "app_key": APP_KEY, "note_id": note_id, "timestamp": timestamp, "access_token": access_token or "" } params["sign"] = generate_sign(APP_SECRET, params) headers = {"Content-Type": "application/json"} resp = requests.get(url, params=params, headers=headers, timeout=10) return resp.json()result = get_note_detail(NOTE_ID)print(result["data"]["title"]) # 笔记标题print(result["data"]["interaction"]["like_count"]) # 点赞数三、第三方采集方案(xhs 项目)
如果无法申请官方 API,可使用开源项目 https://gitcode.com/gh_mirrors/xh/xhs,基于 Web 端请求封装,零门槛上手。
快速开始
bashpip install xhs
核心代码
pythonfrom xhs import XhsClientclient = XhsClient(cookie="你的Cookie")# 1. 搜索笔记results = client.search(keyword="早C晚A", page=1, page_size=20)for item in results["items"][:3]: print(item["title"], item["likes_count"])# 2. 获取笔记详情note = client.get_note_by_id("笔记ID")print(note["title"], note["desc"][:100], note["like_count"])# 3. 获取用户全部笔记user_notes = client.get_user_notes("用户ID")for n in user_notes[:5]: print(n["title"], n["like_count"], n["collect_count"])# 4. 获取评论comments = client.get_note_comments("笔记ID")搜索接口(无需 Cookie)
pythonimport requestsdef search_notes(keyword, page=1): url = "https://www.xiaohongshu.com/api/sns/web/v1/search/notes" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...", "Referer": "https://www.xiaohongshu.com/" } params = { "keyword": keyword, "page": page, "page_size": 20, "sort": "general" # hot=按热度 } resp = requests.get(url, headers=headers, params=params, timeout=10) return resp.json()["data"]["items"]四、数据应用方案
| 场景 | 实现方式 | 工具建议 |
|---|---|---|
| 热门内容分析 | 统计高频关键词、标签 | Pandas + TF-IDF |
| 用户行为预测 | 基于互动数据建模型 | Scikit-learn |
| 竞品监测 | 定期抓取竞品笔记声量 | 定时任务 + MongoDB |
| A/B 测试 | 对比不同封面/标题效果 | Excel 双轴折线图 |
五、关键注意事项
| 风险点 | 应对措施 |
|---|---|
| 频率限制 | 官方 API 每分钟 ≤100 次;采集方案建议 1-3 秒/次 |
| 429 限流 | 实现指数退避重试机制 |
| 数据合规 | 遵守《个人信息保护法》,不存储手机号/地址,敏感数据脱敏 |
| Cookie 过期 | xhs 方案需定期更新 Cookie,推荐二维码登录 |
| 接口变更 | 小红书 API 更新频繁,建议关注开放平台公告 |
总结建议
有企业资质 → 走官方 API,稳定合规,适合长期业务
个人/快速验证 → 用 xhs 项目,5 分钟上手,适合数据分析和竞品调研
不确定方向 → 先用官方创作者中心 + 第三方工具(新红/千瓜)手动验证需求,再决定是否投入开发