问答

小红书爬虫返回 461 是什么原因?还能怎么拿到数据?

简短回答

461 是小红书风控拒绝了它判定为机器的请求,通常和你登录的账号、IP 绑定在一起。同样的公开笔记可以通过 okdata 获取,完全不需要小红书账号:搜索每页约 20 篇,$0.02 一次;笔记详情每篇 $0.02。

用 MediaCrawler 或者自己写的脚本按关键词抓小红书,跑了二十分钟还好好的,接着每个请求都返回 HTTP 461,有时还弹滑块验证码。这就是小红书的风控。它会给每个请求打分,看签名、账号 Cookie、IP 和请求节奏,分数一低就不再给这个账号返回数据。等几个小时、放慢速度或者换个号,能恢复一阵子,但量一上来很快又会被拦。对公开笔记来说,长久的解决办法是不再用自己的账号发请求。

不用自己的账号拿笔记

如果你要的是公开笔记,不涉及登录后才能看的内容,可以交给 API 去取。用 okdata 时,你的代码根本不直接访问小红书,所以没有要刷新的 Cookie,没有要重新逆向的 x-s 签名,也没有会被风控的个人账号。

一个常见任务要花多少

任务 调用次数 费用
一个关键词抓 200 篇 搜索 10 页 $0.20
其中 50 篇取全文 详情 50 次 $1.00
合计 60 次 {{cost:xiaohongshu.notes.search10+xiaohongshu.notes.get50}}

失败的调用不扣费。上游哪天不稳定,你多花的是重试时间,不是钱。

调用示例

curl -G "https://api.okdata.online/v1/xiaohongshu/notes/search" \
  -H "Authorization: Bearer $OKDATA_API_KEY" \
  --data-urlencode 'query=露营 装备' \
  --data-urlencode 'sort=latest'

翻下一页时,把返回里的 page.next_cursor 作为 cursor 传回去。调用太快会收到 429 和 retry_after_seconds,不会出现 461;所有错误码见错误码说明。

需要知道的限制

  • 只有公开数据。私密或已删除的笔记返回 not_found,不扣费。
  • 小红书前台不展示浏览量,所以 metrics.views 是 null,meta.unavailable 里会注明是平台不提供。
  • 搜索结果里有作者,但没有作者粉丝数。要粉丝数请调博主信息接口。

什么时候继续用爬虫更合适

MediaCrawler 免费开源。如果一周只抓几百篇,在自己电脑上跑,能接受扫码登录、偶尔手动过滑块、遇到 461 就停一停,那它更划算。如果任务要每天无人值守地跑,按次付费通常比花时间养号、换代理便宜。完整的关键词调研流程可以看内容调研方案。

更新于