A proxy detection API built for residential proxies, not just datacenter ranges

Maskbreak checks each live visit to your signup, login or checkout for a proxy exit, in a hosting range or on a home or mobile connection, and names the service when it’s known (for example BRIGHT_DATA). A proxy exit comes back block.

  • Free plan: 10,000 visitor checks a month
  • No card
  • Paid plans from €29 a month
Example checkA visit through a proxy
Blockrisk_score 80
IP address
203.0.113.9
Proxy
Bright Data
VPN
Not detected
Tor exit
Not detected
Cloud server
Detected
Country
Germany
"decision": "block""reasons": ["proxy_detected", "datacenter_asn"]
The public sample for a proxy visit, as your server gets it. See the JSON

What a check tells your server

network.proxy
True when the visit comes through an address known as a proxy exit, in a hosting range or on a home or mobile connection. The answer is block, with the reason proxy_detected; Apple’s iCloud Private Relay is the one proxy that comes back review (privacy_relay).
network.service
The proxy network, such as BRIGHT_DATA, when it’s known, and null when it isn’t.
network.datacenter
True when the exit sits in a hosting range. A residential exit reads proxy: true with datacenter: false.
device
The browser check beside it: automation, fake browsers, and a visitor_id that doesn’t change when the exit address does. Present when the browser check completes.

Add it to your form

Load https://maskbreak.com/assets/sentinel.js on the page and give the form the class monocle-enriched; your server sends the two fields it adds to /v1/evaluate before the action runs. The example starts in watch mode: it logs each verdict and lets every request through, even when Maskbreak can’t be reached. Once the log matches Events in your dashboard, uncomment the enforce line; the integration guide has the full checks. When a bare IP lookup is enough, read Proxy detection API vs IP lookup; to compare providers, the proxy detection API comparison.

Your server
// Full evaluation: network + device layers in one verdict
// Watch mode first: log the verdict, always continue, fail open
const body = req.body || {};  // sentinel.js adds monocle + sentinel_fp to your form
let risk = null;
try {
  const verdictRes = await fetch('https://maskbreak.com/v1/evaluate', {
    method: 'POST',
    signal: AbortSignal.timeout(5000),
    headers: {
      'Authorization': 'Bearer ' + process.env.MASKBREAK_API_KEY,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      token: body.token || body.monocle,  // network evidence
      fingerprintEventId: body.fingerprintEventId || body.sentinel_fp,  // device evidence
      tz: body.tz || body.sentinel_tz
    })
  });
  if (verdictRes.ok) risk = await verdictRes.json();
} catch {}  // unreachable or timed out: your handler still runs
// risk.network.proxy       -> true when the request exits a proxy
// risk.network.datacenter  -> exit sits in hosting space (false for a residential exit)
// risk.network.service     -> named operator when known: 'BRIGHT_DATA'
console.log('[maskbreak]', JSON.stringify({
  decision: risk?.decision ?? null, reasons: risk?.reasons ?? null,
  risk_score: risk?.risk_score ?? null, degraded: risk ? !!risk.degraded : null,
  network: risk?.network ?? null
}));
// Enforce later: if (risk?.decision === 'block') return res.status(403).json({ error: 'Request rejected' });

What it can’t see

Exits it doesn’t know yet
A home or mobile address that isn’t known as a proxy exit when the visit happens reads as an ordinary home connection. The browser check still runs beside it.
A blocked script
Without the script’s token there is no network verdict, and the answer says degraded: true. Ask for verification instead of counting the visit as clean.
A detection rate
We haven’t measured one. Connect through the proxy you worry about and run the live check on the homepage.

Common questions

What is the difference between a residential proxy and a datacenter proxy?

A datacenter proxy exits from a hosting provider’s addresses, which the providers publish. A residential proxy sends traffic through a real home or mobile connection, usually rented from a commercial network such as Bright Data, so the address looks like a customer’s. Residential proxies are the ones simple IP filtering misses: catching them takes curated intelligence about which specific addresses are currently acting as proxy exits.

Will it flag my ordinary home users?

Not for being on a home connection: that reads residential: true with the proxy flag false. The flag fires on addresses seen acting as proxy exits, which can include a home line whose owner runs a bandwidth-sharing app, and you can send those to review instead of block under Rules in the dashboard.

Can I check a proxy IP without a live visit?

Only partly. GET /v1/lookup/{ip} and the free IP lookup tool check a bare address for a Tor exit and a cloud-server range; proxy verdicts and the service name need a live visit.

Check your signups and logins for proxies

Setup starts in watch mode, so nobody is blocked until you turn blocking on.