Every bot you block comes back in minutes — as a brand-new device.
Industrial scraping no longer looks like one bot hammering your site. It's a fleet of real, genuinely different devices taking turns — each one a polite, normal visitor, together copying everything you publish.
Does this sound like you?
If even a couple of these feel familiar, it’s probably already happening on your platform.
Bandwidth and infrastructure bills keep climbing, but real-user growth doesn't.
What it means: A large share of your traffic is serving someone else's business.
Your prices, listings or articles show up on competitor and aggregator sites within hours.
What it means: Someone is mirroring your catalog almost in real time.
You tighten rate limits — real users hit captchas and errors, yet the scraping never slows down.
What it means: Per-device throttles can't touch an operation spread across hundreds of devices.
Every device you block comes back as a fresh one — clean history, different fingerprint.
What it means: You're blocking devices; the operation just rotates in the next one.
How the attack actually works
No security background needed — here’s the whole play, start to finish.
The fleet
An operator assembles hundreds of real, different devices on residential connections. Each one is indistinguishable from a normal visitor.
The relay
The fleet crawls your site in turns. When anti-bot blocks one device, the next resumes exactly where it stopped — no progress lost.
The mirror
Your catalog reappears elsewhere — repriced, rebranded, monetized. And you paid to serve every page of it.
How SignalGate stops it
One call on your critical path. The verdict comes back before anything happens.
Campaign-scale detection
Where per-device tools see hundreds of unrelated visitors, SignalGate's behavioral models see one coordinated operation — the relay itself, not the individual device.
Measure before you block
Start with fire-and-forget logging and watch the dashboard separate genuine readers from the fleet — no user impact while you decide.
Block before the page is served
Once you're ready, a sub-3 ms verdict fires before the content leaves your servers — the whole operation goes dark at once, and real users never notice.
Fingerprinting catches one device pretending to be many. SignalGate catches the opposite — many genuinely different devices working as one operation — the fraud that device fingerprinting alone was never built to see.
Wire it in, in minutes
Start with two fire-and-forget calls to /v0/log — log the action and the target action. No blocking, no user impact, nothing on your critical path.
Log content requests and real-user actions
from datetime import datetime, timezone
from signalgate import Client, Event, EncryptedPayload
client = Client(api_key="pk_live_...")
def sg_event(body: dict, method: str) -> Event:
# Each request carries its OWN "signalgate" envelope from the browser SDK
return Event(
user_id=body["user_id"],
ip=request.headers.get("X-Forwarded-For", request.remote_addr),
method=method,
timestamp=datetime.now(timezone.utc).isoformat(),
payload=EncryptedPayload(**body["signalgate"]),
)
@app.post("/api/content/view")
def view_content():
body = request.get_json()
# ...serve the article / listing / profile...
client.log(sg_event(body, method="content.request")) # AFTER the content is served
return {"ok": True}
@app.post("/api/actions")
def user_action():
body = request.get_json()
# ...a real-user action scrapers never take (save, share, purchase)...
client.log(sg_event(body, method="user.action")) # its own fresh envelope
return {"ok": True}Within days the dashboard shows how much of your traffic is one coordinated operation — before you turn on blocking.
Stop fraud before it reaches your backend.
Free for everyone through 2026. Two lines of code. No demo required.