@prosopo/provider 4.14.4 → 4.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build$colon$cjs.log +10 -9
- package/.turbo/turbo-build$colon$tsc.log +24 -24
- package/.turbo/turbo-build.log +11 -10
- package/CHANGELOG.md +66 -0
- package/dist/api/admin/apiRemoveDetectorKeyEndpoint.d.ts.map +1 -1
- package/dist/api/blacklistRequestInspector.d.ts +8 -3
- package/dist/api/blacklistRequestInspector.d.ts.map +1 -1
- package/dist/api/blacklistRequestInspector.js +49 -11
- package/dist/api/blacklistRequestInspector.js.map +1 -1
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.d.ts.map +1 -1
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js +19 -13
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js.map +1 -1
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.d.ts +2 -0
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.d.ts.map +1 -1
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.js +7 -1
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.js.map +1 -1
- package/dist/api/captcha/submitPoWCaptchaSolution.d.ts +4 -1
- package/dist/api/captcha/submitPoWCaptchaSolution.d.ts.map +1 -1
- package/dist/api/captcha/submitPoWCaptchaSolution.js +12 -7
- package/dist/api/captcha/submitPoWCaptchaSolution.js.map +1 -1
- package/dist/api/handshakeTimingMiddleware.d.ts +2 -2
- package/dist/api/handshakeTimingMiddleware.js +11 -11
- package/dist/api/hardBlockVerdictCache.d.ts +18 -0
- package/dist/api/hardBlockVerdictCache.d.ts.map +1 -0
- package/dist/api/hardBlockVerdictCache.js +119 -0
- package/dist/api/hardBlockVerdictCache.js.map +1 -0
- package/dist/cjs/api/blacklistRequestInspector.cjs +49 -11
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/handler.cjs +19 -13
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.cjs +7 -1
- package/dist/cjs/api/captcha/submitPoWCaptchaSolution.cjs +12 -7
- package/dist/cjs/api/handshakeTimingMiddleware.cjs +11 -11
- package/dist/cjs/api/hardBlockVerdictCache.cjs +119 -0
- package/dist/cjs/index.cjs +1 -0
- package/dist/cjs/tasks/frictionless/frictionlessTasks.cjs +9 -9
- package/dist/cjs/tasks/spam/checkTrafficFilter.cjs +6 -9
- package/dist/index.js +2 -1
- package/dist/tasks/captchaManager.d.ts +1 -0
- package/dist/tasks/captchaManager.d.ts.map +1 -1
- package/dist/tasks/captchaManager.js.map +1 -1
- package/dist/tasks/frictionless/frictionlessTasks.d.ts +1 -1
- package/dist/tasks/frictionless/frictionlessTasks.js +9 -9
- package/dist/tasks/spam/checkTrafficFilter.d.ts.map +1 -1
- package/dist/tasks/spam/checkTrafficFilter.js +6 -9
- package/dist/tasks/spam/checkTrafficFilter.js.map +1 -1
- package/dist/tests/integration/api/blacklistRequestInspector.integration.test.js +2 -1
- package/dist/tests/integration/api/blacklistRequestInspector.integration.test.js.map +1 -1
- package/dist/tests/integration/api/blacklistRequestInspector.storm.integration.test.d.ts +2 -0
- package/dist/tests/integration/api/blacklistRequestInspector.storm.integration.test.d.ts.map +1 -0
- package/dist/tests/integration/api/blacklistRequestInspector.storm.integration.test.js +295 -0
- package/dist/tests/integration/api/blacklistRequestInspector.storm.integration.test.js.map +1 -0
- package/dist/tests/unit/api/blacklistRequestInspector.unit.test.js +8 -2
- package/dist/tests/unit/api/blacklistRequestInspector.unit.test.js.map +1 -1
- package/dist/tests/unit/api/handshakeTimingMiddleware.unit.test.js +22 -22
- package/dist/tests/unit/api/hardBlockVerdictCache.unit.test.d.ts +2 -0
- package/dist/tests/unit/api/hardBlockVerdictCache.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/api/hardBlockVerdictCache.unit.test.js +192 -0
- package/dist/tests/unit/api/hardBlockVerdictCache.unit.test.js.map +1 -0
- package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js +2 -0
- package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.js +73 -1
- package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.js.map +1 -1
- package/package.json +13 -13
|
@@ -87,11 +87,11 @@ const submitPoWCaptchaSolution = (env) => async (req, res, next) => {
|
|
|
87
87
|
userAgent,
|
|
88
88
|
...req.ja4 && { ja4: req.ja4 },
|
|
89
89
|
...fingerprintProof && { fingerprintProof },
|
|
90
|
-
...req.
|
|
91
|
-
|
|
90
|
+
...req.tcpToChelloUs !== void 0 && {
|
|
91
|
+
tcpToChelloUs: req.tcpToChelloUs
|
|
92
92
|
},
|
|
93
|
-
...req.
|
|
94
|
-
|
|
93
|
+
...req.chelloToHandshakeUs !== void 0 && {
|
|
94
|
+
chelloToHandshakeUs: req.chelloToHandshakeUs
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
97
|
});
|
|
@@ -120,7 +120,10 @@ const submitPoWCaptchaSolution = (env) => async (req, res, next) => {
|
|
|
120
120
|
}
|
|
121
121
|
}));
|
|
122
122
|
}
|
|
123
|
-
const escalation = await buildEscalation(tasks$1, result, challenge
|
|
123
|
+
const escalation = await buildEscalation(tasks$1, result, challenge, {
|
|
124
|
+
tcpToChelloUs: req.tcpToChelloUs,
|
|
125
|
+
chelloToHandshakeUs: req.chelloToHandshakeUs
|
|
126
|
+
});
|
|
124
127
|
const response = {
|
|
125
128
|
status: "ok",
|
|
126
129
|
// On escalation the user is not done — they still need to clear
|
|
@@ -148,7 +151,7 @@ const submitPoWCaptchaSolution = (env) => async (req, res, next) => {
|
|
|
148
151
|
);
|
|
149
152
|
}
|
|
150
153
|
};
|
|
151
|
-
const buildEscalation = async (tasks2, result, challenge) => {
|
|
154
|
+
const buildEscalation = async (tasks2, result, challenge, handshakeTiming) => {
|
|
152
155
|
if (!result.verified || !result.routingOutput) return void 0;
|
|
153
156
|
const routedType = result.routingOutput.captchaType;
|
|
154
157
|
if (routedType !== types.CaptchaType.image && routedType !== types.CaptchaType.puzzle) {
|
|
@@ -187,7 +190,9 @@ const buildEscalation = async (tasks2, result, challenge) => {
|
|
|
187
190
|
originSession.entropyCryptoFingerprint,
|
|
188
191
|
originSession.entropyWallClockOffsetMs,
|
|
189
192
|
originSession.entropyMathRandomFirst,
|
|
190
|
-
originSession.currentUrl
|
|
193
|
+
originSession.currentUrl,
|
|
194
|
+
handshakeTiming?.tcpToChelloUs,
|
|
195
|
+
handshakeTiming?.chelloToHandshakeUs
|
|
191
196
|
);
|
|
192
197
|
if (tasks2.writeQueue) {
|
|
193
198
|
await tasks2.writeQueue.cacheSessionEscalation(
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const apiExpressRouter = require("@prosopo/api-express-router");
|
|
4
4
|
const logger = require("@prosopo/logger");
|
|
5
|
-
const HEADER_TCP_TO_CHELLO = "x-tls-tcp-to-chello-
|
|
6
|
-
const HEADER_CHELLO_TO_HANDSHAKE = "x-tls-chello-to-handshake-
|
|
5
|
+
const HEADER_TCP_TO_CHELLO = "x-tls-tcp-to-chello-us";
|
|
6
|
+
const HEADER_CHELLO_TO_HANDSHAKE = "x-tls-chello-to-handshake-us";
|
|
7
7
|
const parseTimingHeader = (raw, logger2, headerName) => {
|
|
8
8
|
if (raw === void 0) {
|
|
9
9
|
return void 0;
|
|
@@ -25,12 +25,12 @@ const parseTimingHeader = (raw, logger2, headerName) => {
|
|
|
25
25
|
const getHandshakeTiming = (headers, logger$1) => {
|
|
26
26
|
const log = logger$1 ?? logger.getLogger("info", "provider:handshake-timing");
|
|
27
27
|
return {
|
|
28
|
-
|
|
28
|
+
tcpToChelloUs: parseTimingHeader(
|
|
29
29
|
headers[HEADER_TCP_TO_CHELLO],
|
|
30
30
|
log,
|
|
31
31
|
HEADER_TCP_TO_CHELLO
|
|
32
32
|
),
|
|
33
|
-
|
|
33
|
+
chelloToHandshakeUs: parseTimingHeader(
|
|
34
34
|
headers[HEADER_CHELLO_TO_HANDSHAKE],
|
|
35
35
|
log,
|
|
36
36
|
HEADER_CHELLO_TO_HANDSHAKE
|
|
@@ -41,17 +41,17 @@ const handshakeTimingMiddleware = (env) => {
|
|
|
41
41
|
return async (req, res, next) => {
|
|
42
42
|
try {
|
|
43
43
|
const timing = getHandshakeTiming(req.headers, req.logger);
|
|
44
|
-
if (timing.
|
|
45
|
-
req.
|
|
44
|
+
if (timing.tcpToChelloUs !== void 0) {
|
|
45
|
+
req.tcpToChelloUs = timing.tcpToChelloUs;
|
|
46
46
|
}
|
|
47
|
-
if (timing.
|
|
48
|
-
req.
|
|
47
|
+
if (timing.chelloToHandshakeUs !== void 0) {
|
|
48
|
+
req.chelloToHandshakeUs = timing.chelloToHandshakeUs;
|
|
49
49
|
}
|
|
50
|
-
if (timing.
|
|
50
|
+
if (timing.tcpToChelloUs !== void 0 || timing.chelloToHandshakeUs !== void 0) {
|
|
51
51
|
req.logger = req.logger.with(
|
|
52
52
|
{
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
tcpToChelloUs: timing.tcpToChelloUs,
|
|
54
|
+
chelloToHandshakeUs: timing.chelloToHandshakeUs
|
|
55
55
|
},
|
|
56
56
|
"handshakeTiming"
|
|
57
57
|
);
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const DEFAULT_VERDICT_CACHE_TTL_MS = 1e4;
|
|
4
|
+
const DEFAULT_VERDICT_CACHE_MAX_ENTRIES = 5e4;
|
|
5
|
+
class HardBlockVerdictCache {
|
|
6
|
+
constructor(ttlMs = DEFAULT_VERDICT_CACHE_TTL_MS, maxEntries = DEFAULT_VERDICT_CACHE_MAX_ENTRIES) {
|
|
7
|
+
this.ttlMs = ttlMs;
|
|
8
|
+
this.maxEntries = maxEntries;
|
|
9
|
+
this.store = /* @__PURE__ */ new Map();
|
|
10
|
+
this.inflight = /* @__PURE__ */ new Map();
|
|
11
|
+
}
|
|
12
|
+
get(key) {
|
|
13
|
+
const entry = this.store.get(key);
|
|
14
|
+
if (entry === void 0) {
|
|
15
|
+
return void 0;
|
|
16
|
+
}
|
|
17
|
+
if (entry.expiresAt <= Date.now()) {
|
|
18
|
+
this.store.delete(key);
|
|
19
|
+
return void 0;
|
|
20
|
+
}
|
|
21
|
+
this.store.delete(key);
|
|
22
|
+
this.store.set(key, entry);
|
|
23
|
+
return entry.value;
|
|
24
|
+
}
|
|
25
|
+
set(key, value) {
|
|
26
|
+
this.store.delete(key);
|
|
27
|
+
if (this.store.size >= this.maxEntries) {
|
|
28
|
+
const oldest = this.store.keys().next().value;
|
|
29
|
+
if (oldest !== void 0) {
|
|
30
|
+
this.store.delete(oldest);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
this.store.set(key, {
|
|
34
|
+
value,
|
|
35
|
+
expiresAt: Date.now() + this.ttlMs
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Cache lookup with singleflight dedupe of concurrent misses.
|
|
40
|
+
*
|
|
41
|
+
* Fast path: cache hit → return immediately (with LRU move-to-tail
|
|
42
|
+
* via `get()`).
|
|
43
|
+
*
|
|
44
|
+
* Slow path: cache miss →
|
|
45
|
+
* 1. If an in-flight Promise exists for this key, join it. This
|
|
46
|
+
* is the coalescing behaviour — N concurrent identical misses
|
|
47
|
+
* all await the same underlying storage call.
|
|
48
|
+
* 2. Otherwise, invoke `compute()`, register the Promise, and
|
|
49
|
+
* populate the cache with the result on resolve. The Promise
|
|
50
|
+
* is removed from the in-flight map in a `finally` so a
|
|
51
|
+
* rejection doesn't wedge future callers.
|
|
52
|
+
*
|
|
53
|
+
* Rejection semantics: if `compute()` throws, all joined waiters
|
|
54
|
+
* see the same rejection. Callers should handle it — the underlying
|
|
55
|
+
* `getPrioritisedAccessRule` catches its own storage errors and
|
|
56
|
+
* returns `[]` (fail-open), so in practice this never propagates.
|
|
57
|
+
*/
|
|
58
|
+
async getOrCompute(key, compute) {
|
|
59
|
+
const cached = this.get(key);
|
|
60
|
+
if (cached !== void 0) {
|
|
61
|
+
return cached;
|
|
62
|
+
}
|
|
63
|
+
const existing = this.inflight.get(key);
|
|
64
|
+
if (existing !== void 0) {
|
|
65
|
+
return existing;
|
|
66
|
+
}
|
|
67
|
+
const promise = (async () => {
|
|
68
|
+
const value = await compute();
|
|
69
|
+
this.set(key, value);
|
|
70
|
+
return value;
|
|
71
|
+
})();
|
|
72
|
+
this.inflight.set(key, promise);
|
|
73
|
+
try {
|
|
74
|
+
return await promise;
|
|
75
|
+
} finally {
|
|
76
|
+
if (this.inflight.get(key) === promise) {
|
|
77
|
+
this.inflight.delete(key);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// Test/ops hook — the running cache is not exposed on the wire, but
|
|
82
|
+
// admin tooling (e.g. a rule-mutation notifier) may need to flush
|
|
83
|
+
// after a bulk insert to bound the staleness window. Clears both
|
|
84
|
+
// the stored entries and any in-flight Promises so a rule mutation
|
|
85
|
+
// can't leave a stale computation in flight.
|
|
86
|
+
clear() {
|
|
87
|
+
this.store.clear();
|
|
88
|
+
this.inflight.clear();
|
|
89
|
+
}
|
|
90
|
+
size() {
|
|
91
|
+
return this.store.size;
|
|
92
|
+
}
|
|
93
|
+
// Test hook: number of in-flight computations. Not on the hot path.
|
|
94
|
+
inflightSize() {
|
|
95
|
+
return this.inflight.size;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const hardBlockCacheKey = (clientId, userScope, blockOnly) => {
|
|
99
|
+
const bo = blockOnly ? "1" : "0";
|
|
100
|
+
const parts = [
|
|
101
|
+
clientId ?? "",
|
|
102
|
+
userScope.numericIp === void 0 ? "" : userScope.numericIp.toString(),
|
|
103
|
+
userScope.numericIpMaskMin === void 0 ? "" : userScope.numericIpMaskMin.toString(),
|
|
104
|
+
userScope.numericIpMaskMax === void 0 ? "" : userScope.numericIpMaskMax.toString(),
|
|
105
|
+
userScope.userId ?? "",
|
|
106
|
+
userScope.ja4Hash ?? "",
|
|
107
|
+
userScope.headersHash ?? "",
|
|
108
|
+
userScope.userAgentHash ?? "",
|
|
109
|
+
userScope.headHash ?? "",
|
|
110
|
+
userScope.coords ?? "",
|
|
111
|
+
userScope.countryCode ?? "",
|
|
112
|
+
userScope.asn === void 0 ? "" : String(userScope.asn)
|
|
113
|
+
];
|
|
114
|
+
return `${bo}|${parts.join("|")}`;
|
|
115
|
+
};
|
|
116
|
+
exports.DEFAULT_VERDICT_CACHE_MAX_ENTRIES = DEFAULT_VERDICT_CACHE_MAX_ENTRIES;
|
|
117
|
+
exports.DEFAULT_VERDICT_CACHE_TTL_MS = DEFAULT_VERDICT_CACHE_TTL_MS;
|
|
118
|
+
exports.HardBlockVerdictCache = HardBlockVerdictCache;
|
|
119
|
+
exports.hardBlockCacheKey = hardBlockCacheKey;
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -63,6 +63,7 @@ exports.compareIPs = ipComparison.compareIPs;
|
|
|
63
63
|
exports.BlacklistRequestInspector = blacklistRequestInspector.BlacklistRequestInspector;
|
|
64
64
|
exports.getPrioritisedAccessRule = blacklistRequestInspector.getPrioritisedAccessRule;
|
|
65
65
|
exports.getRequestUserScope = blacklistRequestInspector.getRequestUserScope;
|
|
66
|
+
exports.getVerdictCache = blacklistRequestInspector.getVerdictCache;
|
|
66
67
|
exports.rankCandidateRules = blacklistRequestInspector.rankCandidateRules;
|
|
67
68
|
Object.defineProperty(exports, "FrictionlessReason", {
|
|
68
69
|
enumerable: true,
|
|
@@ -73,8 +73,8 @@ class FrictionlessManager extends captchaManager.CaptchaManager {
|
|
|
73
73
|
entropyCryptoFingerprint: params.entropyCryptoFingerprint,
|
|
74
74
|
entropyWallClockOffsetMs: params.entropyWallClockOffsetMs,
|
|
75
75
|
entropyMathRandomFirst: params.entropyMathRandomFirst,
|
|
76
|
-
|
|
77
|
-
|
|
76
|
+
tcpToChelloUs: params.tcpToChelloUs,
|
|
77
|
+
chelloToHandshakeUs: params.chelloToHandshakeUs
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
80
|
updateScore(score, scoreComponents) {
|
|
@@ -86,7 +86,7 @@ class FrictionlessManager extends captchaManager.CaptchaManager {
|
|
|
86
86
|
checkLangRules(acceptLanguage) {
|
|
87
87
|
return lang.checkLangRules(this.config, acceptLanguage);
|
|
88
88
|
}
|
|
89
|
-
async createSession(token, score, threshold, scoreComponents, ipAddress, captchaType, siteKey, solvedImagesCount, powDifficulty, userSitekeyIpHash, webView = false, iFrame = false, decryptedHeadHash = "", reason, blocked, deleted, ipInfo, headers, mode, simdReadings, entropyMathRandomFingerprint, entropyCryptoFingerprint, entropyWallClockOffsetMs, entropyMathRandomFirst, currentUrl,
|
|
89
|
+
async createSession(token, score, threshold, scoreComponents, ipAddress, captchaType, siteKey, solvedImagesCount, powDifficulty, userSitekeyIpHash, webView = false, iFrame = false, decryptedHeadHash = "", reason, blocked, deleted, ipInfo, headers, mode, simdReadings, entropyMathRandomFingerprint, entropyCryptoFingerprint, entropyWallClockOffsetMs, entropyMathRandomFirst, currentUrl, tcpToChelloUs, chelloToHandshakeUs) {
|
|
90
90
|
const sessionRecord = {
|
|
91
91
|
sessionId: `${getSessionIDPrefix(this.config.host)}-${uuid.v4()}`,
|
|
92
92
|
createdAt: /* @__PURE__ */ new Date(),
|
|
@@ -120,8 +120,8 @@ class FrictionlessManager extends captchaManager.CaptchaManager {
|
|
|
120
120
|
entropyCryptoFingerprint,
|
|
121
121
|
entropyWallClockOffsetMs,
|
|
122
122
|
entropyMathRandomFirst,
|
|
123
|
-
|
|
124
|
-
|
|
123
|
+
tcpToChelloUs,
|
|
124
|
+
chelloToHandshakeUs
|
|
125
125
|
};
|
|
126
126
|
await this.db.storeSessionRecord(sessionRecord);
|
|
127
127
|
if (this.writeQueue) {
|
|
@@ -203,8 +203,8 @@ class FrictionlessManager extends captchaManager.CaptchaManager {
|
|
|
203
203
|
effectiveParams.entropyWallClockOffsetMs,
|
|
204
204
|
effectiveParams.entropyMathRandomFirst,
|
|
205
205
|
effectiveParams.currentUrl,
|
|
206
|
-
effectiveParams.
|
|
207
|
-
effectiveParams.
|
|
206
|
+
effectiveParams.tcpToChelloUs,
|
|
207
|
+
effectiveParams.chelloToHandshakeUs
|
|
208
208
|
);
|
|
209
209
|
if (this.routingContext && this.usageCounters) {
|
|
210
210
|
this.usageCounters.incrManyAsync(
|
|
@@ -257,8 +257,8 @@ class FrictionlessManager extends captchaManager.CaptchaManager {
|
|
|
257
257
|
effectiveParams.entropyWallClockOffsetMs,
|
|
258
258
|
effectiveParams.entropyMathRandomFirst,
|
|
259
259
|
effectiveParams.currentUrl,
|
|
260
|
-
effectiveParams.
|
|
261
|
-
effectiveParams.
|
|
260
|
+
effectiveParams.tcpToChelloUs,
|
|
261
|
+
effectiveParams.chelloToHandshakeUs
|
|
262
262
|
);
|
|
263
263
|
}
|
|
264
264
|
scoreIncreaseAccessPolicy(accessPolicy, baseBotScore, botScore, scoreComponents) {
|
|
@@ -23,7 +23,7 @@ const isDatacenterAllowlisted = (ipInfo, allowlist) => {
|
|
|
23
23
|
);
|
|
24
24
|
return candidates.some((c) => normalisedAllowlist.includes(c));
|
|
25
25
|
};
|
|
26
|
-
const evaluateIpInfo = (ipInfo, trafficFilter,
|
|
26
|
+
const evaluateIpInfo = (ipInfo, trafficFilter, isDnsExtra = false) => {
|
|
27
27
|
if (!ipInfo || !ipInfo.isValid) {
|
|
28
28
|
return { isBlocked: false };
|
|
29
29
|
}
|
|
@@ -46,7 +46,8 @@ const evaluateIpInfo = (ipInfo, trafficFilter, options) => {
|
|
|
46
46
|
return { isBlocked: true, reason: types.ResultReason.ABUSER_BLOCKED };
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
|
-
|
|
49
|
+
const datacenterSuppressedByCategory = ipInfo.isVPN && !trafficFilter.blockVpn || ipInfo.isProxy && !trafficFilter.blockProxy || ipInfo.isTor && !trafficFilter.blockTor || ipInfo.isCrawler && !trafficFilter.blockCrawler;
|
|
50
|
+
if (trafficFilter.blockDatacenter && ipInfo.isDatacenter && ipInfo.providerType !== "isp" && !datacenterSuppressedByCategory && !isDatacenterAllowlisted(ipInfo, trafficFilter.datacenterNameAllowlist)) {
|
|
50
51
|
return { isBlocked: true, reason: types.ResultReason.DATACENTER_BLOCKED };
|
|
51
52
|
}
|
|
52
53
|
if (trafficFilter.blockMobile && ipInfo.isMobile) {
|
|
@@ -55,15 +56,13 @@ const evaluateIpInfo = (ipInfo, trafficFilter, options) => {
|
|
|
55
56
|
if (trafficFilter.blockSatellite && ipInfo.isSatellite) {
|
|
56
57
|
return { isBlocked: true, reason: types.ResultReason.SATELLITE_BLOCKED };
|
|
57
58
|
}
|
|
58
|
-
if (trafficFilter.blockCrawler && ipInfo.isCrawler) {
|
|
59
|
+
if (!isDnsExtra && trafficFilter.blockCrawler && ipInfo.isCrawler) {
|
|
59
60
|
return { isBlocked: true, reason: types.ResultReason.CRAWLER_BLOCKED };
|
|
60
61
|
}
|
|
61
62
|
return { isBlocked: false };
|
|
62
63
|
};
|
|
63
64
|
const checkTrafficFilter = (ipInfo, trafficFilter, extraIpInfos, dnsPathValid) => {
|
|
64
|
-
const primary = evaluateIpInfo(ipInfo, trafficFilter
|
|
65
|
-
suppressVpnDatacenterInteraction: true
|
|
66
|
-
});
|
|
65
|
+
const primary = evaluateIpInfo(ipInfo, trafficFilter);
|
|
67
66
|
if (primary.isBlocked) {
|
|
68
67
|
return primary;
|
|
69
68
|
}
|
|
@@ -71,9 +70,7 @@ const checkTrafficFilter = (ipInfo, trafficFilter, extraIpInfos, dnsPathValid) =
|
|
|
71
70
|
return { isBlocked: false };
|
|
72
71
|
}
|
|
73
72
|
for (const extra of extraIpInfos ?? []) {
|
|
74
|
-
const result = evaluateIpInfo(extra, trafficFilter,
|
|
75
|
-
suppressVpnDatacenterInteraction: false
|
|
76
|
-
});
|
|
73
|
+
const result = evaluateIpInfo(extra, trafficFilter, true);
|
|
77
74
|
if (result.isBlocked) {
|
|
78
75
|
return result;
|
|
79
76
|
}
|
package/dist/index.js
CHANGED
|
@@ -19,7 +19,7 @@ import { ignoreMiddleware } from "./api/ignoreMiddleware.js";
|
|
|
19
19
|
import { robotsMiddleware } from "./api/robotsMiddleware.js";
|
|
20
20
|
import { getCompositeIpAddress, getIpAddressFromComposite } from "./compositeIpAddress.js";
|
|
21
21
|
import { compareIPs } from "./services/ipComparison.js";
|
|
22
|
-
import { BlacklistRequestInspector, getPrioritisedAccessRule, getRequestUserScope, rankCandidateRules } from "./api/blacklistRequestInspector.js";
|
|
22
|
+
import { BlacklistRequestInspector, getPrioritisedAccessRule, getRequestUserScope, getVerdictCache, rankCandidateRules } from "./api/blacklistRequestInspector.js";
|
|
23
23
|
import "./tasks/frictionless/frictionlessTasks.js";
|
|
24
24
|
import { FrictionlessReason } from "@prosopo/types";
|
|
25
25
|
import { Tasks } from "./tasks/tasks.js";
|
|
@@ -48,6 +48,7 @@ export {
|
|
|
48
48
|
getPrioritisedAccessRule,
|
|
49
49
|
getRequestUserScope,
|
|
50
50
|
getUserFromJWT,
|
|
51
|
+
getVerdictCache,
|
|
51
52
|
handshakeTimingMiddleware,
|
|
52
53
|
headerCheckMiddleware,
|
|
53
54
|
ignoreMiddleware,
|
|
@@ -42,6 +42,7 @@ export declare class CaptchaManager {
|
|
|
42
42
|
};
|
|
43
43
|
getPrioritisedAccessPolicies(userAccessRulesStorage: AccessRulesStorage, clientId: string, userScope: UserScope | UserScopeRecord, options?: {
|
|
44
44
|
blockOnly?: boolean;
|
|
45
|
+
requestMemoHost?: object;
|
|
45
46
|
}): Promise<import("@prosopo/user-access-policy").AccessRule[]>;
|
|
46
47
|
getDetectorKeys(): Promise<string[]>;
|
|
47
48
|
decryptSimdReadings(encryptedData: string, decryptKeys: (string | undefined)[]): Promise<SimdReadingsResult | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"captchaManager.d.ts","sourceRoot":"","sources":["../../src/tasks/captchaManager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"captchaManager.d.ts","sourceRoot":"","sources":["../../src/tasks/captchaManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"captchaManager.js","sourceRoot":"","sources":["../../src/tasks/captchaManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"captchaManager.js","sourceRoot":"","sources":["../../src/tasks/captchaManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@ export declare class FrictionlessManager extends CaptchaManager {
|
|
|
24
24
|
setSessionParams(params: Omit<Session, "sessionId" | "createdAt" | "captchaType">): void;
|
|
25
25
|
updateScore(score: number, scoreComponents: ScoreComponents): void;
|
|
26
26
|
checkLangRules(acceptLanguage: string): number;
|
|
27
|
-
createSession(token: string, score: number, threshold: number, scoreComponents: ScoreComponents, ipAddress: CompositeIpAddress, captchaType: CaptchaType, siteKey: string, solvedImagesCount?: number, powDifficulty?: number, userSitekeyIpHash?: string, webView?: boolean, iFrame?: boolean, decryptedHeadHash?: string, reason?: FrictionlessReason, blocked?: boolean, deleted?: boolean, ipInfo?: IPInfoResponse, headers?: RequestHeaders, mode?: ModeEnum, simdReadings?: Session["simdReadings"], entropyMathRandomFingerprint?: Session["entropyMathRandomFingerprint"], entropyCryptoFingerprint?: Session["entropyCryptoFingerprint"], entropyWallClockOffsetMs?: Session["entropyWallClockOffsetMs"], entropyMathRandomFirst?: Session["entropyMathRandomFirst"], currentUrl?: Session["currentUrl"],
|
|
27
|
+
createSession(token: string, score: number, threshold: number, scoreComponents: ScoreComponents, ipAddress: CompositeIpAddress, captchaType: CaptchaType, siteKey: string, solvedImagesCount?: number, powDifficulty?: number, userSitekeyIpHash?: string, webView?: boolean, iFrame?: boolean, decryptedHeadHash?: string, reason?: FrictionlessReason, blocked?: boolean, deleted?: boolean, ipInfo?: IPInfoResponse, headers?: RequestHeaders, mode?: ModeEnum, simdReadings?: Session["simdReadings"], entropyMathRandomFingerprint?: Session["entropyMathRandomFingerprint"], entropyCryptoFingerprint?: Session["entropyCryptoFingerprint"], entropyWallClockOffsetMs?: Session["entropyWallClockOffsetMs"], entropyMathRandomFirst?: Session["entropyMathRandomFirst"], currentUrl?: Session["currentUrl"], tcpToChelloUs?: Session["tcpToChelloUs"], chelloToHandshakeUs?: Session["chelloToHandshakeUs"]): Promise<Session>;
|
|
28
28
|
sendImageCaptcha(params?: Partial<ImageCaptchaSessionParams>): Promise<GetFrictionlessCaptchaResponse>;
|
|
29
29
|
sendPowCaptcha(params?: Partial<PowCaptchaSessionParams>): Promise<GetFrictionlessCaptchaResponse>;
|
|
30
30
|
sendPuzzleCaptcha(params?: Partial<PuzzleCaptchaSessionParams>): Promise<GetFrictionlessCaptchaResponse>;
|
|
@@ -72,8 +72,8 @@ class FrictionlessManager extends CaptchaManager {
|
|
|
72
72
|
entropyCryptoFingerprint: params.entropyCryptoFingerprint,
|
|
73
73
|
entropyWallClockOffsetMs: params.entropyWallClockOffsetMs,
|
|
74
74
|
entropyMathRandomFirst: params.entropyMathRandomFirst,
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
tcpToChelloUs: params.tcpToChelloUs,
|
|
76
|
+
chelloToHandshakeUs: params.chelloToHandshakeUs
|
|
77
77
|
};
|
|
78
78
|
}
|
|
79
79
|
updateScore(score, scoreComponents) {
|
|
@@ -85,7 +85,7 @@ class FrictionlessManager extends CaptchaManager {
|
|
|
85
85
|
checkLangRules(acceptLanguage) {
|
|
86
86
|
return checkLangRules(this.config, acceptLanguage);
|
|
87
87
|
}
|
|
88
|
-
async createSession(token, score, threshold, scoreComponents, ipAddress, captchaType, siteKey, solvedImagesCount, powDifficulty, userSitekeyIpHash, webView = false, iFrame = false, decryptedHeadHash = "", reason, blocked, deleted, ipInfo, headers, mode, simdReadings, entropyMathRandomFingerprint, entropyCryptoFingerprint, entropyWallClockOffsetMs, entropyMathRandomFirst, currentUrl,
|
|
88
|
+
async createSession(token, score, threshold, scoreComponents, ipAddress, captchaType, siteKey, solvedImagesCount, powDifficulty, userSitekeyIpHash, webView = false, iFrame = false, decryptedHeadHash = "", reason, blocked, deleted, ipInfo, headers, mode, simdReadings, entropyMathRandomFingerprint, entropyCryptoFingerprint, entropyWallClockOffsetMs, entropyMathRandomFirst, currentUrl, tcpToChelloUs, chelloToHandshakeUs) {
|
|
89
89
|
const sessionRecord = {
|
|
90
90
|
sessionId: `${getSessionIDPrefix(this.config.host)}-${v4()}`,
|
|
91
91
|
createdAt: /* @__PURE__ */ new Date(),
|
|
@@ -119,8 +119,8 @@ class FrictionlessManager extends CaptchaManager {
|
|
|
119
119
|
entropyCryptoFingerprint,
|
|
120
120
|
entropyWallClockOffsetMs,
|
|
121
121
|
entropyMathRandomFirst,
|
|
122
|
-
|
|
123
|
-
|
|
122
|
+
tcpToChelloUs,
|
|
123
|
+
chelloToHandshakeUs
|
|
124
124
|
};
|
|
125
125
|
await this.db.storeSessionRecord(sessionRecord);
|
|
126
126
|
if (this.writeQueue) {
|
|
@@ -202,8 +202,8 @@ class FrictionlessManager extends CaptchaManager {
|
|
|
202
202
|
effectiveParams.entropyWallClockOffsetMs,
|
|
203
203
|
effectiveParams.entropyMathRandomFirst,
|
|
204
204
|
effectiveParams.currentUrl,
|
|
205
|
-
effectiveParams.
|
|
206
|
-
effectiveParams.
|
|
205
|
+
effectiveParams.tcpToChelloUs,
|
|
206
|
+
effectiveParams.chelloToHandshakeUs
|
|
207
207
|
);
|
|
208
208
|
if (this.routingContext && this.usageCounters) {
|
|
209
209
|
this.usageCounters.incrManyAsync(
|
|
@@ -256,8 +256,8 @@ class FrictionlessManager extends CaptchaManager {
|
|
|
256
256
|
effectiveParams.entropyWallClockOffsetMs,
|
|
257
257
|
effectiveParams.entropyMathRandomFirst,
|
|
258
258
|
effectiveParams.currentUrl,
|
|
259
|
-
effectiveParams.
|
|
260
|
-
effectiveParams.
|
|
259
|
+
effectiveParams.tcpToChelloUs,
|
|
260
|
+
effectiveParams.chelloToHandshakeUs
|
|
261
261
|
);
|
|
262
262
|
}
|
|
263
263
|
scoreIncreaseAccessPolicy(accessPolicy, baseBotScore, botScore, scoreComponents) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkTrafficFilter.d.ts","sourceRoot":"","sources":["../../../src/tasks/spam/checkTrafficFilter.ts"],"names":[],"mappings":"AAcA,OAAO,EACN,KAAK,cAAc,EAEnB,KAAK,cAAc,EACnB,YAAY,EAEZ,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,kBAAkB,GAC3B,YAAY,CAAC,WAAW,GACxB,YAAY,CAAC,aAAa,GAC1B,YAAY,CAAC,WAAW,GACxB,YAAY,CAAC,cAAc,GAC3B,YAAY,CAAC,kBAAkB,GAC/B,YAAY,CAAC,cAAc,GAC3B,YAAY,CAAC,iBAAiB,GAC9B,YAAY,CAAC,eAAe,CAAC;AAEhC,MAAM,MAAM,kBAAkB,GAC3B;IAAE,SAAS,EAAE,KAAK,CAAA;CAAE,GACpB;IAAE,SAAS,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"checkTrafficFilter.d.ts","sourceRoot":"","sources":["../../../src/tasks/spam/checkTrafficFilter.ts"],"names":[],"mappings":"AAcA,OAAO,EACN,KAAK,cAAc,EAEnB,KAAK,cAAc,EACnB,YAAY,EAEZ,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,kBAAkB,GAC3B,YAAY,CAAC,WAAW,GACxB,YAAY,CAAC,aAAa,GAC1B,YAAY,CAAC,WAAW,GACxB,YAAY,CAAC,cAAc,GAC3B,YAAY,CAAC,kBAAkB,GAC/B,YAAY,CAAC,cAAc,GAC3B,YAAY,CAAC,iBAAiB,GAC9B,YAAY,CAAC,eAAe,CAAC;AAEhC,MAAM,MAAM,kBAAkB,GAC3B;IAAE,SAAS,EAAE,KAAK,CAAA;CAAE,GACpB;IAAE,SAAS,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,CAAC;AAwInD,eAAO,MAAM,kBAAkB,WACtB,cAAc,GAAG,SAAS,iBACnB,OAAO,CAAC,cAAc,CAAC,iBACvB,aAAa,CAAC,cAAc,GAAG,SAAS,CAAC,iBACzC,OAAO,KACpB,kBAkBF,CAAC"}
|
|
@@ -21,7 +21,7 @@ const isDatacenterAllowlisted = (ipInfo, allowlist) => {
|
|
|
21
21
|
);
|
|
22
22
|
return candidates.some((c) => normalisedAllowlist.includes(c));
|
|
23
23
|
};
|
|
24
|
-
const evaluateIpInfo = (ipInfo, trafficFilter,
|
|
24
|
+
const evaluateIpInfo = (ipInfo, trafficFilter, isDnsExtra = false) => {
|
|
25
25
|
if (!ipInfo || !ipInfo.isValid) {
|
|
26
26
|
return { isBlocked: false };
|
|
27
27
|
}
|
|
@@ -44,7 +44,8 @@ const evaluateIpInfo = (ipInfo, trafficFilter, options) => {
|
|
|
44
44
|
return { isBlocked: true, reason: ResultReason.ABUSER_BLOCKED };
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
|
-
|
|
47
|
+
const datacenterSuppressedByCategory = ipInfo.isVPN && !trafficFilter.blockVpn || ipInfo.isProxy && !trafficFilter.blockProxy || ipInfo.isTor && !trafficFilter.blockTor || ipInfo.isCrawler && !trafficFilter.blockCrawler;
|
|
48
|
+
if (trafficFilter.blockDatacenter && ipInfo.isDatacenter && ipInfo.providerType !== "isp" && !datacenterSuppressedByCategory && !isDatacenterAllowlisted(ipInfo, trafficFilter.datacenterNameAllowlist)) {
|
|
48
49
|
return { isBlocked: true, reason: ResultReason.DATACENTER_BLOCKED };
|
|
49
50
|
}
|
|
50
51
|
if (trafficFilter.blockMobile && ipInfo.isMobile) {
|
|
@@ -53,15 +54,13 @@ const evaluateIpInfo = (ipInfo, trafficFilter, options) => {
|
|
|
53
54
|
if (trafficFilter.blockSatellite && ipInfo.isSatellite) {
|
|
54
55
|
return { isBlocked: true, reason: ResultReason.SATELLITE_BLOCKED };
|
|
55
56
|
}
|
|
56
|
-
if (trafficFilter.blockCrawler && ipInfo.isCrawler) {
|
|
57
|
+
if (!isDnsExtra && trafficFilter.blockCrawler && ipInfo.isCrawler) {
|
|
57
58
|
return { isBlocked: true, reason: ResultReason.CRAWLER_BLOCKED };
|
|
58
59
|
}
|
|
59
60
|
return { isBlocked: false };
|
|
60
61
|
};
|
|
61
62
|
const checkTrafficFilter = (ipInfo, trafficFilter, extraIpInfos, dnsPathValid) => {
|
|
62
|
-
const primary = evaluateIpInfo(ipInfo, trafficFilter
|
|
63
|
-
suppressVpnDatacenterInteraction: true
|
|
64
|
-
});
|
|
63
|
+
const primary = evaluateIpInfo(ipInfo, trafficFilter);
|
|
65
64
|
if (primary.isBlocked) {
|
|
66
65
|
return primary;
|
|
67
66
|
}
|
|
@@ -69,9 +68,7 @@ const checkTrafficFilter = (ipInfo, trafficFilter, extraIpInfos, dnsPathValid) =
|
|
|
69
68
|
return { isBlocked: false };
|
|
70
69
|
}
|
|
71
70
|
for (const extra of extraIpInfos ?? []) {
|
|
72
|
-
const result = evaluateIpInfo(extra, trafficFilter,
|
|
73
|
-
suppressVpnDatacenterInteraction: false
|
|
74
|
-
});
|
|
71
|
+
const result = evaluateIpInfo(extra, trafficFilter, true);
|
|
75
72
|
if (result.isBlocked) {
|
|
76
73
|
return result;
|
|
77
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkTrafficFilter.js","sourceRoot":"","sources":["../../../src/tasks/spam/checkTrafficFilter.ts"],"names":[],"mappings":"AAcA,OAAO,EAIN,YAAY,EACZ,wCAAwC,GACxC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"checkTrafficFilter.js","sourceRoot":"","sources":["../../../src/tasks/spam/checkTrafficFilter.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import { getIPAddressFromBigInt } from "@prosopo/util";
|
|
|
6
6
|
import { randomAsHex } from "@prosopo/util-crypto";
|
|
7
7
|
import { GenericContainer } from "testcontainers";
|
|
8
8
|
import { afterAll, beforeAll, beforeEach, describe, expect, it, vi, } from "vitest";
|
|
9
|
-
import { getPrioritisedAccessRule } from "../../../api/blacklistRequestInspector.js";
|
|
9
|
+
import { getPrioritisedAccessRule, getVerdictCache, } from "../../../api/blacklistRequestInspector.js";
|
|
10
10
|
describe("blacklistRequestInspector Integration Tests", () => {
|
|
11
11
|
describe("getPrioritisedAccessRule", () => {
|
|
12
12
|
let env;
|
|
@@ -80,6 +80,7 @@ describe("blacklistRequestInspector Integration Tests", () => {
|
|
|
80
80
|
beforeEach(async () => {
|
|
81
81
|
[siteKeyMnemonic, siteKey] = await generateMnemonic();
|
|
82
82
|
await accessRulesStorage.deleteAllRules();
|
|
83
|
+
getVerdictCache().clear();
|
|
83
84
|
});
|
|
84
85
|
it("should return a rule when a JA4-UserAgent rule exists and the user matches the User Agent and the JA4", async () => {
|
|
85
86
|
const accessRule = accessRuleInput.parse({
|