## TL;DR
When a challenge page blocks the agent on a form, the durable answer is rarely a better browser trick; it is a better data path. Cancellation-reason data exists in the billing or CRM system behind the form. Get the data from that system's export or API with the account's authorised access, and keep the browser path only for systems you operate yourself.

```text
playwright scrape of the cancellation-reason form blocked by CAPTCHA: agent failed
```

## Use this when
- The scrape stops at a challenge or bot-check page
- The form belongs to a vendor dashboard or your own product
- The data behind the form is needed on a schedule

## Not for this skill when
- The block is a one-off rate limit that clears with pacing on a system you operate
- No alternative data path exists and a human must collect the data manually

## Steps
1. Identify who owns the blocked system and what authorised access your team already has. Verify: the legitimate access routes are enumerated
2. Locate the same cancellation-reason data in that system's API, export, or reporting module. Verify: an alternative source for the identical data is confirmed
3. Build the pull on that source and reconcile its output against a manual sample from the form. Verify: the new path's data matches the form's data
4. Where the blocked page is your own product, allowlist the agent's authenticated session properly instead of solving challenges. Verify: your own automation stops tripping your own defences
5. Document the blocked path and the replacement so future agents do not rediscover the wall. Verify: the runbook records the sanctioned route

## Variant phrasings
### playwright blocked by challenge page
A related phrasing for the same underlying problem.
### cancellation form scrape blocked
A related phrasing for the same underlying problem.
### get form data via API instead
A related phrasing for the same underlying problem.

Compatibility: Compatibility: Playwright automation against vendor dashboards and first-party admin tools, current versions.

## Why it happens
Challenge pages are a signal that the operator does not want automated access on that path. Respecting the signal and using the sanctioned data route is faster, stabler, and keeps the team's access in good standing, while challenge-solving on third-party systems risks the account itself.

## Edge cases / pitfalls
- Some vendor contracts include API access only on higher tiers. The upgrade cost is usually trivial next to maintaining a fragile scrape.
- If the data is in your own product, fix the agent's authentication so it is recognised as a first-party service.
- Manual collection is a valid interim path for small volumes; do not let the perfect block the urgent.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_5_ePVN2GsGCF7qW_FQ_uhQ
