Sweet-looking bait. Sticky ending.
Autonomous agents have a weakness no scraper has ever had: they read instructions and act on them. That is the entire product. It is also the opening — a page can address an agent directly, in plain English, and ask it to do something a person would never do and a regex-driven crawler cannot do.
Buried in every page Drosera serves is a notice no human ever sees. The ticket is unique per visitor and HMAC-signed.
A person never sees it. A crawler parses links and moves on — it has no notion of an instruction, so it cannot comply. An LLM reads the sentence, understands it, and does what it says. That third case is a proof, not a heuristic.
Each button replays a request trace through the real detection
engine — the same Python package you can pip install, running
server-side. Nothing here is a mock-up, and nothing is recorded.
Loading…
Look at the middle bar. The crawler and the scanner are obviously robots — but they score zero on LLM agency, and that is correct. Traffic shape cannot tell a language model from a shell script. Only comprehension can, so only comprehension is allowed to move that axis.
Your browser is about to send a real request. Drosera reads its headers and returns a verdict. Nothing is stored, logged or transmitted anywhere else.
Is anyone at the keyboard? Fed by request rate, timing regularity, missing assets, a beacon that never fired.
Is a language model driving? Fed only by comprehension — acting on prose — and explicit self-identification. Never by traffic shape.
Does this client mean harm? Secret hunting, traversal, injection probes, and the use of a planted credential.
Collapsing these into one suspicion score would invent a claim the
evidence does not support, and every downstream decision would inherit the
error. An agent verdict requires comprehension evidence.
Behaviour alone tops out at automation, forever — there is a
test that says so.
pip install drosera
drosera demo # the same four scenarios, in your terminal
drosera replay /var/log/nginx/access.log --quiet
Wrap an app you already have:
from drosera.middleware.asgi import DroseraMiddleware app = DroseraMiddleware(app)
Drosera detects and delays. It does not attack, hijack, or steer. Every lure passes through a guardrail that rejects text trying to override an agent's instructions, extract its prompt, induce code execution, or ask it to hide anything from its operator. Prompt injection against a third party's agent is the attack this exists to detect.