Jack 的 AI Blog

我用 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:关键词 + 时间范围

适用于这批稿件围绕同一个事件或同一个产品,标题里有明显的公共词,发文时间也集中在一个较短的窗口里。多数新闻稿、产品稿都符合。

第一步,先算时间窗口。 把清单里的发布时间排个序,看最小值和最大值,再看每天分布得多密。集中在三到七天内的,非常适合走这条路;跨半个月以上而且很分散的,也能走,但得按时间切片搜好几次。

这一步别省。后面搜索选哪个时间范围,是从这份数据里算出来的,不是凭感觉点「最近一周」。范围选宽了噪声大、翻页多;选窄了会漏掉最早那批。

第二步,提炼关键词。 关键词决定了后面九成的效率,三条规则:

  1. 只取实体词,不要拿整句标题去搜。搜索引擎只做分词匹配,长句里绝大部分是虚词和修饰语,召回率极低。
  2. 优先两到四个字的核心词,从三个维度里挑:品牌或产品名(比如「某款精华」)、事件或结论词(比如「过敏」「测评」)、机构名(比如「XX 日报」)。
  3. 准备三到五个候选,两两组合成「产品 + 事件」,比如「精华 过敏」。组合词的结果集噪声最小、命中率最高,是主力;单词留着兜底。

验证是必做的,成本很低。 拿三五条已知笔记去试搜,前二十条里能看到三条以上,这个词可用;零到一条,直接换词,不要硬搜二十页——白花时间,还平白多了一批请求。

第三步,搜索时限制时间范围。 排序切到「最新」,再打开筛选器选时间。

有现成的粒度(一周内、一月内、自定义)就选最贴近的一档,宁可略宽——宽一点只是多翻两页,窄了会直接漏稿。没有合适粒度就按最新往后翻,直到首屏最早一条的发布时间已经早于清单里的最早时间为止,再往后只会更早,没有继续翻的意义。

时间范围本身也是最强的噪声过滤器。同一个关键词在半年跨度里可能有几千条结果,压到一周就只剩几十条。

第四步,作者比对。 结果卡片上会显示作者名,先把清单里的作者去重(两百条通常只有二三十个不同作者),浏览时只认这个集合里的,其余一眼跳过。命中就点进去,从地址栏取完整链接,token 原样带着。

⏰ 搜索来源的 token 比较短命。攒一批再统一打开,很可能前几条还能开、后几条已经开始报 300031。正确做法是取一条、开一条、采一条,边定位边采。

路径 B:作者主页翻页

适用于没有公共关键词的情况,或者路径 A 搜不到的个别稿件。它还有一个不可替代的作用:判定删帖。

第一步,搜用户。 结果页切到「用户」标签(URL 上带 type=51),或者直接搜作者名。

注意同名。机构号尤其容易有近名账号,比如「XX 日报」和「XX 日报社」「XX 日报新媒体」。确认是同一个主体,看三个信号:粉丝量级对不对得上、有没有认证、简介和历史内容吻不吻合。选错账号,后面翻半天也找不到你要的那篇。

第二步,进主页翻笔记流。 默认是按时间倒序,目标笔记如果还在,通常就在前几屏。滚动加载,一次三到八屏,边滚边比对,不要一口气滑到底。几百条笔记的号,可以按目标时间推算大概位置,先翻到区间附近再细看。

第三步,匹配。 两个条件同时满足才算命中:

  1. 标题高度一致——允许前后缀、标点、话题标签的差异,但主体表述要一致
  2. 发布时间在原文时间 ±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 年,需要单独设成数字格式。

写完抽样回读几行,确认数值、公式、格式都对,再对全量求和做一次对账。别用一次大范围读取的结果当校验依据——大范围读会被静默截断,行数对不上就是截断了。

我踩过的十个坑

  1. 用「打不开」当删帖依据。 差点把一大片正常笔记误判成已删除。删帖只能靠「作者主页里找不到」来判定。
  2. 攒一批 token 再统一打开。 后半批全废,一条都开不了。
  3. 以为抓页面文本能拿到数字。 结果只拿到图标和两个字。
  4. 把「没有数字」当成加载失败。 只显示「收藏」「评论」字样就是 0,不是失败。
  5. 机构号认错主体。 同名近名账号很多,得靠粉丝量级、认证、简介三重确认。
  6. 短链直接当 noteId 用。 要先在浏览器打开一次,拿到真实 noteId 再判断。
  7. 时间范围选得太窄。 只筛「一周内」会漏掉清单里最早那批稿件。
  8. 关键词用整句标题搜。 召回率极低,白翻几十页。
  9. 读表格大范围数据被静默截断。 接口不报错,只返回前面一段。行数对不上就是截断了,要分段读并核对总行数。
  10. 表格合计列继承了日期格式。 数字显示成 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 判空

← 返回文章列表