我用 AI 接管浏览器,批量刷新了 200 条小红书笔记的互动量
两百多条稿件要复盘互动量,链接全部失效、数字不在 DOM 里、风控随时会拦。这篇记录最后跑通的那套流程:两条定位路径、截图读数的口径、以及必须设死的熔断线。
前段时间手上有一份稿件发布清单:时间、标题、作者、原链接,两百多条。要做的事很简单——把每条在小红书上的点赞、收藏、评论拉出来,看这轮传播落在什么水平。
我以为这是个体力活。
真正动手才发现,体力活那部分反而是最简单的。难的是三件事:清单里的链接全部打不开;打不开的样子和删帖一模一样;以及你不能像一个程序那样,把两百个页面快速扫完。
这篇写的就是这三件事,和最后跑通的那套流程。
🚨 先把预期压下来:小红书不对外公开阅读量和转发数。任何交付物里都不该出现「阅读量」这一列——这不是抓取难不难的问题,是平台根本不提供。也不要拿点赞去反推阅读量,那样做出来的表看着完整,实际上每个数字都是编的,比缺数据更糟。
为什么走浏览器,不走接口
公开接口早就拿不到这些数了,直接抓页面又会被风控挡在验证页。唯一稳的路子,是用自己已登录的浏览器,逐条打开公开页面——人怎么读,程序就怎么读。
行为逻辑上它接近「人工浏览的加速版」。但它终究是自动化操作,账号风险自己承担,重要账号建议用工作号跑,别用主号。
适用范围也划一下:
- 手上有已发布的稿件清单,要复盘传播效果
- 单次两百条以内,人工点不现实,但也没大到值得采买数据服务
- 要的是某一时点的快照,不是长期高频监控
反过来,需要上千条、需要天天跑的,超出单个账号单日安全水位,该走官方后台或第三方服务。非本人的账号,不碰。
第一个坑:链接一定会过期
清单里存下来的链接通常是两种形态:裸的 /explore/<noteId>,或者早期分享出来的带参数链接。这两种现在都打不开。
原因不是笔记没了,是小红书把详情页的访问权限绑到了 xsec_token 上。这个 token 跟登录会话、来源页面、时效三者相关,几周前导出的清单,token 早就失效。
关键在于:token 不能自己拼,也不能从别处复制,必须回到站内,从真实链路上取。
| 链接形态 | 可用 | 说明 |
|---|---|---|
/explore/<noteId> | 否 | 缺 token,必然返回 300031「当前笔记暂时无法浏览」 |
/search_result/<noteId>?xsec_token=… | 是 | 从搜索结果点进笔记,地址栏就是这个形态 |
/user/profile/<userId>/<noteId>?xsec_token=… | 是,更耐久 | 从作者主页点进去,同一作者多篇可一次拿全 |
这里有个我差点栽进去的陷阱:
「当前笔记暂时无法浏览」这句话,看起来和删帖一模一样。 但它绝大多数时候只是少了 token。拿这个提示当删帖依据,会把一大片正常笔记误判成已删除——我当时就差点这么干,还以为这批稿子被删了一大半。
删帖的唯一正确判定方式,是在作者主页的笔记流里找不到。这一点后面单独说。
找新链接的两条路
路径 A:关键词 + 时间范围
适用于这批稿件围绕同一个事件或同一个产品,标题里有明显的公共词,发文时间也集中在一个较短的窗口里。多数新闻稿、产品稿都符合。
第一步,先算时间窗口。 把清单里的发布时间排个序,看最小值和最大值,再看每天分布得多密。集中在三到七天内的,非常适合走这条路;跨半个月以上而且很分散的,也能走,但得按时间切片搜好几次。
这一步别省。后面搜索选哪个时间范围,是从这份数据里算出来的,不是凭感觉点「最近一周」。范围选宽了噪声大、翻页多;选窄了会漏掉最早那批。
第二步,提炼关键词。 关键词决定了后面九成的效率,三条规则:
- 只取实体词,不要拿整句标题去搜。搜索引擎只做分词匹配,长句里绝大部分是虚词和修饰语,召回率极低。
- 优先两到四个字的核心词,从三个维度里挑:品牌或产品名(比如「某款精华」)、事件或结论词(比如「过敏」「测评」)、机构名(比如「XX 日报」)。
- 准备三到五个候选,两两组合成「产品 + 事件」,比如「精华 过敏」。组合词的结果集噪声最小、命中率最高,是主力;单词留着兜底。
验证是必做的,成本很低。 拿三五条已知笔记去试搜,前二十条里能看到三条以上,这个词可用;零到一条,直接换词,不要硬搜二十页——白花时间,还平白多了一批请求。
第三步,搜索时限制时间范围。 排序切到「最新」,再打开筛选器选时间。
有现成的粒度(一周内、一月内、自定义)就选最贴近的一档,宁可略宽——宽一点只是多翻两页,窄了会直接漏稿。没有合适粒度就按最新往后翻,直到首屏最早一条的发布时间已经早于清单里的最早时间为止,再往后只会更早,没有继续翻的意义。
时间范围本身也是最强的噪声过滤器。同一个关键词在半年跨度里可能有几千条结果,压到一周就只剩几十条。
第四步,作者比对。 结果卡片上会显示作者名,先把清单里的作者去重(两百条通常只有二三十个不同作者),浏览时只认这个集合里的,其余一眼跳过。命中就点进去,从地址栏取完整链接,token 原样带着。
⏰ 搜索来源的 token 比较短命。攒一批再统一打开,很可能前几条还能开、后几条已经开始报 300031。正确做法是取一条、开一条、采一条,边定位边采。
路径 B:作者主页翻页
适用于没有公共关键词的情况,或者路径 A 搜不到的个别稿件。它还有一个不可替代的作用:判定删帖。
第一步,搜用户。 结果页切到「用户」标签(URL 上带 type=51),或者直接搜作者名。
注意同名。机构号尤其容易有近名账号,比如「XX 日报」和「XX 日报社」「XX 日报新媒体」。确认是同一个主体,看三个信号:粉丝量级对不对得上、有没有认证、简介和历史内容吻不吻合。选错账号,后面翻半天也找不到你要的那篇。
第二步,进主页翻笔记流。 默认是按时间倒序,目标笔记如果还在,通常就在前几屏。滚动加载,一次三到八屏,边滚边比对,不要一口气滑到底。几百条笔记的号,可以按目标时间推算大概位置,先翻到区间附近再细看。
第三步,匹配。 两个条件同时满足才算命中:
- 标题高度一致——允许前后缀、标点、话题标签的差异,但主体表述要一致
- 发布时间在原文时间 ±1 天以内
为什么必须两条一起看:只看标题容易误判转载,同一个标题可能被好几个号发过;只看时间容易误判当天发的其他稿。两个条件交叉,误判概率才压得下来。
命中后从主页点进去,拿到的是 pc_user 来源的 token,比搜索来源耐久。同一作者有多篇要采,趁这次在主页里一次拿完。
第四步,找不到就是删帖。 在完整笔记流里翻遍对应时间区间都没有,判为已删除或已设为不可见。
处置是互动量留空、备注写清楚,不按 0 计。按 0 计会让平均值被拉低,而且表面上完全看不出来是缺数据。
这条路代价是慢:一个作者就要一次搜索、一次主页加载、若干屏滚动。所以它适合兜底,不适合当主路径。
两条路怎么选
实际跑批基本都是混着用的:先用 A 批量过一遍,拿到八成到九成,剩下的零散条目再逐个走 B。这样总耗时最省,也不会因为个别难搞的条目卡住整体。
几条判断:标题有公共实体词、时间集中在两周内、作者是能被搜索索引到的机构号,走 A。作者数量少但每人多篇,走 B 更优,一次能拿全。标题之间毫无共同词,或者要确认某条到底删没删,只能走 B。
第二个坑:数字不在 DOM 里
这是整条流程里最容易踩空的地方。
小红书的点赞、收藏、评论数字是渲染出来的视觉元素。用读页面可见文本的方式,拿到的只有图标按钮和「收藏」「评论」这几个字,数字拿不到。
必须截图读图。
标准动作四步:打开笔记,等首屏稳定(两三秒);滚动到正文底部,让互动栏进入视口并完成渲染;截取底部互动栏那一小块(大概 400 × 56,位置在页面右下方);读图,得到三个数。
为什么只截那一小块而不是整页——整页截图分辨率被摊薄,小字号数字容易识别错;裁切之后画面里只有数字,准确率高得多,传输量也小。
还有一个判定要特别说:底部只显示「收藏」「评论」这两个字、后面没有数字,那是 0,不是还没加载完。 点赞同理,图标在、数字不在,就是 0。
不要因为没看到数字就把整条判成采集失败,那会丢掉一大堆本来可用的数据。判失败的唯一标准是页面本身没打开——跳登录、报 300031、出验证页——而不是数字是 0。
第三个坑:反爬
这一节决定这套流程能不能长期跑下去。原则只有一句:让行为看起来像一个人在慢慢读,而不是一个程序在快速扫。
总量闸门:单账号单日两百条封顶
这是硬上限,不是建议值。超过之后命中验证页的概率会显著上升,而且一旦被标记,影响的不只是当天,后面几天都会更容易触发。
- 单日打开图文详情页两百条封顶,宁可分两天,不要一天冲完
- 建议分两到三批,每批六到八十条
- 批次间隔两小时以上,不要连续作战
单条停留:由页面内容决定
| 内容类型 | 建议停留 | 原因 |
|---|---|---|
| 图文笔记 | 3–5 秒 | 等首图和底部互动栏渲染完即可 |
| 短视频(1 分钟内) | 8–12 秒 | 播放器加载慢,互动栏起播后才稳定 |
| 长视频 / 多图长文 | 12–20 秒 | 需要滚动触发懒加载 |
在基础值上再叠 ±30% 随机抖动。固定的 5 秒 × 200 次,是最容易被识别成脚本的特征——比「快」更危险的是「规律」。
更稳的做法是以页面就绪信号为准,而不是死等秒数:读到互动栏出数、或者评论区容器可交互就走,读不到再等一轮再判失败。这样间隔天然不均匀,既快,也不像脚本。
条间间隔与批次节奏
- 相邻两条之间随机 5–15 秒
- 每 20–30 条插一次 60–120 秒的长休息,模拟人看完一段去干别的
- 单批结束后离开页面几分钟再开下一批,不要原地停几秒就继续
熔断:两条线,任一触发就停
- 连续失败三条:立即停止。连败通常意味着 token 批量失效、登录态掉了,或者已经进了风控,继续撞只会更深。
- 单批失败率超过 15%:停下来排查。先分清是「内容本身有问题」(删帖多)还是「通道有问题」(token、登录态),两者处置完全不同。
不要「再试一条看看」。这句话是所有风控事故的开头。
验证页:识别到就停,别绕
命中以下任一信号,视为风控已触发,立即终止整批:
- 页面出现「安全验证」「请完成验证」「滑动验证」「拖动滑块」
- URL 跳到含 captcha 或 verify 的路径
- 正文或标题出现「访问频繁」「操作过于频繁」「请稍后再试」
- 突然弹窗要求重新扫码登录
处置顺序:截图存证,停批,告诉用户停在哪一条、命中什么信号,建议至少三十分钟后再试,当天不再加量。
🛑 遇到验证页不要自动重试,也不要换个关键词接着撞。这是明确需要人工介入的信号:得有人去页面上手动完成一次验证、确认账号状态,再决定当天是否继续。自动化在这里应该停下,而不是绕路。
明确不要做的事
- 不要多标签并发同时打开多个笔记——最典型也最容易被识别的机器特征
- 不要用无痕模式——登录态是前提,无痕没有
- 不要在跑批期间手动刷同一账号——节奏会互相干扰
- 不要把间隔压到两秒以内——省下的时间远不够赔一次风控
- 不要频繁切换账号——同 IP 频繁换号比单号慢跑更容易被标记
- 不要整点整分开始——固定时间的批量请求本身就是特征
回写表格
原始清单的字段保持不动,互动量接在后面:点赞、收藏、评论、互动量合计、刷新日期、备注。
口径只有一条:互动量合计 = 点赞 + 收藏 + 评论。只有这三个是平台公开的,不掺阅读(本来就没有),不掺转发(不公开)。
合计用公式,不写死数值:
=IF(COUNT(G2:I2)=0,"",SUM(G2:I2))用 COUNT 判空而不是直接 SUM,是为了让空行不贡献 0——这样整列求平均时,缺数据的行不会被当成 0 参与计算。
留空规则四条:
- 已删除或不可见 → 留空,备注说明
- token 反复取不到 → 留空,备注说明
- 验证页中断 → 本轮没采到的全部留空,不要拿上一轮的旧值填
- 只有 0 个互动 → 正常记 0,不要留空。0 是有意义的数据,空是没有数据
写入前还有三个检查,都是我实际被咬过的:先读一遍目标区域现有内容,确认没人在里面手工填过值;核对表头和实际列位是否一致(表头被改过、列被插过的情况很常见);「互动量合计」这一列如果原本是日期格式,写数字会显示成 1901 年,需要单独设成数字格式。
写完抽样回读几行,确认数值、公式、格式都对,再对全量求和做一次对账。别用一次大范围读取的结果当校验依据——大范围读会被静默截断,行数对不上就是截断了。
我踩过的十个坑
- 用「打不开」当删帖依据。 差点把一大片正常笔记误判成已删除。删帖只能靠「作者主页里找不到」来判定。
- 攒一批 token 再统一打开。 后半批全废,一条都开不了。
- 以为抓页面文本能拿到数字。 结果只拿到图标和两个字。
- 把「没有数字」当成加载失败。 只显示「收藏」「评论」字样就是 0,不是失败。
- 机构号认错主体。 同名近名账号很多,得靠粉丝量级、认证、简介三重确认。
- 短链直接当 noteId 用。 要先在浏览器打开一次,拿到真实 noteId 再判断。
- 时间范围选得太窄。 只筛「一周内」会漏掉清单里最早那批稿件。
- 关键词用整句标题搜。 召回率极低,白翻几十页。
- 读表格大范围数据被静默截断。 接口不报错,只返回前面一段。行数对不上就是截断了,要分段读并核对总行数。
- 表格合计列继承了日期格式。 数字显示成 1901 年,得单独设数字格式。
可以直接用的提示词
把下面这段发给 AI,替换方括号里的内容就能启动:
帮我刷新小红书图文的互动量,数据在 [表格链接] 的 [子表名] 工作表。
要求:
1. 用我 Chrome 里已登录的账号操作,单标签串行,不要并发。
2. 链接大概率已过期。先按关键词 + 时间范围批量定位,剩下的用作者主页翻页兜底。
注意:打不开不等于删帖,只有在作者主页里找不到才算删帖。
3. 互动量必须截图读底部互动栏,不要读文本。只显示字样没有数字就是 0。
4. 只要点赞 / 收藏 / 评论;阅读和转发平台不公开,留空并备注,不要估算。
5. 反爬:单条随机停留,相邻两条间隔 5-15 秒,每 25 条休息 1-2 分钟,
总量控制在 [N] 条以内。连续 3 条失败、或出现任何验证页,立刻停下告诉我停在哪一条。
6. 先跑 1 条给我确认,没问题再批量。
7. 采完写到 G-L 列,写入前先看一遍现有内容别覆盖。最后一句
这套流程的价值在于批量但克制。
把它当成「一次跑完两百条」的工具,很快就会失效;当成「把两小时的机械点击压缩到四十分钟」的工具,可以长期用下去。
平台在防的从来不是人来读,而是机器在扫。你越像人,它越不拦你;你越想快,它越要拦你。这个账算下来,慢一点反而是最快的。
附:关键参数速查
| 参数 | 取值 |
|---|---|
| 单日总量上限 | 200 条,建议分 2–3 批 |
| 单批规模 | 60–80 条,批次间隔 ≥ 2 小时 |
| 图文停留 | 3–5 秒,±30% 抖动 |
| 视频停留 | 8–20 秒,按时长分档 |
| 条间间隔 | 5–15 秒随机,不要固定值 |
| 长休息 | 每 20–30 条,60–120 秒 |
| 熔断阈值 | 连续 3 条失败,或单批失败率 > 15% |
| 风控冷却 | ≥ 30 分钟,当天不加量 |
| 必采指标 | 点赞 / 收藏 / 评论 |
| 合计口径 | 赞 + 藏 + 评,用 COUNT 判空 |
← 返回文章列表