@prosopo/provider 5.2.0 → 5.3.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 +17 -13
- package/.turbo/turbo-build$colon$tsc.log +27 -24
- package/.turbo/turbo-build.log +18 -14
- package/CHANGELOG.md +57 -0
- package/dist/api/captcha/getPuzzleCaptchaChallenge.d.ts.map +1 -1
- package/dist/api/captcha/getPuzzleCaptchaChallenge.js +11 -4
- package/dist/api/captcha/getPuzzleCaptchaChallenge.js.map +1 -1
- package/dist/api/captcha/maintenanceModeResponses.d.ts +1 -1
- package/dist/api/captcha/maintenanceModeResponses.d.ts.map +1 -1
- package/dist/api/captcha/maintenanceModeResponses.js +11 -6
- package/dist/api/captcha/maintenanceModeResponses.js.map +1 -1
- package/dist/api/captcha/submitPoWCaptchaSolution.d.ts.map +1 -1
- package/dist/api/captcha/submitPoWCaptchaSolution.js +4 -2
- package/dist/api/captcha/submitPoWCaptchaSolution.js.map +1 -1
- package/dist/api/captcha/trafficFilterRequestTime.d.ts +2 -1
- package/dist/api/captcha/trafficFilterRequestTime.d.ts.map +1 -1
- package/dist/api/captcha/trafficFilterRequestTime.js +1 -0
- package/dist/api/captcha/trafficFilterRequestTime.js.map +1 -1
- package/dist/cjs/api/captcha/getPuzzleCaptchaChallenge.cjs +11 -4
- package/dist/cjs/api/captcha/maintenanceModeResponses.cjs +11 -6
- package/dist/cjs/api/captcha/submitPoWCaptchaSolution.cjs +4 -2
- package/dist/cjs/api/captcha/trafficFilterRequestTime.cjs +1 -0
- package/dist/cjs/tasks/detection/decodePayload.cjs +1189 -1265
- package/dist/cjs/tasks/detection/decodePayload.js +2 -1
- package/dist/cjs/tasks/dnsEvent/enrichDnsEvent.cjs +17 -11
- package/dist/cjs/tasks/frictionless/frictionlessTasks.cjs +2 -1
- package/dist/cjs/tasks/puzzle/backgroundBuffer.cjs +39 -0
- package/dist/cjs/tasks/puzzle/puzzleRenderer.cjs +78 -0
- package/dist/cjs/tasks/spam/checkTrafficFilter.cjs +62 -31
- package/dist/tasks/detection/decodePayload.d.ts +2 -2
- package/dist/tasks/detection/decodePayload.d.ts.map +1 -1
- package/dist/tasks/detection/decodePayload.js +2 -1
- package/dist/tasks/detection/decodePayload.js.map +1 -1
- package/dist/tasks/detection/getBotScore.js +2 -2
- package/dist/tasks/dnsEvent/enrichDnsEvent.d.ts.map +1 -1
- package/dist/tasks/dnsEvent/enrichDnsEvent.js +17 -11
- package/dist/tasks/dnsEvent/enrichDnsEvent.js.map +1 -1
- package/dist/tasks/frictionless/frictionlessTasks.d.ts.map +1 -1
- package/dist/tasks/frictionless/frictionlessTasks.js +2 -1
- package/dist/tasks/frictionless/frictionlessTasks.js.map +1 -1
- package/dist/tasks/puzzle/backgroundBuffer.d.ts +21 -0
- package/dist/tasks/puzzle/backgroundBuffer.d.ts.map +1 -0
- package/dist/tasks/puzzle/backgroundBuffer.js +37 -0
- package/dist/tasks/puzzle/backgroundBuffer.js.map +1 -0
- package/dist/tasks/puzzle/puzzleRenderer.d.ts +13 -0
- package/dist/tasks/puzzle/puzzleRenderer.d.ts.map +1 -0
- package/dist/tasks/puzzle/puzzleRenderer.js +75 -0
- package/dist/tasks/puzzle/puzzleRenderer.js.map +1 -0
- package/dist/tasks/spam/checkTrafficFilter.d.ts +3 -1
- package/dist/tasks/spam/checkTrafficFilter.d.ts.map +1 -1
- package/dist/tasks/spam/checkTrafficFilter.js +62 -32
- package/dist/tasks/spam/checkTrafficFilter.js.map +1 -1
- package/dist/tests/unit/api/captcha/maintenanceModeResponses.unit.test.js +8 -7
- package/dist/tests/unit/api/captcha/maintenanceModeResponses.unit.test.js.map +1 -1
- package/dist/tests/unit/api/captcha/maintenanceModeShortCircuit.unit.test.js +1 -1
- package/dist/tests/unit/api/captcha/maintenanceModeShortCircuit.unit.test.js.map +1 -1
- package/dist/tests/unit/api/captcha/trafficFilterRequestTime.unit.test.js +2 -1
- package/dist/tests/unit/api/captcha/trafficFilterRequestTime.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/dnsEvent/enrichDnsEvent.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/puzzle/backgroundBuffer.unit.test.d.ts +2 -0
- package/dist/tests/unit/tasks/puzzle/backgroundBuffer.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/tasks/puzzle/backgroundBuffer.unit.test.js +84 -0
- package/dist/tests/unit/tasks/puzzle/backgroundBuffer.unit.test.js.map +1 -0
- package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.js +66 -4
- package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.js.map +1 -1
- package/package.json +14 -13
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Logger } from "@prosopo/logger";
|
|
2
|
-
import { CaptchaType, type IPInfoResponse, type ITrafficFilter } from "@prosopo/types";
|
|
2
|
+
import { CaptchaType, type IPInfoResponse, type IPuzzleSettings, type ITrafficFilter } from "@prosopo/types";
|
|
3
3
|
import type { ClientRecord } from "@prosopo/types-database";
|
|
4
4
|
import type { Response } from "express";
|
|
5
5
|
import type { FrictionlessManager } from "../../tasks/frictionless/frictionlessTasks.js";
|
|
@@ -12,6 +12,7 @@ export type RequestTimeTrafficVerdict = {
|
|
|
12
12
|
powDifficulty?: number;
|
|
13
13
|
solvedImagesCount?: number;
|
|
14
14
|
puzzleTolerance?: number;
|
|
15
|
+
puzzleSettings?: IPuzzleSettings;
|
|
15
16
|
sourceCategories: ResolvedChallengePolicy["sourceCategories"];
|
|
16
17
|
};
|
|
17
18
|
export declare const applyTrafficFilterAtRequestTime: (ipInfo: IPInfoResponse | undefined, trafficFilter: Partial<ITrafficFilter> | undefined, logger?: Logger) => RequestTimeTrafficVerdict;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trafficFilterRequestTime.d.ts","sourceRoot":"","sources":["../../../src/api/captcha/trafficFilterRequestTime.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACN,WAAW,EAEX,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACzF,OAAO,EACN,KAAK,uBAAuB,EAG5B,MAAM,wCAAwC,CAAC;AAEhD,MAAM,MAAM,yBAAyB,GAClC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IACA,IAAI,EAAE,WAAW,CAAC;IAGlB,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"trafficFilterRequestTime.d.ts","sourceRoot":"","sources":["../../../src/api/captcha/trafficFilterRequestTime.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACN,WAAW,EAEX,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACzF,OAAO,EACN,KAAK,uBAAuB,EAG5B,MAAM,wCAAwC,CAAC;AAEhD,MAAM,MAAM,yBAAyB,GAClC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IACA,IAAI,EAAE,WAAW,CAAC;IAGlB,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IAKzB,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,gBAAgB,EAAE,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;CAC7D,CAAC;AAeL,eAAO,MAAM,+BAA+B,WACnC,cAAc,GAAG,SAAS,iBACnB,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,WACzC,MAAM,KACb,yBAiCF,CAAC;AAEF,MAAM,MAAM,gCAAgC,GACzC;IAAE,OAAO,EAAE,KAAK,CAAA;CAAE,GAClB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEzC,MAAM,MAAM,8BAA8B,GAAG;IAC5C,OAAO,EAAE,yBAAyB,CAAC;IACnC,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,YAAY,EAAE,YAAY,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,GAAG,SAAS,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;CACf,CAAC;AAWF,eAAO,MAAM,+BAA+B,UACpC,8BAA8B,OAChC,QAAQ,KACX,OAAO,CAAC,gCAAgC,CAyD1C,CAAC"}
|
|
@@ -34,6 +34,7 @@ var applyTrafficFilterAtRequestTime = (ipInfo, trafficFilter, logger) => {
|
|
|
34
34
|
powDifficulty: resolved.powDifficulty,
|
|
35
35
|
solvedImagesCount: resolved.solvedImagesCount,
|
|
36
36
|
puzzleTolerance: resolved.puzzleTolerance,
|
|
37
|
+
puzzleSettings: resolved.puzzleSettings,
|
|
37
38
|
sourceCategories: resolved.sourceCategories
|
|
38
39
|
};
|
|
39
40
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trafficFilterRequestTime.js","sourceRoot":"","sources":["../../../src/api/captcha/trafficFilterRequestTime.ts"],"names":[],"mappings":"AAeA,OAAO,EACN,WAAW,
|
|
1
|
+
{"version":3,"file":"trafficFilterRequestTime.js","sourceRoot":"","sources":["../../../src/api/captcha/trafficFilterRequestTime.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ const require_validateAddress = require("../validateAddress.cjs");
|
|
|
2
2
|
const require_compositeIpAddress = require("../../compositeIpAddress.cjs");
|
|
3
3
|
const require_metrics = require("../metrics.cjs");
|
|
4
4
|
const require_blacklistRequestInspector = require("../blacklistRequestInspector.cjs");
|
|
5
|
+
const require_puzzleRenderer = require("../../tasks/puzzle/puzzleRenderer.cjs");
|
|
5
6
|
const require_tasks = require("../../tasks/tasks.cjs");
|
|
6
7
|
const require_apiToggleMaintenanceModeEndpoint = require("../admin/apiToggleMaintenanceModeEndpoint.cjs");
|
|
7
8
|
const require_normalizeRequestIp = require("../../utils/normalizeRequestIp.cjs");
|
|
@@ -37,7 +38,7 @@ var getPuzzleCaptchaChallenge_default = (env, userAccessRulesStorage) => async (
|
|
|
37
38
|
sessionId
|
|
38
39
|
}
|
|
39
40
|
}));
|
|
40
|
-
return res.json(require_maintenanceModeResponses.buildPuzzleMaintenanceResponse(user, dapp));
|
|
41
|
+
return res.json(await require_maintenanceModeResponses.buildPuzzleMaintenanceResponse(user, dapp));
|
|
41
42
|
}
|
|
42
43
|
const tasks = new require_tasks.Tasks(env, req.logger);
|
|
43
44
|
try {
|
|
@@ -80,6 +81,8 @@ var getPuzzleCaptchaChallenge_default = (env, userAccessRulesStorage) => async (
|
|
|
80
81
|
}));
|
|
81
82
|
const trafficVerdict = require_trafficFilterRequestTime.applyTrafficFilterAtRequestTime(req.ipInfo, clientSettings.settings?.trafficFilter, req.logger);
|
|
82
83
|
const tolerance = (trafficVerdict.kind === "challenge" ? trafficVerdict.puzzleTolerance : void 0) ?? clientSettings?.settings?.puzzleTolerance;
|
|
84
|
+
const trafficPuzzleSettings = trafficVerdict.kind === "challenge" ? trafficVerdict.puzzleSettings : void 0;
|
|
85
|
+
const effectivePuzzleSettings = require_puzzleRenderer.resolvePuzzleRenderSettings(clientSettings?.settings?.puzzle, trafficPuzzleSettings);
|
|
83
86
|
const challenge = await tasks.puzzleCaptchaManager.getPuzzleCaptchaChallenge(user, dapp, origin, tolerance);
|
|
84
87
|
if (validSessionId && simdReadings) await tasks.frictionlessManager.decryptAndAttachSimdReadingsIfAbsent(validSessionId, simdReadings, _prosopo_types.SimdReadingsStage.challenge).catch((updateErr) => {
|
|
85
88
|
req.logger.warn(() => ({
|
|
@@ -92,14 +95,18 @@ var getPuzzleCaptchaChallenge_default = (env, userAccessRulesStorage) => async (
|
|
|
92
95
|
userAccount: user,
|
|
93
96
|
dappAccount: dapp
|
|
94
97
|
}, challenge.targetX, challenge.targetY, challenge.originX, challenge.originY, challenge.tolerance, challenge.providerSignature, require_compositeIpAddress.getCompositeIpAddress(normalizedIp), (0, _prosopo_util.flatten)(req.headers), req.ja4, validSessionId, req.ipInfo);
|
|
98
|
+
const images = await require_puzzleRenderer.renderPuzzleImages({
|
|
99
|
+
targetX: challenge.targetX,
|
|
100
|
+
targetY: challenge.targetY
|
|
101
|
+
}, effectivePuzzleSettings);
|
|
95
102
|
const getPuzzleCaptchaResponse = {
|
|
96
103
|
[_prosopo_types.ApiParams.status]: "ok",
|
|
97
104
|
[_prosopo_types.ApiParams.challenge]: challenge.challenge,
|
|
98
|
-
[_prosopo_types.ApiParams.
|
|
99
|
-
[_prosopo_types.ApiParams.
|
|
105
|
+
[_prosopo_types.ApiParams.background]: images.background,
|
|
106
|
+
[_prosopo_types.ApiParams.piece]: images.piece,
|
|
107
|
+
[_prosopo_types.ApiParams.pieceSize]: images.pieceSize,
|
|
100
108
|
[_prosopo_types.ApiParams.originX]: challenge.originX,
|
|
101
109
|
[_prosopo_types.ApiParams.originY]: challenge.originY,
|
|
102
|
-
[_prosopo_types.ApiParams.tolerance]: challenge.tolerance,
|
|
103
110
|
[_prosopo_types.ApiParams.timestamp]: challenge.requestedAtTimestamp.toString(),
|
|
104
111
|
[_prosopo_types.ApiParams.signature]: { [_prosopo_types.ApiParams.provider]: { [_prosopo_types.ApiParams.challenge]: challenge.providerSignature } }
|
|
105
112
|
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
const require_puzzleRenderer = require("../../tasks/puzzle/puzzleRenderer.cjs");
|
|
1
2
|
let _prosopo_types = require("@prosopo/types");
|
|
2
3
|
let node_crypto = require("node:crypto");
|
|
3
4
|
//#region src/api/captcha/maintenanceModeResponses.ts
|
|
@@ -30,16 +31,20 @@ var buildImageMaintenanceResponse = () => ({
|
|
|
30
31
|
[_prosopo_types.ApiParams.timestamp]: Date.now().toString(),
|
|
31
32
|
[_prosopo_types.ApiParams.signature]: { [_prosopo_types.ApiParams.provider]: { [_prosopo_types.ApiParams.requestHash]: "" } }
|
|
32
33
|
});
|
|
33
|
-
var buildPuzzleMaintenanceResponse = (user, dapp) => {
|
|
34
|
+
var buildPuzzleMaintenanceResponse = async (user, dapp) => {
|
|
34
35
|
const timestamp = Date.now();
|
|
36
|
+
const images = await require_puzzleRenderer.renderPuzzleImages({
|
|
37
|
+
targetX: 200,
|
|
38
|
+
targetY: 100
|
|
39
|
+
});
|
|
35
40
|
return {
|
|
36
41
|
[_prosopo_types.ApiParams.status]: "ok",
|
|
37
42
|
[_prosopo_types.ApiParams.challenge]: buildChallenge(user, dapp),
|
|
38
|
-
[_prosopo_types.ApiParams.
|
|
39
|
-
[_prosopo_types.ApiParams.
|
|
40
|
-
[_prosopo_types.ApiParams.
|
|
41
|
-
[_prosopo_types.ApiParams.
|
|
42
|
-
[_prosopo_types.ApiParams.
|
|
43
|
+
[_prosopo_types.ApiParams.background]: images.background,
|
|
44
|
+
[_prosopo_types.ApiParams.piece]: images.piece,
|
|
45
|
+
[_prosopo_types.ApiParams.pieceSize]: images.pieceSize,
|
|
46
|
+
[_prosopo_types.ApiParams.originX]: 60,
|
|
47
|
+
[_prosopo_types.ApiParams.originY]: 100,
|
|
43
48
|
[_prosopo_types.ApiParams.timestamp]: timestamp.toString(),
|
|
44
49
|
[_prosopo_types.ApiParams.signature]: { [_prosopo_types.ApiParams.provider]: { [_prosopo_types.ApiParams.challenge]: "" } }
|
|
45
50
|
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const require_validateAddress = require("../validateAddress.cjs");
|
|
2
|
+
const require_puzzleRenderer = require("../../tasks/puzzle/puzzleRenderer.cjs");
|
|
2
3
|
const require_tasks = require("../../tasks/tasks.cjs");
|
|
3
4
|
const require_apiToggleMaintenanceModeEndpoint = require("../admin/apiToggleMaintenanceModeEndpoint.cjs");
|
|
4
5
|
const require_devicePlatform = require("../../utils/devicePlatform.cjs");
|
|
@@ -130,11 +131,12 @@ var buildEscalation = async (tasks, result, challenge, handshakeTiming) => {
|
|
|
130
131
|
const originSession = await tasks.db.getSessionRecordBySessionId(powRecord.sessionId);
|
|
131
132
|
if (!originSession) return void 0;
|
|
132
133
|
const routed = result.routingOutput;
|
|
134
|
+
const escalatedType = require_puzzleRenderer.downgradePuzzleIfUnavailable(routed.captchaType);
|
|
133
135
|
const selectionReason = routed.reason ?? originSession.reason;
|
|
134
|
-
const newSession = await tasks.frictionlessManager.createSession(originSession.token, originSession.score, originSession.threshold, originSession.scoreComponents, originSession.ipAddress,
|
|
136
|
+
const newSession = await tasks.frictionlessManager.createSession(originSession.token, originSession.score, originSession.threshold, originSession.scoreComponents, originSession.ipAddress, escalatedType, originSession.siteKey ?? powRecord.dappAccount, escalatedType === _prosopo_types.CaptchaType.image ? routed.solvedImagesCount ?? originSession.solvedImagesCount : void 0, void 0, originSession.userSitekeyIpHash, originSession.webView, originSession.iFrame, originSession.decryptedHeadHash, selectionReason, void 0, void 0, originSession.ipInfo, originSession.headers, originSession.mode, originSession.simdReadings, originSession.entropyMathRandomFingerprint, originSession.entropyCryptoFingerprint, originSession.entropyWallClockOffsetMs, originSession.entropyMathRandomFirst, originSession.bundleId, originSession.currentUrl, handshakeTiming?.tcpToChelloUs, handshakeTiming?.chelloToHandshakeUs, true, originSession.iframeUrl, originSession.isProtect, originSession.sessionId, originSession.g, void 0, originSession.i, originSession.sw, originSession.md, originSession.bn, originSession.fs);
|
|
135
137
|
if (tasks.writeQueue) await tasks.writeQueue.cacheSessionEscalation(powRecord.sessionId, newSession.sessionId);
|
|
136
138
|
return {
|
|
137
|
-
captchaType:
|
|
139
|
+
captchaType: escalatedType,
|
|
138
140
|
sessionId: newSession.sessionId
|
|
139
141
|
};
|
|
140
142
|
};
|
|
@@ -35,6 +35,7 @@ var applyTrafficFilterAtRequestTime = (ipInfo, trafficFilter, logger) => {
|
|
|
35
35
|
powDifficulty: resolved.powDifficulty,
|
|
36
36
|
solvedImagesCount: resolved.solvedImagesCount,
|
|
37
37
|
puzzleTolerance: resolved.puzzleTolerance,
|
|
38
|
+
puzzleSettings: resolved.puzzleSettings,
|
|
38
39
|
sourceCategories: resolved.sourceCategories
|
|
39
40
|
};
|
|
40
41
|
};
|