Web Automation

How PerimeterX (HUMAN) detects bots and scrapers (2026)

How PerimeterX (HUMAN) detects bots and scrapers (2026) — conceptual illustration
On this page

PerimeterX, now branded as HUMAN Security, is one of the more elaborate anti-bot WAFs on the market. It fronts high-value targets like Zillow, StockX, Realtor.com, Trulia, Lazada and Kickstarter, and is widely studied because its signature press and hold challenge measures input characteristics that aren't trivial to reproduce from scripted code.

This is a reference on how PerimeterX is structured, what it measures, and what each detection layer means for someone building automation.

Quick facts

Now brandedHUMAN Security
Signature challenge"Press and hold" button
Cookies_px3, _pxhd, _pxvid
MeasuresInput dynamics & sensor telemetry
Best approachReal browser + human-like input

What PerimeterX is

PerimeterX is a reverse-proxy WAF deployed between visitors and the origin site. Every request hits PerimeterX's edge, which produces a per-request trust score from IP reputation, sensor data collected in the browser, TLS handshake characteristics, and behavioural telemetry.

Low-trust requests surface as one of:

  • A silent 403 or 429 with x-px-block headers.
  • A press and hold human-verification challenge that measures touch pressure, mouse velocity, hold duration and micro-movements.
  • A full block page with a ref ID.

The scorer is intent-blind — any client that doesn't match a real browser profile is scored the same regardless of what it's trying to do.

The four signal categories

1. IP address reputation

  • Datacenter IPs (AWS, GCP, Azure, DigitalOcean, OVH…) — pre-scored low. Many cloud ranges are blanket-blocked on Zillow and StockX before any fingerprint check even runs.
  • Residential IPs — assigned by ISPs to home connections, treated as much higher trust.
  • Mobile IPs — cell tower and CGNAT pools, the highest baseline trust because pools rotate naturally.

IP reputation dominates the first-request score, before the sensor has anything to report.

2. JavaScript sensor and the _px* cookie chain

This is the layer PerimeterX is best known for. Every protected page ships a heavily-obfuscated sensor script that runs in the browser and collects hundreds of data points: canvas/WebGL fingerprints, audio context, installed fonts, screen metrics, timezone, language, plugin list, navigator.webdriver, the shape of window.chrome, mouse-movement entropy, and more.

The sensor POSTs an encrypted payload to PerimeterX's collector and the response sets the cookie chain:

  • _pxhd — long-lived device hash.
  • _pxvid — visitor ID.
  • _px3 — short-lived session token.

A missing or stale payload triggers the press and hold challenge, which itself collects timing and pressure data a scripted click can't easily generate.

3. HTTP and TLS fingerprinting

Before any HTML is exchanged, PerimeterX fingerprints the client from the TLS handshake (JA3/JA4) and HTTP/2 behaviour.

  • Most scraping libraries still default to HTTP/1.1. Real Chrome and Firefox haven't in years.
  • libcurl and Go's net/http produce JA3 signatures that don't match any real browser, even when they negotiate HTTP/2.
  • HTTP/2 fingerprinting tracks pseudo-header order, SETTINGS frame values, and window-update sizes.

4. Behavioural and pattern analysis

PerimeterX runs continuous ML pattern analysis on connection history:

  • Missing real-browser headers (Sec-Fetch-*, Accept-Language, sec-ch-ua).
  • The _px* cookies missing or sent from a different IP than the one that minted them.
  • Honeypot link hits.
  • Bursty timing.
  • Identical sensor payloads reused across pages.

What this means for developers

The four signals are evaluated together, so improving one rarely moves the score on its own. The general categories of tooling that show up in real-world workflows:

  • HTTP clients with browser-impersonating TLScurl_cffi, curl-impersonate, tls-client. They match the handshake but can't run the sensor.
  • Stealth-patched browserspatchright, Camoufox, and Playwright with stealth plugins, which run the sensor in a real browser context.
  • Managed scraping APIs — services like Scrappey that combine proxies, patched browsers and session persistence behind one endpoint.

A minimal example through a managed API, kept here for shape:

import requests

response = requests.post(
    'https://publisher.scrappey.com/api/v1',
    json={
        'cmd': 'request.get',
        'url': 'https://example.com/listings',
        'session': 'px-session-1'
    },
    headers={'Authorization': 'Bearer YOUR_API_KEY'}
)
print(response.json()['solution']['response'])

Session reuse is particularly load-bearing on PerimeterX: the _px* cookies and accumulated behavioural state are much harder to mint fresh on every request than to keep warm across one.

Sites commonly fronted by PerimeterX

Real-estate, marketplaces, ticketing and sneaker resale dominate: Zillow.com, Stockx.com, Realtor.com, Trulia.com, Lazada and Kickstarter.com. Many of these sites rotate between PerimeterX, Cloudflare, Akamai and DataDome depending on traffic conditions.

Summary

PerimeterX produces a continuous trust score from IP reputation, the _px* JS sensor and its cookie chain, TLS/HTTP/2 fingerprints, and behavioural patterns over time. The press and hold challenge is the most visible failure mode but is downstream of the sensor — by the time it fires, the score has already dropped. As with any modern WAF, detection logic updates on a rolling basis.

Related terms

Concept map

How How PerimeterX (HUMAN) detects bots and scrapers (2026) connects

The terms most directly tied to this one. Hover a node to see its neighbours, click to preview, drag to rearrange.

0 terms · 0 connections
You are here · Web Automation
Building map…

Frequently asked questions

What is the PerimeterX press-and-hold challenge?

A button you must hold while it measures pointer pressure, micro-movement, and timing — signals that are hard to fake convincingly without a real input device and browser.

Which sites use PerimeterX/HUMAN?

High-value targets like Zillow, StockX, Realtor.com, Trulia, and Kickstarter. Many rotate between vendors, so the same site may show different challenges.

Can an HTTP client pass PerimeterX?

Rarely on protected paths — the _px tokens are minted by client-side JavaScript and sensor collection. Executing that in a real browser context is the reliable route.

Last updated: 2026-05-28