Module 11 · Human Verification
Automating CAPTCHAs
A CAPTCHA blocks bots by asking for something scripts find hard: reading distorted text, doing a sum, aligning a puzzle, or picking the right tiles. These four labs are self-contained and solvable — each teaches a real Playwright technique (OCR on a screenshot, reading a value, humanized drag, click-loops from metadata) against a real backend, with no paid solving services.
Text / OCR CAPTCHA
Distorted characters in an image. In a real test you screenshot the image element and run it through an OCR library like tesseract.js, then type the result.
Generate a challenge
No challenge yet — click “New challenge”.
Enter & verify
✓ Solved
✗ Not solved
Current Execution
TEXTNo request executed yet.
Status
Not run yet
Response body
Not run yet
Distorted characters rendered server-side into a PNG/SVG image — nothing about the answer ever reaches the page as text, so the only ways to solve it are: read it visually (a human), or screenshot the image element and run OCR against it (a script). The Clean tier OCRs most reliably; Noisy and Distorted intentionally degrade OCR accuracy, the same way real-world CAPTCHA vendors do.
Math CAPTCHA
Read an arithmetic problem from the image and submit the answer — OCR the image (or read it), compute, and type the number.
Generate a problem
No problem yet — click “New problem”.
Answer & verify
✓ Solved
✗ Not solved
Current Execution
MATHNo request executed yet.
Status
Not run yet
Response body
Not run yet
Same rendering approach as the text CAPTCHA — an arithmetic expression baked into an image, not exposed as text. Solving it programmatically means OCRing the expression, parsing the operator, and computing the result before submitting.
Slider Puzzle CAPTCHA
Drag the piece until it lines up with the gap, then submit its position. Teaches humanized mouse-drag with intermediate moves and bounding-box math.
Puzzle
No puzzle yet — click “New puzzle”.
Submit position
✓ Aligned
✗ Not aligned
Current Execution
SLIDERNo request executed yet.
Status
Not run yet
Response body
Not run yet
A background image with a cut-out gap and a separate puzzle piece — align the piece with the gap and submit its x position. The interesting automation problem isn't the math, it's the interaction: naive instant-jump drags are trivially detectable, so real tests simulate a human-like drag with intermediate mouse-move steps.
Image Grid CAPTCHA
The reCAPTCHA-style "select all…" grid. Here each tile exposes its category (in the response and as a data-category attribute), so you solve it by reading metadata and clicking the matches — the practiceable path a hosted reCAPTCHA hides.
Prompt
Click “New grid” to begin.
Submit selection
✓ Correct selection
✗ Wrong selection
Current Execution
GRIDNo request executed yet.
Status
Not run yet
Response body
Not run yet
The reCAPTCHA-style 'select all matching tiles' pattern — but here every tile exposes its own category, both in the JSON response and as a data-category attribute in the DOM. That's the practiceable path a hosted reCAPTCHA deliberately hides: read the prompt, match tiles by metadata, click them.