问答

获取小红书笔记一定要 xsec_token 吗?只有笔记 ID 怎么办?

简短回答

走小红书自己的网页接口,基本需要:不带搜索或推荐流里那个 xsec_token 去打开笔记,经常被拒,而且 token 没法从笔记 ID 推算。通过 okdata 只要传笔记 ID 或分享链接,每篇 $0.02 就能拿到笔记详情,token 由我们这边处理。

手上有一张表,是上个月投放的笔记 ID,想刷新一下点赞和收藏数。脚本里直接打开 xiaohongshu.com/explore/<id>,要么是空页面,要么提示笔记暂时无法浏览,要么返回 461;可同一篇笔记从 App 里复制出来的链接却能打开。区别就在链接后面的 xsec_token 参数。小红书在搜索结果、推荐流和主页里展示每篇笔记时都会附上它,打开笔记时再做校验。它由服务端下发,和你从哪里看到这篇笔记有关,还会过期。没有公式能把笔记 ID 变成有效的 token,所以“怎么通过 note_id 获取 xsec_token”才会在各个爬虫项目的 issue 里反复出现。

改成按 ID 或链接取

小红书笔记详情接口接受 id(24 位笔记 ID)或 url(笔记网页链接或 xhslink.com 分享短链),二选一,不需要传 token。返回标题、全文、全部图片或视频、点赞、收藏、评论数、分享数、话题标签和发布时间。

如果你是从关键词出发,笔记搜索返回的结果里就有笔记 ID,可以直接拿去调详情。

费用

要刷新的笔记数 调用次数 费用
1 1 $0.02
100 100 $2.00
1,000 1,000 $20.00

如果你只关心某个关键词下排得上的笔记的数据,搜索结果本身就带点赞、收藏和评论数,一次能看约 20 篇。

Python 示例

import os, requests

ids = ["6650a1b2000000001e00abcd"]
for note_id in ids:
    r = requests.get(
        "https://api.okdata.online/v1/xiaohongshu/notes/get",
        headers={"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"},
        params={"id": note_id, "fields": "id,title,metrics.likes,metrics.favorites,metrics.comments"},
        timeout=60,
    )
    print(r.json()["data"]["item"])

加上 view=full 时,如果小红书给这篇笔记附带了 token,会放在 ext.xsec_token 里返回,想拼一个能在浏览器里打开的链接时用得上。

注意事项

  • 已删除或私密的笔记返回 not_found,不扣费。
  • metrics.views 为 null,小红书不公开浏览量。
  • 笔记详情没有批量接口,每篇一次调用、一次扣费。

其他做法

XHS-Downloader、Spider_XHS 这类开源工具接受带 token 的完整链接,用自己的浏览器登录态偶尔下载几篇很好用;但 token 缺失或过期就会失败。如果你手上只有 ID,或者每周都要刷新同一批笔记,按 ID 调用更省事。每周定时刷新的做法见竞品监测方案。

更新于