Agent Skills
返回列表
💻

Playwright 反检测环境配置

开发编程 更新于 2026.08.29

将以下提示词粘贴到你的 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 环境逻辑抽到可复用模块的后端或工具开发
  • 在合规测试范围内做多地区页面快照或竞品对比、需要按站点随机指纹并支持代理的自动化维护者