安全扫描
OpenClaw
安全
medium confidence该技能的代码和指令与其所述目的(通过Playwright获取全页面截图和导出PDF)匹配,并且不请求无关凭证或外泄数据,但它依赖硬编码的本地npx缓存路径,并且没有安装规范,这可能导致部署脆弱性。
评估建议
此技能似乎就是它声称的那样——基于Playwright的截图/PDF工具——但在安装之前考虑:(1) 脚本将NODE_PATH硬编码为/root/.npm/_npx/...;确保Playwright实际上在那里可用,或修改脚本以使用npx或显式安装。(2) 没有安装规范——如果您的环境缺少它,添加或运行npm/yarn/npx以提供Playwright。(3) 脚本抑制node stderr(2>/dev/null),这会隐藏错误——调试时移除抑制。(4) 渲染任意URL在无头浏览器中运行不受信任的页面内容;在隔离/沙盒环境(容器)中运行技能以限制影响范围和潜在的浏览器利用风险。(5) 如文档所述,登录门控或反机器人页面可能失败。如果您想要更高的保证,请求安装规范(受信任的发布主机)或更新脚本以可靠地获取Playwright,而不是依赖特定的缓存路径。...详细分析 ▾
ℹ 用途与能力
名称/描述与包含的脚本和SKILL.md一致:两者都使用Playwright实现截图和PDF导出。次要奇怪之处:SKILL.md和脚本假设特定的npx缓存路径(/root/.npm/_npx/...),这在描述中没有证明,并且在目标环境中可能不存在。
✓ 指令范围
运行时指令和shell脚本仅生成临时Playwright JS文件,启动无头Chromium访问提供的URL,并保存截图或PDF。该技能不读取无关的系统文件或环境变量,也不将捕获的数据发送到外部端点。
ℹ 安装机制
没有安装规范;SKILL.md声称'通过npx缓存,无需安装',并且脚本将NODE_PATH设置为特定的/root npx缓存。这很脆弱(如果Playwright不在该路径上可能失败),但本质上不是恶意的。
✓ 凭证需求
该技能不请求环境变量、凭证或配置路径。唯一的环境使用是脚本内部的本地NODE_PATH覆盖(指向缓存的npx路径),这是执行内部的,不是秘密。
✓ 持久化与权限
该技能不始终启用,可由用户调用,不持久化配置或修改其他技能,仅写入临时JS文件和输出截图/PDF。
安全有层次,运行前请审查代码。
运行时依赖
🖥️ OSLinux · macOS · Windows
版本
latestv1.1.32026/3/20
v1.1.3: 优化描述为功能导向,提升搜索排名;增加中文使用场景示例
● 无害
安装命令 点击复制
官方npx clawhub@latest install web-screenshot
镜像加速npx clawhub@latest install web-screenshot --registry https://cn.clawhub-mirror.com
技能文档
当...时 到 使用(中文场景)
- 用户要求「截取某个网页」
- 用户要求「保存网页快照」「截图存档」
- 做 QA 对比、报告配图
- 需要把网页导出为 PDF
- 快速查看某个 URL 的视觉效果
- 登录后才可见的页面:不支持,详见 Limitations
适用场景示例
用户:"帮我截一下这个知乎回答"
用户:"把百度搜索结果截图发给我"
用户:"这个公众号文章截图存档"
用户:"把这个页面导出PDF"
用户:"全页面截图,要看到页面底部"
Tool
Playwright Node.js (via npx cache, no install needed)
Path: /root/.npm/_npx/e41f203b7505f1fb/node_modules
Quick 使用 — Shell Script
bash skills/web-screenshot/scripts/screenshot.sh [output] [--fullpage|--pdf]
Examples:
# Basic screenshot (viewport)
bash scripts/screenshot.sh https://www.baidu.com /tmp/baidu.png# Full-page screenshot (scrolls to capture entire page)
bash scripts/screenshot.sh https://example.com /tmp/full.png --fullpage
# PDF export
bash scripts/screenshot.sh https://example.com /tmp/page.pdf --pdf
Quick 使用 — Inline 节点.js
NODE_PATH=/root/.npm/_npx/e41f203b7505f1fb/node_modules node -e "
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch({ headless: true, args: ['--no-sandbox'] });
const page = await browser.newPage({ viewport: { width: 1440, height: 900 } });
await page.goto('YOUR_URL', { waitUntil: 'domcontentloaded', timeout: 15000 });
await page.waitForTimeout(2000);
await page.screenshot({ path: '/tmp/output.png', fullPage: false });
await browser.close();
})().catch(e => { console.error(e.message); process.exit(1); });
"
Parameters
| Parameter | Default | Notes |
|---|---|---|
| URL | required | Target URL, must be valid |
| output path | auto timestamp | /tmp/openclaw/screenshot_YYYYMMDD_HHMMSS.png |
--fullpage | viewport only | Captures entire scrollable page |
--pdf | screenshot | Exports as A4 PDF |
Tips
- 对于 Chinese content: Playwright handles UTF-8 fine, 否 extra 配置 needed
- 对于 dynamic pages: increase
waitForTimeout(e.g.5000代替 的2000) - 对于 PDF:
printBackground: 真ensures background colors/images included - 输出 size: ~100-150KB 对于 typical pages, ~300KB+ 对于 满-page
Limitations
登录-gated / anti-automation pages: 一些 sites detect headless browsers 和 return blank content. Workaround:
- 使用 site's API 对于 data 代替 的 screenshots
- 使用 real logged-在...中 browser 对于 those pages
- 公开 static pages work fine
Known sites 带有 issues: GitHub (sometimes), A2H Market (confirmed), sites 带有 Cloudflare protection
数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制
免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制