You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-**Tripwire Deception** - Deterministic, zero-false-positive honeypot links & paths that catch stealth scrapers by *intent* (going where a human can't) — even ones built to defeat browser fingerprinting
11
12
-**TLS Fingerprinting** - JA3 and JA4 fingerprint analysis for deeper inspection
12
13
-**Two-Tier Analysis** - Fast local checks + comprehensive server-side verification
13
14
-**Smart Decision Making** - Allow, block, or challenge based on threat level
@@ -21,6 +22,9 @@ Advanced bot detection and protection for Node.js applications with TLS fingerpr
21
22
|---------|---------|-------------|
22
23
|[@webdecoy/node](https://www.npmjs.com/package/@webdecoy/node)|[](https://www.npmjs.com/package/@webdecoy/node)| Core SDK for Node.js |
|[@webdecoy/client](https://www.npmjs.com/package/@webdecoy/client)|[](https://www.npmjs.com/package/@webdecoy/client)| Browser-side signal collector |
24
28
25
29
## Quick Start
26
30
@@ -56,6 +60,64 @@ if (!result.allowed) {
56
60
}
57
61
```
58
62
63
+
## Tripwire Deception
64
+
65
+
Fingerprint-based detection loses to purpose-built stealth scrapers (e.g. [botasaurus](https://github.com/omkarcloud/botasaurus)) that present a genuine browser fingerprint. **Tripwires win a different fight:** a hidden honeypot link or path that a real user can never reach — so any request for it is automated *by construction*. It's deterministic, **zero-false-positive**, and needs **no API key**.
A tripwire hit makes `protect()` return `allowed: false` and reports a violation — enforced automatically by the Express/Fastify/Next middleware (403), no extra code. Register your own paths, prefixes, or patterns too:
-**`filter({ expression, action? })`** — an expression language over IP reputation/geo (e.g. `ip.tor`, `ip.country in ["CN", "RU"]`); requires an API key for enrichment.
120
+
59
121
## Framework Integrations
60
122
61
123
### Express.js
@@ -121,7 +183,11 @@ const webdecoy = new WebDecoy({
121
183
122
184
## How It Works
123
185
124
-
Web Decoy uses a two-tier detection system:
186
+
Web Decoy uses a layered detection system:
187
+
188
+
### Tier 0: Tripwires (Deterministic)
189
+
190
+
Requests for hidden honeypot paths are blocked immediately, before any scoring — a zero-false-positive signal that catches stealth scrapers fingerprinting misses. See [Tripwire Deception](#tripwire-deception).
125
191
126
192
### Tier 1: Local Analysis (Fast)
127
193
@@ -213,9 +279,26 @@ import type {
213
279
TLSInfo,
214
280
LocalAnalysis,
215
281
SDKDetectionRequest,
282
+
// Rules & deception
283
+
Rule,
284
+
RateLimitConfig,
285
+
FilterConfig,
286
+
TripwireConfig,
287
+
Honeytoken,
288
+
HoneytokenOptions,
216
289
} from'@webdecoy/node';
217
290
```
218
291
292
+
### `tripwire(config?)` / `honeytoken(options?)`
293
+
294
+
Deterministic honeypot-path detection. `tripwire()` returns a `Rule` for the
295
+
`rules` array; `honeytoken()` returns `{ path, linkHtml }` — a hidden decoy link
296
+
and the tripwire path it points at. See [Tripwire Deception](#tripwire-deception).
297
+
298
+
### `rateLimit(config)` / `filter(config)`
299
+
300
+
Additional local rules for the `rules` array. See [Rules](#rules).
301
+
219
302
## Getting an API Key
220
303
221
304
1. Sign up at [app.webdecoy.com](https://app.webdecoy.com)
0 commit comments