Skip to content

feat(web): BlockedError — block_kind, vendor and the gating CAPTCHA, 0.61.0 (SCR-306) - #65

Merged
0xGhostCasper merged 1 commit into
mainfrom
casper/scr-306-blocked-error
Oct 14, 2026
Merged

0xGhostCasper merged 1 commit into
mainfrom
casper/scr-306-blocked-error

Conversation

@0xGhostCasper

Copy link
Copy Markdown
Member

Linear: SCR-306 (epic SCR-303). Server side: scrape-badger/scrapebadger#2471 + #2472.

A web scrape that is blocked on every attempt (422, error: "blocking_page_detected") now raises/throws BlockedError. It is a subclass of ValidationError, so existing handlers still catch it. It exposes:

  • block_kind / blockKind: antibot | captcha | rate_limit | ip_ban | geo_block | auth_wall | empty | other
  • vendor: the protection that served the wall, e.g. cloudflare, datadome, akamai, aws_waf
  • captcha: the gating CAPTCHA when the kind is captcha, with system, version, gate, solvable and params (e.g. sitekey)
  • data: the scrape result that came back with the block

On older server responses these are None/undefined, so the change is fully backward compatible. Version 0.61.0, with a CHANGELOG entry and tests for blocked, older-body and other-422 cases.

🤖 Generated with Claude Code

…TCHA, 0.61.0 (SCR-306)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@codecov

codecov Bot commented Oct 13, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@0xGhostCasper
0xGhostCasper merged commit b561a97 into main Oct 14, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants