@prosopo/provider 4.15.13 → 4.15.15
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 +106 -106
- package/.turbo/turbo-build$colon$tsc.log +24 -24
- package/.turbo/turbo-build.log +107 -104
- package/CHANGELOG.md +78 -0
- package/dist/_virtual/_rolldown/runtime.js +3 -0
- package/dist/api/admin/apiAdminRoutesProvider.js +27 -46
- package/dist/api/admin/apiClearAllCountersEndpoint.js +62 -57
- package/dist/api/admin/apiDnsEventEndpoint.js +79 -92
- package/dist/api/admin/apiGetAllDecisionMachinesEndpoint.js +43 -45
- package/dist/api/admin/apiGetDecisionMachineEndpoint.js +40 -40
- package/dist/api/admin/apiRegisterSiteKeyEndpoint.js +23 -22
- package/dist/api/admin/apiRegisterSiteKeysEndpoint.js +26 -30
- package/dist/api/admin/apiRemoveAllDecisionMachinesEndpoint.js +35 -37
- package/dist/api/admin/apiRemoveDecisionMachineEndpoint.js +40 -40
- package/dist/api/admin/apiRemoveDetectorKeyEndpoint.d.ts.map +1 -1
- package/dist/api/admin/apiRemoveDetectorKeyEndpoint.js +29 -31
- package/dist/api/admin/apiRemoveSiteKeyEndpoint.js +33 -29
- package/dist/api/admin/apiRemoveSiteKeysEndpoint.js +32 -31
- package/dist/api/admin/apiToggleMaintenanceModeEndpoint.js +43 -35
- package/dist/api/admin/apiUpdateDecisionMachineEndpoint.js +43 -63
- package/dist/api/admin/apiUpdateDetectorKeyEndpoint.js +36 -35
- package/dist/api/admin/createApiAdminRoutesProvider.js +6 -8
- package/dist/api/blacklistRequestInspector.js +285 -377
- package/dist/api/block.js +17 -30
- package/dist/api/captcha/checkSpamEmail.js +88 -98
- package/dist/api/captcha/contextAwareValidation.js +21 -15
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.js +126 -140
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.js +11 -12
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.js +236 -299
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.js +10 -13
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js +336 -462
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/honeypotResponse.js +17 -14
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.js +27 -27
- package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.js +42 -63
- package/dist/api/captcha/getFrictionlessCaptchaChallenge.js +2 -4
- package/dist/api/captcha/getImageCaptchaChallenge.js +136 -207
- package/dist/api/captcha/getPoWCaptchaChallenge.js +128 -198
- package/dist/api/captcha/getPuzzleCaptchaChallenge.js +132 -201
- package/dist/api/captcha/maintenanceModeResponses.js +38 -47
- package/dist/api/captcha/submitImageCaptchaSolution.js +75 -101
- package/dist/api/captcha/submitPoWCaptchaSolution.js +137 -207
- package/dist/api/captcha/submitPuzzleCaptchaSolution.js +73 -105
- package/dist/api/captcha.js +76 -58
- package/dist/api/dnsEventUrl.js +20 -22
- package/dist/api/domainMiddleware.js +104 -115
- package/dist/api/forwardVerify.js +62 -48
- package/dist/api/handshakeTimingMiddleware.js +43 -62
- package/dist/api/hardBlockVerdictCache.js +114 -117
- package/dist/api/headerCheckMiddleware.js +34 -34
- package/dist/api/ignoreMiddleware.js +13 -15
- package/dist/api/ipInfoMiddleware.js +17 -19
- package/dist/api/ja4.js +149 -188
- package/dist/api/ja4Middleware.js +39 -54
- package/dist/api/metrics.js +245 -257
- package/dist/api/public.js +52 -54
- package/dist/api/robotsMiddleware.js +10 -10
- package/dist/api/startProviderApi.js +205 -232
- package/dist/api/testSiteKey.js +16 -16
- package/dist/api/validateAddress.js +23 -21
- package/dist/api/verify.js +334 -377
- package/dist/cjs/_virtual/_rolldown/runtime.cjs +23 -0
- package/dist/cjs/api/admin/apiAdminRoutesProvider.cjs +40 -59
- package/dist/cjs/api/admin/apiClearAllCountersEndpoint.cjs +63 -58
- package/dist/cjs/api/admin/apiDnsEventEndpoint.cjs +82 -93
- package/dist/cjs/api/admin/apiGetAllDecisionMachinesEndpoint.cjs +46 -48
- package/dist/cjs/api/admin/apiGetDecisionMachineEndpoint.cjs +41 -41
- package/dist/cjs/api/admin/apiRegisterSiteKeyEndpoint.cjs +25 -24
- package/dist/cjs/api/admin/apiRegisterSiteKeysEndpoint.cjs +28 -32
- package/dist/cjs/api/admin/apiRemoveAllDecisionMachinesEndpoint.cjs +38 -40
- package/dist/cjs/api/admin/apiRemoveDecisionMachineEndpoint.cjs +41 -41
- package/dist/cjs/api/admin/apiRemoveDetectorKeyEndpoint.cjs +31 -33
- package/dist/cjs/api/admin/apiRemoveSiteKeyEndpoint.cjs +35 -31
- package/dist/cjs/api/admin/apiRemoveSiteKeysEndpoint.cjs +34 -33
- package/dist/cjs/api/admin/apiToggleMaintenanceModeEndpoint.cjs +45 -35
- package/dist/cjs/api/admin/apiUpdateDecisionMachineEndpoint.cjs +45 -65
- package/dist/cjs/api/admin/apiUpdateDetectorKeyEndpoint.cjs +38 -37
- package/dist/cjs/api/admin/createApiAdminRoutesProvider.cjs +7 -8
- package/dist/cjs/api/blacklistRequestInspector.cjs +288 -376
- package/dist/cjs/api/block.cjs +18 -30
- package/dist/cjs/api/captcha/checkSpamEmail.cjs +90 -100
- package/dist/cjs/api/captcha/contextAwareValidation.cjs +21 -14
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.cjs +125 -140
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/constants.cjs +10 -10
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.cjs +238 -301
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.cjs +9 -12
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/handler.cjs +349 -473
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/honeypotResponse.cjs +18 -14
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.cjs +26 -26
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.cjs +42 -63
- package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge.cjs +2 -3
- package/dist/cjs/api/captcha/getImageCaptchaChallenge.cjs +138 -208
- package/dist/cjs/api/captcha/getPoWCaptchaChallenge.cjs +131 -200
- package/dist/cjs/api/captcha/getPuzzleCaptchaChallenge.cjs +135 -203
- package/dist/cjs/api/captcha/maintenanceModeResponses.cjs +38 -44
- package/dist/cjs/api/captcha/submitImageCaptchaSolution.cjs +77 -102
- package/dist/cjs/api/captcha/submitPoWCaptchaSolution.cjs +140 -209
- package/dist/cjs/api/captcha/submitPuzzleCaptchaSolution.cjs +76 -107
- package/dist/cjs/api/captcha.cjs +79 -58
- package/dist/cjs/api/dnsEventUrl.cjs +20 -21
- package/dist/cjs/api/domainMiddleware.cjs +106 -117
- package/dist/cjs/api/forwardVerify.cjs +63 -49
- package/dist/cjs/api/handshakeTimingMiddleware.cjs +43 -61
- package/dist/cjs/api/hardBlockVerdictCache.cjs +114 -114
- package/dist/cjs/api/headerCheckMiddleware.cjs +34 -34
- package/dist/cjs/api/ignoreMiddleware.cjs +12 -14
- package/dist/cjs/api/ipInfoMiddleware.cjs +16 -18
- package/dist/cjs/api/ja4.cjs +149 -187
- package/dist/cjs/api/ja4Middleware.cjs +40 -53
- package/dist/cjs/api/metrics.cjs +229 -228
- package/dist/cjs/api/public.cjs +57 -57
- package/dist/cjs/api/robotsMiddleware.cjs +9 -9
- package/dist/cjs/api/startProviderApi.cjs +219 -237
- package/dist/cjs/api/testSiteKey.cjs +15 -14
- package/dist/cjs/api/validateAddress.cjs +24 -21
- package/dist/cjs/api/verify.cjs +338 -379
- package/dist/cjs/compositeIpAddress.cjs +40 -47
- package/dist/cjs/index.cjs +65 -71
- package/dist/cjs/pairs.cjs +31 -35
- package/dist/cjs/rules/lang.cjs +10 -14
- package/dist/cjs/schedulers/captchaScheduler.cjs +26 -32
- package/dist/cjs/schedulers/getClientList.cjs +35 -33
- package/dist/cjs/schedulers/setClientEntropy.cjs +35 -33
- package/dist/cjs/schedulers/updateSpamEmailDomains.cjs +39 -43
- package/dist/cjs/services/ipComparison.cjs +122 -119
- package/dist/cjs/tasks/captchaManager.cjs +407 -486
- package/dist/cjs/tasks/client/clientTasks.cjs +347 -470
- package/dist/cjs/tasks/dataset/datasetTasks.cjs +25 -29
- package/dist/cjs/tasks/dataset/datasetTasksUtils.cjs +16 -32
- package/dist/cjs/tasks/decisionMachine/decisionMachineRunner.cjs +220 -307
- package/dist/cjs/tasks/detection/decodeBehavior.cjs +408 -317
- package/dist/cjs/tasks/detection/decodePayload.cjs +686 -468
- package/dist/cjs/tasks/detection/decodeSimd.cjs +462 -304
- package/dist/cjs/tasks/detection/getBotScore.cjs +37 -43
- package/dist/cjs/tasks/dnsEvent/enrichDnsEvent.cjs +88 -71
- package/dist/cjs/tasks/frictionless/frictionlessTasks.cjs +348 -486
- package/dist/cjs/tasks/frictionless/frictionlessTasksUtils.cjs +13 -30
- package/dist/cjs/tasks/frictionless/routingMachine.cjs +71 -55
- package/dist/cjs/tasks/imgCaptcha/imgCaptchaTasks.cjs +555 -806
- package/dist/cjs/tasks/imgCaptcha/imgCaptchaTasksUtils.cjs +22 -23
- package/dist/cjs/tasks/index.cjs +2 -4
- package/dist/cjs/tasks/powCaptcha/powTasks.cjs +491 -687
- package/dist/cjs/tasks/powCaptcha/powTasksUtils.cjs +17 -29
- package/dist/cjs/tasks/puzzleCaptcha/puzzleTasks.cjs +422 -591
- package/dist/cjs/tasks/puzzleCaptcha/puzzleTasksUtils.cjs +8 -5
- package/dist/cjs/tasks/spam/checkSpamEmail.cjs +133 -141
- package/dist/cjs/tasks/spam/checkTrafficFilter.cjs +118 -76
- package/dist/cjs/tasks/spam/evaluateEmailSpamRules.cjs +75 -84
- package/dist/cjs/tasks/spam/updateSpamEmailDomains.cjs +40 -56
- package/dist/cjs/tasks/tasks.cjs +107 -158
- package/dist/cjs/util/usageCounters.cjs +220 -211
- package/dist/cjs/util.cjs +329 -359
- package/dist/cjs/utils/devicePlatform.cjs +14 -8
- package/dist/cjs/utils/dns.cjs +68 -93
- package/dist/cjs/utils/hashUserAgent.cjs +14 -7
- package/dist/cjs/utils/hashUserIp.cjs +14 -6
- package/dist/cjs/utils/honeypot/encoders.cjs +74 -80
- package/dist/cjs/utils/honeypot/phraseBank.cjs +51 -44
- package/dist/cjs/utils/normalizeRequestIp.cjs +33 -25
- package/dist/compositeIpAddress.js +38 -46
- package/dist/index.js +12 -56
- package/dist/pairs.js +31 -37
- package/dist/rules/lang.js +11 -15
- package/dist/schedulers/captchaScheduler.js +25 -31
- package/dist/schedulers/getClientList.js +34 -32
- package/dist/schedulers/setClientEntropy.js +34 -32
- package/dist/schedulers/updateSpamEmailDomains.js +38 -42
- package/dist/services/ipComparison.js +122 -119
- package/dist/tasks/captchaManager.js +403 -483
- package/dist/tasks/client/clientTasks.js +343 -467
- package/dist/tasks/dataset/datasetTasks.js +24 -28
- package/dist/tasks/dataset/datasetTasksUtils.js +15 -31
- package/dist/tasks/decisionMachine/decisionMachineRunner.js +217 -306
- package/dist/tasks/detection/getBotScore.js +37 -43
- package/dist/tasks/dnsEvent/enrichDnsEvent.d.ts.map +1 -1
- package/dist/tasks/dnsEvent/enrichDnsEvent.js +88 -74
- package/dist/tasks/dnsEvent/enrichDnsEvent.js.map +1 -1
- package/dist/tasks/frictionless/frictionlessTasks.js +342 -479
- package/dist/tasks/frictionless/frictionlessTasksUtils.js +14 -32
- package/dist/tasks/frictionless/routingMachine.js +72 -56
- package/dist/tasks/imgCaptcha/imgCaptchaTasks.js +550 -801
- package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.js +21 -22
- package/dist/tasks/index.js +1 -3
- package/dist/tasks/powCaptcha/powTasks.d.ts.map +1 -1
- package/dist/tasks/powCaptcha/powTasks.js +486 -682
- package/dist/tasks/powCaptcha/powTasks.js.map +1 -1
- package/dist/tasks/powCaptcha/powTasksUtils.js +15 -28
- package/dist/tasks/puzzleCaptcha/puzzleTasks.d.ts.map +1 -1
- package/dist/tasks/puzzleCaptcha/puzzleTasks.js +417 -586
- package/dist/tasks/puzzleCaptcha/puzzleTasks.js.map +1 -1
- package/dist/tasks/puzzleCaptcha/puzzleTasksUtils.js +9 -6
- package/dist/tasks/spam/checkSpamEmail.js +133 -141
- package/dist/tasks/spam/checkTrafficFilter.d.ts +1 -0
- package/dist/tasks/spam/checkTrafficFilter.d.ts.map +1 -1
- package/dist/tasks/spam/checkTrafficFilter.js +117 -77
- package/dist/tasks/spam/checkTrafficFilter.js.map +1 -1
- package/dist/tasks/spam/evaluateEmailSpamRules.js +75 -86
- package/dist/tasks/spam/updateSpamEmailDomains.js +36 -54
- package/dist/tasks/tasks.js +98 -150
- package/dist/tests/integration/api/blacklistRequestInspector.integration.test.js +4 -1
- package/dist/tests/integration/api/blacklistRequestInspector.integration.test.js.map +1 -1
- package/dist/tests/unit/api/block.unit.test.js +8 -4
- package/dist/tests/unit/api/block.unit.test.js.map +1 -1
- package/dist/tests/unit/api/captcha/maintenanceModeShortCircuit.unit.test.js +8 -6
- package/dist/tests/unit/api/captcha/maintenanceModeShortCircuit.unit.test.js.map +1 -1
- package/dist/tests/unit/api/forwardVerify.unit.test.js +3 -1
- package/dist/tests/unit/api/forwardVerify.unit.test.js.map +1 -1
- package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.js +15 -7
- package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.js.map +1 -1
- package/dist/tests/unit/schedulers/captchaScheduler.unit.test.js +24 -18
- package/dist/tests/unit/schedulers/captchaScheduler.unit.test.js.map +1 -1
- package/dist/tests/unit/schedulers/getClientList.unit.test.js +19 -13
- package/dist/tests/unit/schedulers/getClientList.unit.test.js.map +1 -1
- package/dist/tests/unit/schedulers/setClientEntropy.unit.test.js +19 -13
- package/dist/tests/unit/schedulers/setClientEntropy.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/client/clientTasks.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.js +22 -16
- package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js +6 -0
- package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.js +60 -1
- package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.js +140 -0
- package/dist/tests/unit/tasks/spam/checkTrafficFilter.unit.test.js.map +1 -1
- package/dist/tests/unit/testUtils/mockProviderEnv.d.ts +7 -7
- package/dist/util/usageCounters.js +220 -212
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +327 -364
- package/dist/util.js.map +1 -1
- package/dist/utils/devicePlatform.js +15 -9
- package/dist/utils/dns.js +64 -77
- package/dist/utils/hashUserAgent.js +14 -7
- package/dist/utils/hashUserIp.js +14 -6
- package/dist/utils/honeypot/encoders.js +74 -80
- package/dist/utils/honeypot/phraseBank.js +49 -44
- package/dist/utils/normalizeRequestIp.js +34 -26
- package/package.json +24 -24
package/dist/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
//#region src/utils/devicePlatform.ts
|
|
2
|
+
var APPLE_UA_REGEX = /iPhone|iPad|iPod|Macintosh|Mac OS X/i;
|
|
3
|
+
var MOBILE_UA_REGEX = /Mobile|Android|iPhone|iPad|iPod|Opera Mini|IEMobile/i;
|
|
4
|
+
/**
|
|
5
|
+
* Derive platform flags from server-visible signals. `isWebView` is supplied
|
|
6
|
+
* by the caller because that bit only comes from the encrypted bot-detection
|
|
7
|
+
* payload, not request headers. `isMobile` prefers IPInfo's network-classified
|
|
8
|
+
* mobile bit when present and falls back to UA parsing otherwise.
|
|
9
|
+
*/
|
|
10
|
+
var derivePlatform = (userAgent, webView, ipInfo) => ({
|
|
11
|
+
isApple: APPLE_UA_REGEX.test(userAgent),
|
|
12
|
+
isWebView: webView,
|
|
13
|
+
isMobile: typeof ipInfo?.isMobile === "boolean" ? ipInfo.isMobile : MOBILE_UA_REGEX.test(userAgent)
|
|
7
14
|
});
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
};
|
|
15
|
+
//#endregion
|
|
16
|
+
export { derivePlatform };
|
package/dist/utils/dns.js
CHANGED
|
@@ -1,84 +1,71 @@
|
|
|
1
1
|
import * as dns from "node:dns";
|
|
2
|
-
import * as https from "node:https";
|
|
2
|
+
import * as https$1 from "node:https";
|
|
3
3
|
import { promisify } from "node:util";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
//#region src/utils/dns.ts
|
|
5
|
+
/** Default DNS servers to use for lookups (Google and Cloudflare) */
|
|
6
|
+
var DEFAULT_DNS_SERVERS = ["8.8.8.8", "1.1.1.1"];
|
|
7
|
+
/** Default timeout for HTTPS requests in milliseconds */
|
|
8
|
+
var DEFAULT_HTTPS_TIMEOUT_MS = 1e3;
|
|
9
|
+
/**
|
|
10
|
+
* Creates an isolated DNS resolver instance that doesn't affect global DNS config.
|
|
11
|
+
* Uses custom DNS servers by default for reliable lookups.
|
|
12
|
+
*/
|
|
13
|
+
var createResolver = (dnsServers) => {
|
|
14
|
+
const resolver = new dns.Resolver();
|
|
15
|
+
resolver.setServers(dnsServers ?? DEFAULT_DNS_SERVERS);
|
|
16
|
+
return resolver;
|
|
10
17
|
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
18
|
+
var checkForCname = async (domain, resolver) => {
|
|
19
|
+
try {
|
|
20
|
+
const res = resolver ?? createResolver();
|
|
21
|
+
return await promisify(res.resolveCname.bind(res))(domain);
|
|
22
|
+
} catch (err) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
19
25
|
};
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
26
|
+
var checkForMXRecord = async (domain, resolver) => {
|
|
27
|
+
try {
|
|
28
|
+
const res = resolver ?? createResolver();
|
|
29
|
+
return await promisify(res.resolveMx.bind(res))(domain);
|
|
30
|
+
} catch (err) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
28
33
|
};
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
34
|
+
var checkForRedirect = (url, timeoutMs = DEFAULT_HTTPS_TIMEOUT_MS) => {
|
|
35
|
+
return new Promise((resolve) => {
|
|
36
|
+
const req = https$1.get(url, { timeout: timeoutMs }, (res) => {
|
|
37
|
+
res.resume();
|
|
38
|
+
if (res.statusCode && res.statusCode >= 300 && res.statusCode < 400 && res.headers.location) try {
|
|
39
|
+
const absoluteUrl = new URL(res.headers.location, url).href;
|
|
40
|
+
resolve({ redirectUrl: absoluteUrl });
|
|
41
|
+
} catch {
|
|
42
|
+
resolve({});
|
|
43
|
+
}
|
|
44
|
+
else resolve({});
|
|
45
|
+
}).on("timeout", () => {
|
|
46
|
+
req.destroy();
|
|
47
|
+
resolve({ timeout: true });
|
|
48
|
+
}).on("error", (e) => {
|
|
49
|
+
resolve({ tlsError: e.message.includes("CERT") || e.message.includes("SSL") || e.message.includes("TLS") || e.message.includes("certificate") || e.message.includes("EPROTO") });
|
|
50
|
+
});
|
|
51
|
+
});
|
|
37
52
|
};
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
resolve({ timeout: true });
|
|
55
|
-
}).on("error", (e) => {
|
|
56
|
-
const isTlsError = e.message.includes("CERT") || e.message.includes("SSL") || e.message.includes("TLS") || e.message.includes("certificate") || e.message.includes("EPROTO");
|
|
57
|
-
resolve({ tlsError: isTlsError });
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
};
|
|
61
|
-
const runDnsChecks = async (domain, options) => {
|
|
62
|
-
const resolver = createResolver(options?.dnsServers);
|
|
63
|
-
try {
|
|
64
|
-
const [cnameResult, mxRecordResult, redirectResult] = await Promise.all([
|
|
65
|
-
checkForCname(domain, resolver),
|
|
66
|
-
checkForMXRecord(domain, resolver),
|
|
67
|
-
checkForRedirect(`https://${domain}`)
|
|
68
|
-
]);
|
|
69
|
-
return {
|
|
70
|
-
cnameResult,
|
|
71
|
-
mxRecordResult,
|
|
72
|
-
redirectResult
|
|
73
|
-
};
|
|
74
|
-
} catch (e) {
|
|
75
|
-
throw new Error(`Error during DNS checks: ${e.toString()}`);
|
|
76
|
-
}
|
|
77
|
-
};
|
|
78
|
-
export {
|
|
79
|
-
checkForARecord,
|
|
80
|
-
checkForCname,
|
|
81
|
-
checkForMXRecord,
|
|
82
|
-
checkForRedirect,
|
|
83
|
-
runDnsChecks
|
|
53
|
+
var runDnsChecks = async (domain, options) => {
|
|
54
|
+
const resolver = createResolver(options?.dnsServers);
|
|
55
|
+
try {
|
|
56
|
+
const [cnameResult, mxRecordResult, redirectResult] = await Promise.all([
|
|
57
|
+
checkForCname(domain, resolver),
|
|
58
|
+
checkForMXRecord(domain, resolver),
|
|
59
|
+
checkForRedirect(`https://${domain}`)
|
|
60
|
+
]);
|
|
61
|
+
return {
|
|
62
|
+
cnameResult,
|
|
63
|
+
mxRecordResult,
|
|
64
|
+
redirectResult
|
|
65
|
+
};
|
|
66
|
+
} catch (e) {
|
|
67
|
+
throw new Error(`Error during DNS checks: ${e.toString()}`);
|
|
68
|
+
}
|
|
84
69
|
};
|
|
70
|
+
//#endregion
|
|
71
|
+
export { checkForCname, checkForMXRecord, checkForRedirect, runDnsChecks };
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
|
+
//#region src/utils/hashUserAgent.ts
|
|
3
|
+
/**
|
|
4
|
+
* Hash a user agent string to a fixed-length string to prevent RSA-OAEP encryption size limits
|
|
5
|
+
* Uses SHA-256 and returns first 32 characters of the hex digest (128 bits)
|
|
6
|
+
* This provides a good balance between uniqueness and size constraints
|
|
7
|
+
*
|
|
8
|
+
* @param userAgent - The user agent string to hash
|
|
9
|
+
* @returns A 32-character hex string representing the hash
|
|
10
|
+
*/
|
|
2
11
|
function hashUserAgent(userAgent) {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
return hashHex.substring(0, 32);
|
|
12
|
+
const hash = createHash("sha256");
|
|
13
|
+
hash.update(userAgent, "utf8");
|
|
14
|
+
return hash.digest("hex").substring(0, 32);
|
|
7
15
|
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
};
|
|
16
|
+
//#endregion
|
|
17
|
+
export { hashUserAgent };
|
package/dist/utils/hashUserIp.js
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
|
+
//#region src/utils/hashUserIp.ts
|
|
3
|
+
/**
|
|
4
|
+
* Hash a user and IP address combination to create a unique session identifier
|
|
5
|
+
* SHA-256 hash of user:ip:sitekey combination
|
|
6
|
+
*
|
|
7
|
+
* @param user - The user identifier
|
|
8
|
+
* @param ip - The IP address
|
|
9
|
+
* @returns A 64-character hex string representing the hash
|
|
10
|
+
*/
|
|
2
11
|
function hashUserIp(user, ip, sitekey) {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
12
|
+
const hash = createHash("sha256");
|
|
13
|
+
hash.update(`${user}:${ip}:${sitekey}`, "utf8");
|
|
14
|
+
return hash.digest("hex");
|
|
6
15
|
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
};
|
|
16
|
+
//#endregion
|
|
17
|
+
export { hashUserIp };
|
|
@@ -1,86 +1,80 @@
|
|
|
1
1
|
import { EncodingType } from "@prosopo/types";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
2
|
+
//#region src/utils/honeypot/encoders.ts
|
|
3
|
+
var MORSE_MAP = {
|
|
4
|
+
a: ".-",
|
|
5
|
+
b: "-...",
|
|
6
|
+
c: "-.-.",
|
|
7
|
+
d: "-..",
|
|
8
|
+
e: ".",
|
|
9
|
+
f: "..-.",
|
|
10
|
+
g: "--.",
|
|
11
|
+
h: "....",
|
|
12
|
+
i: "..",
|
|
13
|
+
j: ".---",
|
|
14
|
+
k: "-.-",
|
|
15
|
+
l: ".-..",
|
|
16
|
+
m: "--",
|
|
17
|
+
n: "-.",
|
|
18
|
+
o: "---",
|
|
19
|
+
p: ".--.",
|
|
20
|
+
q: "--.-",
|
|
21
|
+
r: ".-.",
|
|
22
|
+
s: "...",
|
|
23
|
+
t: "-",
|
|
24
|
+
u: "..-",
|
|
25
|
+
v: "...-",
|
|
26
|
+
w: ".--",
|
|
27
|
+
x: "-..-",
|
|
28
|
+
y: "-.--",
|
|
29
|
+
z: "--..",
|
|
30
|
+
"0": "-----",
|
|
31
|
+
"1": ".----",
|
|
32
|
+
"2": "..---",
|
|
33
|
+
"3": "...--",
|
|
34
|
+
"4": "....-",
|
|
35
|
+
"5": ".....",
|
|
36
|
+
"6": "-....",
|
|
37
|
+
"7": "--...",
|
|
38
|
+
"8": "---..",
|
|
39
|
+
"9": "----."
|
|
39
40
|
};
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
41
|
+
var SEMAPHORE_MAP = {
|
|
42
|
+
a: "↙↓",
|
|
43
|
+
b: "←↓",
|
|
44
|
+
c: "↖↓",
|
|
45
|
+
d: "↑↓",
|
|
46
|
+
e: "↓↘",
|
|
47
|
+
f: "↓→",
|
|
48
|
+
g: "↓↗",
|
|
49
|
+
h: "↙←",
|
|
50
|
+
i: "↙↖",
|
|
51
|
+
j: "↓↑",
|
|
52
|
+
k: "↑←",
|
|
53
|
+
l: "↗←",
|
|
54
|
+
m: "←↖",
|
|
55
|
+
n: "←↑",
|
|
56
|
+
o: "↖↑",
|
|
57
|
+
p: "↑↗",
|
|
58
|
+
q: "↗→",
|
|
59
|
+
r: "→↘",
|
|
60
|
+
s: "↘↓",
|
|
61
|
+
t: "↓↙",
|
|
62
|
+
u: "↘↗",
|
|
63
|
+
v: "→↑",
|
|
64
|
+
w: "↘↑",
|
|
65
|
+
x: "↙↗",
|
|
66
|
+
y: "→↗",
|
|
67
|
+
z: "↘→"
|
|
67
68
|
};
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
return words.map(
|
|
71
|
-
(word) => [...word].map((ch) => MORSE_MAP[ch]).filter((code) => Boolean(code)).join(" ")
|
|
72
|
-
).filter(Boolean).join(" / ");
|
|
69
|
+
var encodeMorse = (text) => {
|
|
70
|
+
return text.toLowerCase().split(/\s+/).filter(Boolean).map((word) => [...word].map((ch) => MORSE_MAP[ch]).filter((code) => Boolean(code)).join(" ")).filter(Boolean).join(" / ");
|
|
73
71
|
};
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
return words.map(
|
|
77
|
-
(word) => [...word].map((ch) => SEMAPHORE_MAP[ch]).filter((code) => Boolean(code)).join(" ")
|
|
78
|
-
).filter(Boolean).join(" / ");
|
|
72
|
+
var encodeSemaphore = (text) => {
|
|
73
|
+
return text.toLowerCase().split(/\s+/).filter(Boolean).map((word) => [...word].map((ch) => SEMAPHORE_MAP[ch]).filter((code) => Boolean(code)).join(" ")).filter(Boolean).join(" / ");
|
|
79
74
|
};
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
};
|
|
84
|
-
export {
|
|
85
|
-
encodeHoneypotQuestion
|
|
75
|
+
var encodeHoneypotQuestion = (text, encoding) => {
|
|
76
|
+
const encoded = encoding === EncodingType.morse ? encodeMorse(text) : encodeSemaphore(text);
|
|
77
|
+
return Buffer.from(encoded, "utf-8").toString("base64");
|
|
86
78
|
};
|
|
79
|
+
//#endregion
|
|
80
|
+
export { encodeHoneypotQuestion };
|
|
@@ -1,47 +1,52 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
1
|
import { getLogger } from "@prosopo/logger";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
};
|
|
41
|
-
const resetPhraseBankCache = () => {
|
|
42
|
-
cachedPhrases = null;
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
//#region src/utils/honeypot/phraseBank.ts
|
|
4
|
+
var DEFAULT_PHRASE_BANK_PATH = "/app/data/honeypot-phrases.json";
|
|
5
|
+
var logger = getLogger("info", "honeypot-phrase-bank");
|
|
6
|
+
var cachedPhrases = null;
|
|
7
|
+
var resolvePath = () => process.env.PROSOPO_HONEYPOT_PHRASE_BANK_PATH ?? DEFAULT_PHRASE_BANK_PATH;
|
|
8
|
+
var loadPhrases = () => {
|
|
9
|
+
const path = resolvePath();
|
|
10
|
+
try {
|
|
11
|
+
const raw = fs.readFileSync(path, "utf-8");
|
|
12
|
+
const parsed = JSON.parse(raw);
|
|
13
|
+
if (parsed && typeof parsed === "object" && "phrases" in parsed && Array.isArray(parsed.phrases)) {
|
|
14
|
+
const phrases = parsed.phrases.filter((p) => typeof p === "string" && p.trim().length > 0);
|
|
15
|
+
logger.info(() => ({
|
|
16
|
+
msg: "Loaded honeypot phrase bank",
|
|
17
|
+
data: {
|
|
18
|
+
path,
|
|
19
|
+
count: phrases.length
|
|
20
|
+
}
|
|
21
|
+
}));
|
|
22
|
+
return phrases;
|
|
23
|
+
}
|
|
24
|
+
logger.warn(() => ({
|
|
25
|
+
msg: "Honeypot phrase bank missing `phrases` array",
|
|
26
|
+
data: { path }
|
|
27
|
+
}));
|
|
28
|
+
return [];
|
|
29
|
+
} catch (err) {
|
|
30
|
+
logger.warn(() => ({
|
|
31
|
+
msg: "Failed to load honeypot phrase bank — fallback questions disabled",
|
|
32
|
+
data: {
|
|
33
|
+
path,
|
|
34
|
+
err: err instanceof Error ? err.message : String(err)
|
|
35
|
+
}
|
|
36
|
+
}));
|
|
37
|
+
return [];
|
|
38
|
+
}
|
|
43
39
|
};
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
40
|
+
/**
|
|
41
|
+
* Returns a random phrase from the loaded bank, or `undefined` if the bank
|
|
42
|
+
* is empty / unloadable. Loads lazily on first call so startup ordering
|
|
43
|
+
* doesn't matter and tests can swap the env var before first use.
|
|
44
|
+
*/
|
|
45
|
+
var getRandomPhrase = () => {
|
|
46
|
+
if (cachedPhrases === null) cachedPhrases = loadPhrases();
|
|
47
|
+
if (cachedPhrases.length === 0) return void 0;
|
|
48
|
+
const idx = Math.floor(Math.random() * cachedPhrases.length);
|
|
49
|
+
return cachedPhrases[idx];
|
|
47
50
|
};
|
|
51
|
+
//#endregion
|
|
52
|
+
export { getRandomPhrase };
|
|
@@ -1,27 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
1
|
+
//#region src/utils/normalizeRequestIp.ts
|
|
2
|
+
/**
|
|
3
|
+
* Normalizes a request IP address from various formats to a string
|
|
4
|
+
*
|
|
5
|
+
* Handles different IP formats:
|
|
6
|
+
* - Direct string
|
|
7
|
+
* - Object with address property (e.g., IPv6 format)
|
|
8
|
+
* - Other objects by converting to string
|
|
9
|
+
*
|
|
10
|
+
* @param rawIp - The raw IP value from the request
|
|
11
|
+
* @param logger - Logger instance for debugging
|
|
12
|
+
* @returns Normalized IP address as a string
|
|
13
|
+
*/
|
|
14
|
+
var normalizeRequestIp = (rawIp, logger) => {
|
|
15
|
+
let normalizedIp = "";
|
|
16
|
+
const rawType = typeof rawIp;
|
|
17
|
+
const rawCtor = rawIp && rawType === "object" ? rawIp.constructor?.name : void 0;
|
|
18
|
+
const addressProp = rawIp && rawType === "object" ? rawIp.address : void 0;
|
|
19
|
+
if (rawType === "string") normalizedIp = rawIp;
|
|
20
|
+
else if (typeof addressProp === "string") normalizedIp = addressProp;
|
|
21
|
+
else if (rawIp != null) normalizedIp = String(rawIp);
|
|
22
|
+
logger.debug(() => ({
|
|
23
|
+
msg: "Normalized request IP",
|
|
24
|
+
data: {
|
|
25
|
+
rawIpType: rawType,
|
|
26
|
+
rawIpCtor: rawCtor,
|
|
27
|
+
rawIpString: rawType === "string" ? rawIp : void 0,
|
|
28
|
+
addressPropType: typeof addressProp,
|
|
29
|
+
normalizedIp
|
|
30
|
+
}
|
|
31
|
+
}));
|
|
32
|
+
return normalizedIp;
|
|
27
33
|
};
|
|
34
|
+
//#endregion
|
|
35
|
+
export { normalizeRequestIp };
|