Trusted — Risk Score 5/100
Last scan:2 days ago Rescan
5 /100
baoyu-url-to-markdown
Fetch any URL and convert to markdown using Chrome CDP, with HTML snapshot, media localization, and Defuddle-first conversion pipeline
baoyu-url-to-markdown v1.58.1 是一个合法的网页抓取+Markdown转换工具,所有网络/文件系统/shell操作均与声明功能一致,预扫描报告的「硬编码IP 130.0.0.0」实为 Chrome User-Agent 版本占位符而非真实外连地址,无恶意行为。
Skill Namebaoyu-url-to-markdown
Duration66.2s
Enginepi
Safe to install
可直接使用。静态扫描器将 Chrome UA 版本号误报为硬编码 IP,建议更新扫描规则排除此类误报。

Findings 3 items

Severity Finding Location
Info
预扫描器误报:硬编码 IP 实为 Chrome UA 版本占位符
预扫描报告 scripts/constants.ts:4 标记 '130.0.0.0' 为高危硬编码 IP。经代码审查,该值为 'Chrome/130.0.0.0' User-Agent 字符串中 Chrome 版本号的一部分,并非任何网络连接目标。Chrome 标准 UA 格式为 'Chrome/XXX.0.0.0',这里的占位版本号不会导致出站连接。
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36
→ 更新预扫描规则:将 IP 地址 IOC 检测与 User-Agent 字符串中的版本占位符区分开来,避免将 'Chrome/XXX.0.0.0' 模式误报为硬编码 IP
scripts/constants.ts:4
Info
defuddle/node 导入路径未在 package.json 中显式声明
defuddle-converter.ts 导入 'defuddle/node',但 package.json 仅声明 'defuddle': '^0.12.0'。defuddle 包的 node 导出可能依赖包内部约定。运行时若失败会以 'defuddle.md API fallback' 降级处理,不影响整体功能。
import { Defuddle } from 'defuddle/node'
→ 确认 defuddle 包版本 ^0.12.0 确实支持 'defuddle/node' 导入路径,或在 package.json 中添加 'defuddle': 'file:./vendor/defuddle' 等本地路径
scripts/defuddle-converter.ts:1
Info
baoyu-chrome-cdp 为本地 vendor 库
package.json 依赖 'baoyu-chrome-cdp': 'file:./vendor/baoyu-chrome-cdp',非 npm 官方发布包。vendor 包为 private 类型,代码由 baoyu-skills 项目自维护,经代码审查未发现恶意逻辑。
baoyu-chrome-cdp: file:./vendor/baoyu-chrome-cdp
→ 定期审查 vendor/baoyu-chrome-cdp 源码更新,确保与上游保持同步
scripts/package.json:8
ResourceDeclaredInferredStatusEvidence
Network READ READ ✓ Aligned main.ts:101 访问 https://defuddle.md/<url>(SKILL.md:207 声明的 fallback API); media-l…
Shell WRITE WRITE ✓ Aligned cdp.ts 通过 spawn() 启动 Chrome 进程(vendor/index.ts:438),与 SKILL.md 声明的「Chrome CDP」功能…
Filesystem WRITE WRITE ✓ Aligned main.ts 保存 markdown 和 HTML 快照到用户指定输出目录(SKILL.md:88 声明); media-localizer.ts 下载图片/…
Environment READ READ ✓ Aligned paths.ts 读取 URL_CHROME_PATH、URL_DATA_DIR、URL_CHROME_PROFILE_DIR(SKILL.md:143 声明)…
Browser WRITE WRITE ✓ Aligned cdp.ts 通过 Chrome DevTools Protocol 控制 Chrome 行为(SKILL.md 核心功能声明)
1 High 5 findings
📡
High IP Address 硬编码 IP 地址
130.0.0.0
scripts/constants.ts:4
🔗
Medium External URL 外部 URL
https://defuddle.md/
SKILL.md:207
🔗
Medium External URL 外部 URL
https://defuddle.md/stephango.com
SKILL.md:255
🔗
Medium External URL 外部 URL
https://defuddle.md/$
scripts/main.ts:101
🔗
Medium External URL 外部 URL
https://gemini.google.com/app
scripts/vendor/baoyu-chrome-cdp/src/index.test.ts:242

File Tree

15 files · 104.6 KB · 3199 lines
TypeScript 11f · 2809L Markdown 2f · 367L JSON 2f · 23L
├─ 📁 references
│ └─ 📁 config
│ └─ 📝 first-time-setup.md Markdown 106L · 2.4 KB
├─ 📁 scripts
│ ├─ 📁 vendor
│ │ └─ 📁 baoyu-chrome-cdp
│ │ ├─ 📁 src
│ │ │ ├─ 📜 index.test.ts TypeScript 307L · 9.3 KB
│ │ │ └─ 📜 index.ts TypeScript 523L · 16.8 KB
│ │ └─ 📋 package.json JSON 9L · 140 B
│ ├─ 📜 cdp.ts TypeScript 179L · 5.7 KB
│ ├─ 📜 constants.ts TypeScript 13L · 544 B
│ ├─ 📜 defuddle-converter.ts TypeScript 58L · 1.9 KB
│ ├─ 📜 html-to-markdown.ts TypeScript 135L · 4.3 KB
│ ├─ 📜 legacy-converter.ts TypeScript 629L · 17.9 KB
│ ├─ 📜 main.ts TypeScript 314L · 11.1 KB
│ ├─ 📜 markdown-conversion-shared.ts TypeScript 305L · 9.7 KB
│ ├─ 📜 media-localizer.ts TypeScript 317L · 9.5 KB
│ ├─ 📋 package.json JSON 14L · 347 B
│ └─ 📜 paths.ts TypeScript 29L · 1.1 KB
└─ 📝 SKILL.md Markdown 261L · 13.9 KB

Dependencies 7 items

PackageVersionSourceKnown VulnsNotes
defuddle ^0.12.0 npm No package.json 声明 ^0.12.0;代码使用 'defuddle/node' 子路径导入,需确认包版本支持此路径
baoyu-chrome-cdp 0.1.0 (local) file:./vendor/baoyu-chrome-cdp No 本地 vendor 库,非 npm 官方包;经代码审查无恶意逻辑
@mozilla/readability ^0.6.0 npm No Mozilla 官方项目
jsdom ^24.1.3 npm No 知名 DOM 模拟库
turndown ^7.2.2 npm No HTML→Markdown 转换库
turndown-plugin-gfm ^1.0.2 npm No Turndown GitHub 风格 Markdown 插件
linkedom ^0.18.12 npm No 轻量级 HTML/DOM 替代库

Security Positives

✓ SKILL.md 文档完整,所有脚本目录、CLI 参数、转换流程、fallback 机制均有清晰说明
✓ 声明的能力(Chrome CDP、URL 抓取、Markdown 转换、媒体下载)与实际代码完全对应,无阴影功能
✓ credential 处理规范:只读取 Chrome profile 目录,无 SSH/AWS 等敏感凭证路径访问
✓ 外部网络访问范围受控:仅 defuddle.md fallback API + 用户 markdown 中引用的媒体资源,无裸 IP 连接
✓ 依赖生态干净:均为成熟的网页处理库(@mozilla/readability、turndown、jsdom、defuddle),无可疑第三方包
✓ 敏感文件检查:未发现 .env、~/.ssh、~/.aws 等敏感路径访问
✓ 无 eval/字符串动态执行、无 base64 解码管道、无远程脚本下载(curl | bash / wget | sh)