个人实战分析分享


🚀 实战复盘:在 Windows 上从零部署小红书 MCP 服务并解决 Defender 拦截难题

📝 前言

在自动化和 AI Agent 领域,MCP (Model Context Protocol) 正成为连接大模型与外部数据的桥梁。最近,我尝试在 Windows 环境下部署开源项目 xpzouying/xiaohongshu-mcp,旨在让 AI 助手具备搜索小红书笔记、分析趋势甚至发布内容的能力。

然而,部署过程并非一帆风顺。从文件迁移到杀毒软件误报,再到端口冲突,每一个坑都是宝贵的经验。本文将完整复盘这次部署流程,重点分享如何解决 Windows Defender 对自动化浏览器的拦截这一核心痛点。


🛠️ 环境准备

  • 操作系统: Windows 10/11
  • 运行时: Node.js v24+, Python (uv), Go (预编译二进制)
  • 目标项目: xpzouying/xiaohongshu-mcp
  • 集成平台: OpenClaw (或其他支持 MCP 的 Client)

🔧 核心步骤复盘

第一步:文件迁移与目录构建

首先,我们需要将下载的二进制文件和技能脚本移动到 OpenClaw 的技能目录中。
通过 PowerShell 的 Copy-ItemMove-Item 命令,我们将以下关键文件部署到了 D:\OpenClaw\...\skills\xiaohongshu-mcp

  1. 技能定义文件: SKILL.md, _meta.json, scripts/
  2. 核心二进制:
    • xiaohongshu-login-windows-amd64.exe (扫码登录工具)
    • xiaohongshu-mcp-windows-amd64.exe (MCP 服务端)

💡 经验点: 使用 PowerShell 脚本进行批量移动和验证(检查文件大小、是否存在),比手动复制更可靠,能有效避免路径错误。

第二步:遭遇“拦路虎”——Windows Defender 误报

这是本次部署最大的挑战。当我们首次运行登录工具 .\xiaohongshu-login-windows-amd64.exe 时,程序崩溃并抛出 Panic 错误:

panic: fork/exec .../leakless.exe: Operation did not complete successfully because the file contains a virus or potentially unwanted software.

原因分析
该工具基于 go-rod 库,需要动态下载 Chromium 浏览器内核以及一个名为 leakless.exe 的辅助进程来防止浏览器泄漏。Windows Defender 将这种“程序动态释放并执行另一个 exe”的行为判定为潜在威胁,直接拦截了 leakless.exe 的运行。

✅ 解决方案:添加排除项 (Whitelist)
必须以管理员身份运行 PowerShell,将技能目录添加到 Defender 的排除列表中:

$exclusionPath = "D:\OpenClaw\node-v24.14.0-win-x64\node_modules\openclaw\skills\xiaohongshu-mcp"
Add-MpPreference -ExclusionPath $exclusionPath

同时,清理了之前下载失败的浏览器缓存 (%APPDATA%\rod),确保下次启动时重新干净下载。

结果:再次运行登录工具,浏览器窗口正常弹出,扫码后显示 登录成功!,Cookie 成功保存。

第三步:启动服务与端口冲突处理

登录成功后,启动主服务:

.\xiaohongshu-mcp-windows-amd64.exe

此时遇到了第二个常见错误:

level=error msg="服务器启动失败: listen tcp :18060: bind: Only one usage of each socket address..."

原因分析:端口 18060 已被占用。这通常是因为之前的测试进程没有正常关闭,或者在后台已经有一个实例在运行。

✅ 解决方案:暴力清理与重启
使用 PowerShell 一键查杀相关进程并重启:

# 查找并强制结束所有相关进程
Get-Process | Where-Object { $_.Name -like "*xiaohongshu-mcp*" } | Stop-Process -Force
# 等待端口释放后重新启动
Start-Sleep -Seconds 2
.\xiaohongshu-mcp-windows-amd64.exe

看到日志输出 启动 HTTP 服务器: :18060 且无报错,标志着服务正式上线。


💡 关键知识点总结

1. 为什么自动化工具容易被杀软拦截?

许多 RPA (机器人流程自动化) 和爬虫工具(如 go-rod, puppeteer, selenium)都需要控制浏览器。它们通常会:

  • 下载特定版本的浏览器内核。
  • 注入驱动进程。
  • 模拟用户行为。
    这些行为与恶意软件的特征高度重合。在开发调试阶段,**“添加信任目录”**是最高效的解决方式,而不是盲目关闭杀毒软件。

2. 端口占用的排查思路

当遇到 bind: address already in use 时:

  • Windows: Get-Process | Where-Object {...} | Stop-Processnetstat -ano | findstr :18060
  • Linux/Mac: lsof -i :18060 然后 kill -9 <PID>
    养成在启动服务前先清理旧进程的习惯,能减少 90% 的启动失败。

3. MCP 服务的黑盒特性

MCP 服务器通常以 HTTP API 或 Stdio 方式运行,不像传统 Web 服务那样有直观的首页。

  • 如果 curl http://localhost:18060/ 返回 404,不代表服务挂了
  • 只要日志显示 Server started 且无 Panic,通常意味着它正在等待符合 MCP 协议的特定请求(如 initialize, tools/list)。
  • 验证连通性的最佳方式是直接在 Client 端(如 OpenClaw)调用一个具体技能。

🎯 最终成果

经过上述排错,系统现已达到以下状态:

  • 持久化登录:扫码一次,长期有效。
  • 稳定运行:服务在 18060 端口静默运行。
  • 功能就绪:AI 现已具备以下能力:
    • 🔍 搜索笔记:实时获取小红书热门内容。
    • 📊 数据分析:提取点赞、收藏、评论数据。
    • 📝 内容发布:自动化图文/视频发布流程。

🔚 结语

在 Windows 上部署涉及底层浏览器控制的自动化工具,权限管理进程管理是两个核心关卡。希望这篇复盘能帮助大家在搭建类似的 MCP 服务时少走弯路。


作者:茶海虾王
日期:2026-03-30

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐