Playwright 反检测环境配置
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3ff3c268/playwright-stealth。
技能介绍
问题背景
用 Playwright 跑采集或回归测试时,Chromium 默认会带上 --enable-automation、navigator.webdriver === true 等特征;视口、UA、时区若长期固定,也容易被风控当成脚本流量。更麻烦的是部分站点会读 Canvas、WebGL、插件列表、Permissions 等 API——空实现或缺省值往往比「普通用户」还显眼。
技能做了什么
本技能把一套环境伪装拆成可组合的模块,思路来自 caijiqi-kaifa/electron/collector/stealth.ts:
getRandomBrowserConfig(site):按站点(US/UK/DE/FR/IT/ES/JP/CA/AU/IN/MX,缺省 US)生成自洽的 UA、视口、语言、时区,避免「分辨率写的是 1920×1080、视口却是 800×600」这类穿帮。STEALTH_ARGS/IGNORE_DEFAULT_ARGS:启动层去掉自动化相关标志、并处理后台节流等 Chromium 参数。injectStealthScripts(page)与createStealthContext(browser, site, proxy?):在浏览器运行时向页面注入脚本,覆盖 webdriver 暴露、插件/Chrome 对象、Canvas/Audio/WebRTC/Permissions,并尽量保持与所选分辨率一致。
内置 UA 与分辨率只是精简样本;若要更大池子,可把 browser-fingerprint-pool 的数据替换进 RANDOM_UAS / RANDOM_RESOLUTIONS。
边界与注意
injectStealthScripts、createStealthContext必须在 Playwright 浏览器进程里执行,纯 Node 侧无法单测注入逻辑;getRandomBrowserConfig与启动参数可在 Node 侧单独验证。- 技能目标是让环境更接近真实用户,不保证绕过任意反爬;请遵守目标站点条款与适用法律,仅用于合规自动化与测试。
- 生产环境若需要 88+ UA、87 分辨率量级,建议与 browser-fingerprint-pool 搭配,而不是只依赖内置样本。
使用场景
- 预发或线上页面因 `navigator.webdriver` 拦截 Playwright 会话时,用启动参数与页面注入把自动化痕迹压到更接近真实 Chromium。
- 按 US/JP/DE 等区域站跑 Playwright 采集,需要 `getRandomBrowserConfig` 随机 UA、视口、语言与时区且彼此一致,避免固定指纹。
- 多步骤登录或下单回归里,站点会读 Canvas、WebGL、插件与 Permissions;需注入脚本补齐特征,避免「空实现」暴露脚本环境。
- 要在同一浏览器进程里批量开多个隔离上下文(可选代理),用 `createStealthContext` 为每个任务套用同一套隐身环境配置。
适合人员
- 维护 Playwright 端到端套件、在预发环境频繁撞上反自动化拦截的测试工程师
- 用 Playwright 做定时页面采集、目标站对 UA/分辨率/插件列表做一致性校验的数据开发
- 负责 electron/collector 类采集项目、想把 stealth 环境逻辑抽到可复用模块的后端或工具开发
- 在合规测试范围内做多地区页面快照或竞品对比、需要按站点随机指纹并支持代理的自动化维护者