低风险 — 风险评分 25/100
上次扫描:4 小时前 重新扫描
25 /100
xhs-monitor
小红书竞品监控 - 自动采集竞品笔记,推送飞书通知,写入数据看板
合法的小红书竞品监控爬虫工具,功能与声明基本一致,存在轻微文档-代码差异(stealth插件未正确使用、目录结构不符),无恶意行为。
技能名称xhs-monitor
分析耗时48.9s
引擎pi
ClawHub 小红书竞品监控助手 v1.0.1 by cstdr
📥 196 📦 1
ClawHub 判定 可疑 dangerous_execllm_suspiciousvt_suspicious
可以安装
可安全使用。建议:1) 添加 puppeteer-extra/puppeteer-core 版本锁定;2) 修正 SKILL.md 中 src/ 目录与实际路径的不一致;3) 补充 stealth 插件声明(如需使用)。

安全发现 4 项

严重性 安全发现 位置
低危
Stealth 反爬插件引用但未实际使用 文档欺骗
scraper.js 加载了 puppeteer-extra 和 stealth 插件并调用 puppeteerExtra.use(StealthPlugin()),但启动浏览器用的是 puppeteerCore.launch() 而非 puppeteerExtra.launch(),导致 stealth 功能从未生效。这是代码残留或阴影功能痕迹。
puppeteerExtra.use(StealthPlugin()); // ... browser = await puppeteerCore.launch({...})
→ 如不需要反检测功能,移除 puppeteer-extra 和 stealth 依赖;如需要,在 SKILL.md 中声明
scraper.js:10
低危
文档目录结构与实际文件布局不符 文档欺骗
SKILL.md 中的「项目结构」章节声称文件位于 src/ 子目录下(如 src/main.js、src/scraper.js),但实际上所有 .js 文件均位于项目根目录。
src/
│   ├── main.js         # 主程序入口
→ 修正 SKILL.md 中的项目结构图,或将所有 .js 文件移入 src/ 目录
SKILL.md:73
低危
puppeteer-extra 和 puppeteer-core 无版本锁定 供应链
package.json 中 puppeteer-extra 和 puppeteer-core 的版本为 *(无锁定),攻击者可能通过供应链投毒植入恶意代码。
npm install puppeteer-core
npm install puppeteer-extra
→ 使用固定版本号:npm install [email protected] && npm install [email protected]
SKILL.md:18
提示
本地 shell 执行未在文档中声明 文档欺骗
scheduler.js:27 通过 child_process.spawn('node', ...) 执行本地 main.js,run.sh 也执行 shell 命令,但 SKILL.md 未声明 shell:WRITE 能力。
const child = spawn('node', [mainPath], {...});
→ 在 SKILL.md 中补充说明使用 child_process 定时触发任务
scheduler.js:27
资源类型声明权限推断权限状态证据
文件系统 WRITE WRITE ✓ 一致 dedupe.js:23 — 写入 ../data/history.csv
网络访问 READ READ ✓ 一致 scraper.js:183 — 访问 xiaohongshu.com;notify.example.js — 访问 feishu API
浏览器 WRITE WRITE ✓ 一致 scraper.js:175 — puppeteerCore.launch() 创建无头浏览器
命令执行 NONE WRITE ✓ 一致 scheduler.js:27 — spawn('node', [mainPath]);run.sh:41 — node main.js
环境变量 NONE READ ✓ 一致 scraper.js:13 — process.env.CHROMIUM_PATH;run.sh:11 — XHS_DATA_DIR
5 项发现
🔗
中危 外部 URL 外部 URL
https://www.xiaohongshu.com/user/profile/用户ID1
SKILL.md:83
🔗
中危 外部 URL 外部 URL
https://www.xiaohongshu.com/user/profile/用户ID2
SKILL.md:84
🔗
中危 外部 URL 外部 URL
https://www.xiaohongshu.com/
SKILL.md:98
🔗
中危 外部 URL 外部 URL
https://www.xiaohongshu.com/user/profile/小红书用户ID
config.example.js:20
🔗
中危 外部 URL 外部 URL
https://www.xiaohongshu.com/user/profile/
config.js:12

目录结构

12 文件 · 32.5 KB · 1194 行
JavaScript 10f · 966L Markdown 1f · 183L Shell 1f · 45L
├─ 📜 config.example.js JavaScript 26L · 745 B
├─ 📜 config.js JavaScript 27L · 860 B
├─ 📜 daemon.js JavaScript 70L · 1.9 KB
├─ 📜 dedupe.js JavaScript 60L · 1.4 KB
├─ 📜 interactive.js JavaScript 181L · 5.1 KB
├─ 📜 main.js JavaScript 20L · 663 B
├─ 📜 notify.example.js JavaScript 75L · 2.6 KB
├─ 📜 parser.js JavaScript 115L · 3.3 KB
├─ 🔧 run.sh Shell 45L · 1.4 KB
├─ 📜 scheduler.js JavaScript 45L · 931 B
├─ 📜 scraper.js JavaScript 347L · 9.6 KB
└─ 📝 SKILL.md Markdown 183L · 4.1 KB

依赖分析 3 项

包名版本来源已知漏洞备注
puppeteer-core 未指定 npm 无版本锁定,建议锁定版本
puppeteer-extra 未指定 npm 无版本锁定,被引用但未正确使用
puppeteer-extra-plugin-stealth 未指定 npm 无版本锁定,被引用但未正确使用

安全亮点

✓ 功能实现完整:爬虫→解析→去重→推送全链路
✓ 无凭证收割:无任何读取 SSH、AWS、.env 等敏感路径的代码
✓ 无数据外泄:所有数据(history.csv、notes.json)仅存储在本地,无外部上传
✓ 无混淆编码:无 base64/eval/动态代码生成等反分析技术
✓ 无反向 shell 或 C2 通信
✓ 飞书推送为标准 API 调用,路径清晰可控
✓ 去重机制基于本地 CSV,无隐蔽数据外传通道
✓ 代码结构清晰,模块职责单一,易于人工审计