📦 102 Playwright Scraper Skill — Playwright网页爬虫
v1.0.0基于Playwright的网页爬虫OpenClaw技能,具备反机器人保护功能。已在Discuss.com.hk等复杂网站上成功测试,支持简单模式和隐匿模式爬取。
详细分析 ▾
运行时依赖
版本
Playwright Scraper Skill v1.2.0:添加了全面的使用指南和脚本描述,包括针对各种网站反机器人级别的详细指导。引入了用例矩阵和性能对比图表,用于选择最佳爬取方法。记录了所提供脚本中使用的反机器人保护策略。包括故障排除步骤、环境变量定制,以及提高爬取成功率的最佳实践。概述了未来改进计划,并提供了有用的外部参考资料。
安装命令
点击复制技能文档
一个基于Playwright的网页爬虫OpenClaw技能,具备反机器人保护功能。根据目标网站的反机器人级别选择最佳方法。
🎯 Use Case Matrix | 用例矩阵
| 目标网站 | 反机器人级别 | 推荐方法 | 脚本 |
|---|---|---|---|
| 常规网站 | Low | web_fetch 工具 | N/A(内置) |
| 动态网站 | Medium | Playwright Simple | scripts/playwright-simple.js |
| Cloudflare 保护 | High | Playwright Stealth ⭐ | scripts/playwright-stealth.js |
| YouTube | Special | deep-scraper | 单独安装 |
| Special | reddit-scraper | 单独安装 |
📦 Installation 安装
cd playwright-scraper-skill
npm install
npx playwright install chromium
🚀 Quick Start 快速开始
1️⃣ 简单网站(无反机器人)
使用 OpenClaw 内置的 web_fetch 工具:
# 在 OpenClaw 中直接调用
Hey, fetch me the content from https://example.com
2️⃣ 动态网站(需要 JavaScript)
使用 Playwright Simple:
node scripts/playwright-simple.js "https://example.com"
示例输出:
{
"url": "https://example.com",
"title": "Example Domain",
"content": "...",
"elapsedSeconds": "3.45"
}
3️⃣ 反机器人保护网站(Cloudflare 等)
使用 Playwright Stealth:
node scripts/playwright-stealth.js "https://m.discuss.com.hk/#hot"
功能特点:
- 隐藏自动化标记(
navigator.webdriver = false) - 真实的 User-Agent(iPhone、Android)
- 随机延迟模拟人类行为
- 截图和 HTML 保存支持
4️⃣ YouTube 视频字幕
使用 deep-scraper(单独安装):
# 安装 deep-scraper 技能 npx clawhub install deep-scraper
# 使用它 cd skills/deep-scraper node assets/youtube_handler.js "https://www.youtube.com/watch?v=VIDEO_ID"
📖 Script Descriptions 脚本说明
scripts/playwright-simple.js
- 用例: 常规动态网站
- 速度: 快速(3-5秒)
- 反机器人: 无
- 输出: JSON(title、content、URL)
scripts/playwright-stealth.js ⭐
- 用例: 有 Cloudflare 或反机器人保护的网站
- 速度: 中等(5-20秒)
- 反机器人: 中高(隐藏自动化、真实UA)
- 输出: JSON + 截图 + HTML 文件
- 验证: Discuss.com.hk 上 100% 成功
🎓 Best Practices 最佳实践
1. 首先尝试 web_fetch
如果网站没有动态加载,使用 OpenClaw 的 web_fetch 工具——它最快。
2. 需要 JavaScript?使用 Playwright Simple
如果需要等待 JavaScript 渲染,使用 playwright-simple.js。
3. 被阻止?使用 Stealth
如果遇到 403 或 Cloudflare 挑战,使用 playwright-stealth.js。
4. 特殊网站需要专业技能
- YouTube → deep-scraper
- Reddit → reddit-scraper
- Twitter → bird skill
🔧 Customization 自定义
所有脚本都支持环境变量:
# 设置截图路径 SCREENSHOT_PATH=/path/to/screenshot.png node scripts/playwright-stealth.js URL# 设置等待时间(毫秒) WAIT_TIME=10000 node scripts/playwright-simple.js URL
# 启用有头模式(显示浏览器) HEADLESS=false node scripts/playwright-stealth.js URL
# 保存 HTML SAVE_HTML=true node scripts/playwright-stealth.js URL
# 自定义 User-Agent USER_AGENT="Mozilla/5.0 ..." node scripts/playwright-stealth.js URL
📊 Performance Comparison 性能对比
| 方法 | 速度 | 反机器人 | 成功率(Discuss.com.hk) |
|---|---|---|---|
| web_fetch | ⚡ 最快 | ❌ 无 | 0% |
| Playwright Simple | 🚀 快速 | ⚠️ 低 | 20% |
| Playwright Stealth | ⏱️ 中等 | ✅ 中等 | 100% ✅ |
| Puppeteer Stealth | ⏱️ 中等 | ✅ 中高 | ~80% |
| Crawlee (deep-scraper) | 🐢 慢 | ❌ 被检测 | 0% |
| Chaser (Rust) | ⏱️ 中等 | ❌ 被检测 | 0% |
🛡️ Anti-Bot Techniques Summary 反机器人技术总结
从测试中吸取的经验教训:
✅ 有效的反机器人措施
- 隐藏
navigator.webdriver— 必要 - 真实的 User-Agent — 使用真实设备(iPhone、Android)
- 模拟人类行为 — 随机延迟、滚动
- 避免框架签名 — Crawlee、Selenium 容易被检测
- 使用
addInitScript(Playwright) — 页面加载前注入
❌ 无效的反机器人措施
- 仅更改 User-Agent — 不够
- 使用高级框架(Crawlee) — 更容易被检测
- Docker 隔离 — 对 Cloudflare 无帮助
🔍 Troubleshooting 故障排除
问题:403 Forbidden 禁止访问
解决方案: 使用 playwright-stealth.js
问题:Cloudflare 挑战页面
解决方案:
- 增加等待时间(10-15秒)
- 尝试
headless: false(有头模式有时成功率更高) - 考虑使用代理 IP
问题:空白页面
解决方案:
- 增加
waitForTimeout - 使用
waitUntil: 'networkidle'或'domcontentloaded' - 检查是否需要登录
📝 Memory & Experience 经验与记忆
2026-02-07 Discuss.com.hk 测试结论
- ✅ 纯 Playwright + Stealth 成功(5秒,200 OK)
- ❌ Crawlee (deep-scraper) 失败(403)
- ❌ Chaser (Rust) 失败(Cloudflare)
- ❌ Puppeteer 标准版失败(403)
最佳解决方案: 纯 Playwright + 反机器人技术(独立于框架)
🚧 Future Improvements 未来改进
- [ ] 添加代理 IP 轮换
- [ ] 实现 cookie 管理(维持登录状态)
- [ ] 添加 CAPTCHA 处理(2captcha / Anti-Captcha)
- [ ] 批量爬取(并行 URL)
- [ ] 与 OpenClaw 的
browser工具集成