loading image

xiaohongshu-mcp:用 AI 发小红书,到底会不会被抓?

Posted by Enovace on March 16, 2026

xiaohongshu-mcp:用 AI 发小红书,到底会不会被抓?

Banner

最近在 GitHub 上看到一个蛮有意思的开源项目, xiaohongshu-mcp,最近我自己也在用,可以直接让OpenClaw,Claude 这些 AI 直接帮你操作小红书:搜笔记、发帖、点赞、评论,一条龙全自动。

原理也不复杂,开了一个 Chrome 浏览器,headless 无头模式,然后帮你点按钮、填文字、上传图片。对小红书来说,它看到的就是一个正常的 Chrome 在访问页面,理论上是这样。

我翻了一遍它的源码,发现事情没那么简单。**这东西用起来爽归爽,被小红书抓到的风险其实挺多的。**我列了几个比较要命的点,大家一起看看,尤其是在最近新闻上说小红书重点打击AI托管账号的情况下,想用这个全自动发小红书的话,可能要自己改造一下。

Image

Image

一、浏览器指纹:裸奔上阵

这是最大的问题。

你用 Chrome DevTools Protocol(就是 go-rod 底层用的那套东西)控制浏览器的时候,Chrome 会自动设一个标记:navigator.webdriver = true。这玩意儿就像在你额头上写了四个大字,我是机器人。

小红书前端只要加一行 JS 检查这个值,你就原形毕露了:

if (navigator.webdriver) { /* 标记为机器人 */ }

更要命的是,headless Chrome 还有一堆别的破绽:navigator.plugins 是空的(正常浏览器一定有插件)、WebGL 渲染器显示的是 SwiftShader(软件渲染,正常电脑不会这样)、没有正常的屏幕分辨率信息……

项目中 browser.go 的 NewBrowser 函数只配置了 headless 模式和 Cookie 加载,没有任何反指纹注入。如 Puppeteer 生态的 puppeteer-extra-plugin-stealth 那种反检测方案在本项目中完全缺失。

小红书可以通过检测以下 CDP(Chrome DevTools Protocol)痕迹来识别自动化:

  • Runtime.enable 等 CDP 命令的调用痕迹
  • window.cdc_adoQpoasnfa76pfcZLmcfl_* 等 ChromeDriver 注入的变量
  • document.$cdc_asdjflasutopfhvc 等变量

二、操作节奏:太规律就是不正常

真人操作小红书是什么样的?填完标题,可能楞神两秒想想措辞,打字速度忽快忽慢,中间可能还去喝口水。

但这个工具的发帖流程是这样的:

等 2 秒 → 等 1 秒 → 点 Tab → 等 1 秒 → 上传图片 → 等 1 秒 → 输标题 → 等 0.5 秒 → 输正文 → 等 1 秒 → 加标签 → 等 1 秒 → 点发布 → 等 3 秒

看出来了吗?全是固定时间间隔。每次发帖从开始到结束,花的时间几乎一模一样。你跑 100 次的时序图一叠,整整齐齐。这在统计模型面前毫无伪装可言。

有意思的是,同一个项目里的评论加载模块倒是做了随机延迟(300-700ms 之间随机),反而比发帖模块更"像人"。感觉是不同时期写的代码,反检测意识不统一。
feed_detail.go 中的评论加载,使用了

sleepRandom(min, max) 随机延迟:

// 这种随机范围更像人类行为
humanDelayRange = delayConfig{300, 700}
reactionTimeRange = delayConfig{300, 800}
readTimeRange = delayConfig{500, 1200}

三、鼠标是瞬移的

代码里的鼠标操作基本都是:算好坐标 → 直接移过去 → 点击。

x = 380 + 随机偏移

y = 20 + 随机偏移

鼠标瞬移到 (x, y) → 点击

真人的鼠标怎么动?沿着一条弧线滑过去,接近目标的时候会减速,偶尔还会稍微过头再修正一下。现在高级一点的反爬系统会看你的鼠标轨迹数据,如果是直线瞬移,那肯定不是人。
总结了一下,真人鼠标移动会有:

  • 贝塞尔曲线轨迹(不是直线瞬移)
  • 速度变化(开始加速、接近目标减速)
  • 微小抖动
  • 偶尔的过冲和修正

项目里只有 feed_detail.go 中的

clickElementWithHumanBehavior 做了简单的先悬停后点击,但仍然是瞬移定位。

同样的问题还出现在文字输入上,标题和正文是一瞬间灌进去的。想象一下你在输入框里啪一下就出现了 500 字的正文,换你是小红书你觉得正常吗?

四、每次都是"新浏览器"

这个工具每执行一个操作(搜索、发帖、点赞……),都会重新启动一个全新的 Chrome 实例,干完就关掉。

// service.go — 每个操作都是:启动浏览器 → 操作 → 关闭
func (s *XiaohongshuService) PublishContent(...) {
b := newBrowser() // 每次新建
defer b.Close() // 用完就关
page := b.NewPage()
defer page.Close()
...
}

问题在哪呢,正常人不会每做一件事就把浏览器关了再开。一个正常用户的浏览器会有浏览历史、有缓存、有 localStorage 里存的各种东西。这个工具每次都是白纸一张进去,除了 Cookie 什么都没有,看着就不太正常。
这意味着:

  • 每次操作的浏览器实例 ID 都不同(正常人会保持一个浏览器开很久)
  • 窗口大小、Canvas 指纹等可能每次微妙不同
  • 没有自然的浏览历史和缓存——每次都是全新用户

五、没有任何频率限制

代码里没有做任何操作频率控制。也就是说如果你让 AI Agent 自动化跑起来:

  • 凌晨 3 点连发 10 篇——可以
  • 每隔 5 分钟发一篇,发一整天——可以
  • 一个 IP 一天搜 500 次——可以

正常人哪有这种精力?小红书的风控系统对操作频率肯定是有模型的,你这种发帖节奏跟正常用户的分布差了十万八千里。

六、内容本身也可能出卖你

这一点不是工具的问题,是 AI 生成内容的通病。如果你用 ChatGPT 让它帮你写小红书文案,多多少少会带点AI味:

  • 过于工整的段落结构
  • 频繁出现"首先…其次…最后…"
  • 用词偏正式,不像真人发的朋友圈

小红书如果在内容审核环节加了 AI 检测,大厂基本都在做这个,你发的文案可能在过审阶段就被标记了。

那它还能用吗?

能用,但得看你怎么用。

低频、自用问题不大。偶尔用它发个帖、搜搜笔记,小红书大概率懒得管你。Web 端本来流量就不大,不是风控的重点。

高频、批量基本上是在作死。没有反指纹、没有频率控制、没有行为模拟,跟在没有红绿灯的路口飙车差不多。

说到底,浏览器自动化做内容发布这件事,技术上可行但工程上很粗糙。如果真要安全地用起来,至少得补上反指纹注入、操作随机化、频率控制这几块——而这些目前在代码里完全是空白。

所以各位想拿来批量搞小红书运营的朋友,悠着点吧,工具好不好用是一回事,账号还在不在是另一回事。🫠