用途:该技能面向使用 github.com/playwright-community/playwright-go 编写生产级浏览器自动化脚本,适用于用 Go 抓取、自动化或测试网站,尤其是 SPA、React、Vue 等需要真实浏览器的动态内容,以及需要隐蔽性、规避检测或调试现有 Playwright 脚本的场景。
主要能力:提供架构与工程实践框架,包括用 BrowserContext 而非反复启动 Browser 实例、结构化日志、错误处理与拟人化反检测技巧。
使用方式:架构上只启动一次 Browser(单例),为每个会话或任务创建新的 BrowserContext,以毫秒级开销获得 cookie、缓存与存储的完全隔离。日志统一使用 go.uber.org/zap,开发用 zap.NewDevelopment(),生产用 zap.NewProduction(),禁止 fmt.Println,并为每次导航、点击、输入记录上下文字段。用 defer 关闭 Page、Context、Browser,关键流程包裹 panic 恢复并记录堆栈,显式设置超时而非依赖默认值。反检测方面:鼠标沿贝塞尔曲线带随机抖动移动,不用 Fill() 而用 Type() 并在按键间加 50ms–200ms 随机延迟,视口尺寸轻微随机化(如 1920x1080 ± 15px),长等待时随机滚动或悬停,每个新 Context 轮换 User-Agent。
限制:需先安装 Playwright 驱动与浏览器,命令为 go run github.com/playwright-community/playwright-go/cmd/playwright@latest install --with-deps;完整浏览器实例(即使无头)占用较多内存与 CPU;内置隐蔽手段仍可能被严格反爬系统(如严格配置的 Cloudflare)识别;不包含验证码破解能力。默认行为为只读抓取或测试,除非脚本显式提交表单或修改数据。详细代码示例见 resources/implementation-playbook.md。