Loading...
Loading...
Probe a URL with escalating headless browser configurations to detect CDN bot protection (Akamai, Cloudflare, DataDome, AWS WAF) and produce a browser-recipe.json that downstream playwright-cli consumers use to bypass blocking. Runs an automated escalation ladder: default headless → stealth script injection → system Chrome (TLS fingerprint fix) → persistent profile. Use BEFORE any playwright-cli interaction with an untrusted domain. Triggers on: browser probe, site blocked, headless blocked, CDN blocking, bot detection, browser recipe, can't load page, 403 error page, access denied.
npx skill4agent add adobe/skills browser-probeplaywright-cliplaywright-cliif [[ -n "${CLAUDE_SKILL_DIR:-}" ]]; then
PROBE_DIR="${CLAUDE_SKILL_DIR}/scripts"
else
PROBE_DIR="$(dirname "$(command -v browser-probe.js 2>/dev/null || \
find ~/.claude -path "*/browser-probe/scripts/browser-probe.js" \
-type f 2>/dev/null | head -1)")"
finode "$PROBE_DIR/browser-probe.js" "$URL" "$OUTPUT_DIR"navigator.webdriverHeadlessChrome--user-agent--browser=chrome$OUTPUT_DIR/probe-report.jsonprobe-report.jsonfirstSuccessdetectedSignalsreferences/stealth-config.mdfirstSuccessbrowser-recipe.json$OUTPUT_DIR{
"url": "<probed URL>",
"generated": "<ISO timestamp>",
"cliConfig": {
"browser": {
"browserName": "chromium",
"launchOptions": { "channel": "<from firstSuccess step>" }
}
},
"stealthInitScript": "<full script from stealth-config.md if stealth was needed>",
"notes": "<1-2 sentence explanation of what was detected and why this config>"
}firstSuccess| firstSuccess | channel | args | stealthInitScript |
|---|---|---|---|
| — | — | null |
| — | — | from reference |
| — | | from reference |
| | | from reference |
| | | from reference |
firstSuccesspersistent"persistent": trueBrowser probe complete for <url>.
Working config: <firstSuccess>
Detected: <detectedSignals or "no bot protection detected">
Recipe: <path to browser-recipe.json>Browser probe failed for <url>. No headless configuration could load the page.
Tried: default, stealth, stealth-ua, chrome, persistent
Detected signals: <detectedSignals>
Options:
1. Use --headed flag for manual browser interaction
2. Provide pre-captured data (DOM snapshot, screenshots) manually
3. Check if the URL requires authentication or VPN access--config=<path-to-cliConfig>playwright-cli openstealthInitScriptbrowser.initScripteval"persistent": true--persistentplaywright-cli --help