问答
小红书爬虫返回 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 就停一停,那它更划算。如果任务要每天无人值守地跑,按次付费通常比花时间养号、换代理便宜。完整的关键词调研流程可以看内容调研方案。
更新于