Headless automation betrays itself in how it moves. The cursor teleports in straight lines, keystrokes land on a metronome, and nothing ever hesitates. The behavioral anti-bot systems (the PerimeterX and Datadome class) score exactly those signals.
Playwright Humanize is a drop-in layer that makes automated interaction look human. Mouse movement follows Bézier curves with realistic acceleration and overshoot instead of instant jumps; typing carries variable per-keystroke timing instead of a fixed interval. The result measurably lowers behavioral detection without touching the rest of your automation.
It’s the constructive half of a decade spent on the other side of the same problem: reverse-engineering the systems built to catch precisely this.
- Node.js / Playwright, open-source, with documentation and a unit-test suite.
- Bézier-curve cursor paths with acceleration, overshoot, and settling.
- Per-keystroke timing jitter modeled on human typing cadence.
- Recovered to sr.ht after the GitHub purge.