@prosopo/provider 4.9.2 → 4.11.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 +7 -7
- package/.turbo/turbo-build$colon$tsc.log +24 -24
- package/.turbo/turbo-build.log +8 -8
- package/CHANGELOG.md +56 -0
- package/dist/api/admin/apiRemoveDetectorKeyEndpoint.d.ts.map +1 -1
- package/dist/api/blacklistRequestInspector.d.ts +4 -1
- package/dist/api/blacklistRequestInspector.d.ts.map +1 -1
- package/dist/api/blacklistRequestInspector.js +126 -5
- package/dist/api/blacklistRequestInspector.js.map +1 -1
- package/dist/api/block.js +4 -2
- package/dist/api/block.js.map +1 -1
- package/dist/api/captcha/submitPoWCaptchaSolution.d.ts.map +1 -1
- package/dist/api/captcha/submitPoWCaptchaSolution.js +3 -1
- package/dist/api/captcha/submitPoWCaptchaSolution.js.map +1 -1
- package/dist/api/captcha/submitPuzzleCaptchaSolution.d.ts.map +1 -1
- package/dist/api/captcha/submitPuzzleCaptchaSolution.js +3 -1
- package/dist/api/captcha/submitPuzzleCaptchaSolution.js.map +1 -1
- package/dist/cjs/api/blacklistRequestInspector.cjs +124 -3
- package/dist/cjs/api/block.cjs +4 -2
- package/dist/cjs/api/captcha/submitPoWCaptchaSolution.cjs +3 -1
- package/dist/cjs/api/captcha/submitPuzzleCaptchaSolution.cjs +3 -1
- package/dist/cjs/tasks/powCaptcha/powTasksUtils.cjs +7 -3
- package/dist/tasks/powCaptcha/powTasksUtils.d.ts.map +1 -1
- package/dist/tasks/powCaptcha/powTasksUtils.js +5 -1
- package/dist/tasks/powCaptcha/powTasksUtils.js.map +1 -1
- package/dist/tests/integration/api/admin/apiRegisterSiteKeyEndpoint.integration.test.js +2 -0
- package/dist/tests/integration/api/admin/apiRegisterSiteKeyEndpoint.integration.test.js.map +1 -1
- package/dist/tests/integration/api/blacklistRequestInspector.integration.test.js +2 -2
- package/dist/tests/integration/api/blacklistRequestInspector.integration.test.js.map +1 -1
- package/dist/tests/integration/clientSettingsPersistence.integration.test.js +1 -0
- package/dist/tests/integration/clientSettingsPersistence.integration.test.js.map +1 -1
- package/dist/tests/unit/api/admin/apiRegisterSiteKeyEndpoint.unit.test.js +1 -0
- package/dist/tests/unit/api/admin/apiRegisterSiteKeyEndpoint.unit.test.js.map +1 -1
- package/dist/tests/unit/api/blacklistRequestInspector.unit.test.js +206 -0
- package/dist/tests/unit/api/blacklistRequestInspector.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/captchaManager.unit.test.js +1 -0
- package/dist/tests/unit/tasks/captchaManager.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js +36 -0
- package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js.map +1 -1
- package/package.json +18 -18
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/provider@4.
|
|
2
|
+
> @prosopo/provider@4.11.0 build:cjs
|
|
3
3
|
> NODE_ENV=${NODE_ENV:-development}; vite build --config vite.cjs.config.ts --mode $NODE_ENV
|
|
4
4
|
|
|
5
5
|
ViteCommonJSConfig: .
|
|
@@ -76,13 +76,13 @@ rendering chunks...
|
|
|
76
76
|
[2mdist/cjs/[22m[36mtasks/imgCaptcha/imgCaptchaTasksUtils.cjs [39m[1m[2m 0.84 kB[22m[1m[22m
|
|
77
77
|
[2mdist/cjs/[22m[36mapi/validateAddress.cjs [39m[1m[2m 0.84 kB[22m[1m[22m
|
|
78
78
|
[2mdist/cjs/[22m[36mutils/normalizeRequestIp.cjs [39m[1m[2m 0.89 kB[22m[1m[22m
|
|
79
|
-
[2mdist/cjs/[22m[36mapi/block.cjs [39m[1m[2m 0.
|
|
79
|
+
[2mdist/cjs/[22m[36mapi/block.cjs [39m[1m[2m 0.95 kB[22m[1m[22m
|
|
80
80
|
[2mdist/cjs/[22m[36mtasks/dataset/datasetTasks.cjs [39m[1m[2m 0.96 kB[22m[1m[22m
|
|
81
81
|
[2mdist/cjs/[22m[36mapi/dnsEventUrl.cjs [39m[1m[2m 0.98 kB[22m[1m[22m
|
|
82
82
|
[2mdist/cjs/[22m[36mtasks/frictionless/frictionlessTasksUtils.cjs [39m[1m[2m 1.05 kB[22m[1m[22m
|
|
83
83
|
[2mdist/cjs/[22m[36mapi/headerCheckMiddleware.cjs [39m[1m[2m 1.07 kB[22m[1m[22m
|
|
84
84
|
[2mdist/cjs/[22m[36mapi/captcha/getFrictionlessCaptchaChallenge/sessionDedup.cjs [39m[1m[2m 1.09 kB[22m[1m[22m
|
|
85
|
-
[2mdist/cjs/[22m[36mtasks/powCaptcha/powTasksUtils.cjs [39m[1m[2m 1.
|
|
85
|
+
[2mdist/cjs/[22m[36mtasks/powCaptcha/powTasksUtils.cjs [39m[1m[2m 1.11 kB[22m[1m[22m
|
|
86
86
|
[2mdist/cjs/[22m[36mtasks/detection/getBotScore.cjs [39m[1m[2m 1.21 kB[22m[1m[22m
|
|
87
87
|
[2mdist/cjs/[22m[36mschedulers/getClientList.cjs [39m[1m[2m 1.21 kB[22m[1m[22m
|
|
88
88
|
[2mdist/cjs/[22m[36mschedulers/setClientEntropy.cjs [39m[1m[2m 1.24 kB[22m[1m[22m
|
|
@@ -116,7 +116,7 @@ rendering chunks...
|
|
|
116
116
|
[2mdist/cjs/[22m[36mapi/captcha/checkSpamEmail.cjs [39m[1m[2m 2.47 kB[22m[1m[22m
|
|
117
117
|
[2mdist/cjs/[22m[36mapi/captcha.cjs [39m[1m[2m 2.66 kB[22m[1m[22m
|
|
118
118
|
[2mdist/cjs/[22m[36mapi/ja4Middleware.cjs [39m[1m[2m 2.74 kB[22m[1m[22m
|
|
119
|
-
[2mdist/cjs/[22m[36mapi/captcha/submitPuzzleCaptchaSolution.cjs [39m[1m[2m
|
|
119
|
+
[2mdist/cjs/[22m[36mapi/captcha/submitPuzzleCaptchaSolution.cjs [39m[1m[2m 3.00 kB[22m[1m[22m
|
|
120
120
|
[2mdist/cjs/[22m[36mtasks/spam/evaluateEmailSpamRules.cjs [39m[1m[2m 3.03 kB[22m[1m[22m
|
|
121
121
|
[2mdist/cjs/[22m[36mapi/admin/apiDnsEventEndpoint.cjs [39m[1m[2m 3.15 kB[22m[1m[22m
|
|
122
122
|
[2mdist/cjs/[22m[36mapi/captcha/submitImageCaptchaSolution.cjs [39m[1m[2m 3.20 kB[22m[1m[22m
|
|
@@ -127,15 +127,15 @@ rendering chunks...
|
|
|
127
127
|
[2mdist/cjs/[22m[36mindex.cjs [39m[1m[2m 4.01 kB[22m[1m[22m
|
|
128
128
|
[2mdist/cjs/[22m[36mservices/ipComparison.cjs [39m[1m[2m 4.10 kB[22m[1m[22m
|
|
129
129
|
[2mdist/cjs/[22m[36mtasks/spam/checkSpamEmail.cjs [39m[1m[2m 4.32 kB[22m[1m[22m
|
|
130
|
-
[2mdist/cjs/[22m[36mapi/captcha/submitPoWCaptchaSolution.cjs [39m[1m[2m 5.
|
|
130
|
+
[2mdist/cjs/[22m[36mapi/captcha/submitPoWCaptchaSolution.cjs [39m[1m[2m 5.35 kB[22m[1m[22m
|
|
131
131
|
[2mdist/cjs/[22m[36mtasks/tasks.cjs [39m[1m[2m 5.35 kB[22m[1m[22m
|
|
132
132
|
[2mdist/cjs/[22m[36mutil/usageCounters.cjs [39m[1m[2m 5.80 kB[22m[1m[22m
|
|
133
133
|
[2mdist/cjs/[22m[36mapi/captcha/getImageCaptchaChallenge.cjs [39m[1m[2m 6.00 kB[22m[1m[22m
|
|
134
|
-
[2mdist/cjs/[22m[36mapi/blacklistRequestInspector.cjs [39m[1m[2m 6.12 kB[22m[1m[22m
|
|
135
134
|
[2mdist/cjs/[22m[36mapi/captcha/getPoWCaptchaChallenge.cjs [39m[1m[2m 6.23 kB[22m[1m[22m
|
|
136
135
|
[2mdist/cjs/[22m[36mapi/captcha/getPuzzleCaptchaChallenge.cjs [39m[1m[2m 6.42 kB[22m[1m[22m
|
|
137
136
|
[2mdist/cjs/[22m[36mapi/startProviderApi.cjs [39m[1m[2m 9.53 kB[22m[1m[22m
|
|
138
137
|
[2mdist/cjs/[22m[36mapi/captcha/getFrictionlessCaptchaChallenge/decisionMachine.cjs [39m[1m[2m 9.54 kB[22m[1m[22m
|
|
138
|
+
[2mdist/cjs/[22m[36mapi/blacklistRequestInspector.cjs [39m[1m[2m10.00 kB[22m[1m[22m
|
|
139
139
|
[2mdist/cjs/[22m[36mapi/captcha/getFrictionlessCaptchaChallenge/handler.cjs [39m[1m[2m10.10 kB[22m[1m[22m
|
|
140
140
|
[2mdist/cjs/[22m[36mtasks/decisionMachine/decisionMachineRunner.cjs [39m[1m[2m10.19 kB[22m[1m[22m
|
|
141
141
|
[2mdist/cjs/[22m[36mapi/verify.cjs [39m[1m[2m10.86 kB[22m[1m[22m
|
|
@@ -149,7 +149,7 @@ rendering chunks...
|
|
|
149
149
|
[2mdist/cjs/[22m[36mtasks/powCaptcha/powTasks.cjs [39m[1m[2m22.39 kB[22m[1m[22m
|
|
150
150
|
[2mdist/cjs/[22m[36mtasks/imgCaptcha/imgCaptchaTasks.cjs [39m[1m[2m28.48 kB[22m[1m[22m
|
|
151
151
|
[2mdist/cjs/[22m[36mtasks/detection/decodePayload.cjs [39m[1m[2m44.26 kB[22m[1m[22m
|
|
152
|
-
[32m✓ built in
|
|
152
|
+
[32m✓ built in 782ms[39m
|
|
153
153
|
[copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodeBehavior.js to /home/runner/work/captcha/captcha/packages/provider/dist/cjs/tasks/detection/decodeBehavior.js
|
|
154
154
|
[copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodePayload.js to /home/runner/work/captcha/captcha/packages/provider/dist/cjs/tasks/detection/decodePayload.js
|
|
155
155
|
[copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodeSimd.js to /home/runner/work/captcha/captcha/packages/provider/dist/cjs/tasks/detection/decodeSimd.js
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/provider@4.
|
|
2
|
+
> @prosopo/provider@4.11.0 build:tsc
|
|
3
3
|
> tsc --build --verbose
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
7:46:20 PM - Projects in this build:
|
|
6
6
|
* ../../dev/config/tsconfig.json
|
|
7
7
|
* ../util/tsconfig.json
|
|
8
8
|
* ../logger/tsconfig.json
|
|
@@ -25,47 +25,47 @@
|
|
|
25
25
|
* ../load-balancer/tsconfig.json
|
|
26
26
|
* tsconfig.json
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
7:46:20 PM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/webpack/webpack.config.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
7:46:20 PM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
7:46:20 PM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/index.ts' is older than output '../logger/tsconfig.tsbuildinfo'
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
7:46:20 PM - Project '../api-route/tsconfig.json' is up to date because newest input '../api-route/src/apiRoutes.ts' is older than output '../api-route/tsconfig.tsbuildinfo'
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
7:46:20 PM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translationKey.ts' is older than output '../locale/tsconfig.tsbuildinfo'
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
7:46:20 PM - Project '../util-crypto/tsconfig.json' is up to date because newest input '../util-crypto/src/types.ts' is older than output '../util-crypto/tsconfig.tsbuildinfo'
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
7:46:20 PM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/procaptcha/behavioral.ts' is older than output '../types/tsconfig.tsbuildinfo'
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
7:46:20 PM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/index.ts' is older than output '../common/tsconfig.tsbuildinfo'
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
7:46:20 PM - Project '../ipinfo/tsconfig.json' is up to date because newest input '../ipinfo/src/index.ts' is older than output '../ipinfo/tsconfig.tsbuildinfo'
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
7:46:20 PM - Project '../redis-client/tsconfig.json' is up to date because newest input '../redis-client/src/index.ts' is older than output '../redis-client/tsconfig.tsbuildinfo'
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
7:46:20 PM - Project '../api/tsconfig.json' is up to date because newest input '../api/src/index.ts' is older than output '../api/tsconfig.tsbuildinfo'
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
7:46:20 PM - Project '../user-access-policy/tsconfig.json' is up to date because newest input '../user-access-policy/src/ruleRecord.ts' is older than output '../user-access-policy/tsconfig.tsbuildinfo'
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
7:46:20 PM - Project '../types-database/tsconfig.json' is up to date because newest input '../types-database/src/index.ts' is older than output '../types-database/tsconfig.tsbuildinfo'
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
7:46:20 PM - Project '../database/tsconfig.json' is up to date because newest input '../database/src/tests/integration/centralStreamingEnrichment.integration.test.ts' is older than output '../database/tsconfig.tsbuildinfo'
|
|
55
55
|
|
|
56
|
-
|
|
56
|
+
7:46:20 PM - Project '../keyring/tsconfig.json' is up to date because newest input '../keyring/src/keyring/keyring.ts' is older than output '../keyring/tsconfig.tsbuildinfo'
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
7:46:20 PM - Project '../types-env/tsconfig.json' is up to date because newest input '../types-env/src/env.ts' is older than output '../types-env/tsconfig.tsbuildinfo'
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
7:46:20 PM - Project '../env/tsconfig.json' is up to date because newest input '../env/src/env.ts' is older than output '../env/tsconfig.tsbuildinfo'
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
7:46:20 PM - Project '../api-express-router/tsconfig.json' is up to date because newest input '../api-express-router/src/middlewares/requestLoggerMiddleware.ts' is older than output '../api-express-router/tsconfig.tsbuildinfo'
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
7:46:20 PM - Project '../datasets/tsconfig.json' is up to date because newest input '../datasets/src/index.ts' is older than output '../datasets/tsconfig.tsbuildinfo'
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
7:46:20 PM - Project '../load-balancer/tsconfig.json' is up to date because newest input '../load-balancer/src/balancer.ts' is older than output '../load-balancer/tsconfig.tsbuildinfo'
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
7:46:20 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
7:46:20 PM - Building project '/home/runner/work/captcha/captcha/packages/provider/tsconfig.json'...
|
|
71
71
|
|
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/provider@4.
|
|
2
|
+
> @prosopo/provider@4.11.0 build
|
|
3
3
|
> npm run build:cross-env -- --mode ${NODE_ENV:-development}
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
> @prosopo/provider@4.
|
|
6
|
+
> @prosopo/provider@4.11.0 build:cross-env
|
|
7
7
|
> vite build --config vite.esm.config.ts --mode production
|
|
8
8
|
|
|
9
9
|
ViteEsmConfig: .
|
|
@@ -77,15 +77,15 @@ rendering chunks...
|
|
|
77
77
|
[2mdist/[22m[36mapi/captcha/contextAwareValidation.js [39m[1m[2m 0.63 kB[22m[1m[22m
|
|
78
78
|
[2mdist/[22m[36mapi/validateAddress.js [39m[1m[2m 0.71 kB[22m[1m[22m
|
|
79
79
|
[2mdist/[22m[36mtasks/imgCaptcha/imgCaptchaTasksUtils.js [39m[1m[2m 0.74 kB[22m[1m[22m
|
|
80
|
-
[2mdist/[22m[36mapi/block.js [39m[1m[2m 0.78 kB[22m[1m[22m
|
|
81
80
|
[2mdist/[22m[36mutils/normalizeRequestIp.js [39m[1m[2m 0.79 kB[22m[1m[22m
|
|
81
|
+
[2mdist/[22m[36mapi/block.js [39m[1m[2m 0.81 kB[22m[1m[22m
|
|
82
82
|
[2mdist/[22m[36mapi/dnsEventUrl.js [39m[1m[2m 0.85 kB[22m[1m[22m
|
|
83
83
|
[2mdist/[22m[36mtasks/dataset/datasetTasks.js [39m[1m[2m 0.85 kB[22m[1m[22m
|
|
84
84
|
[2mdist/[22m[36mapi/admin/apiRegisterSiteKeyEndpoint.js [39m[1m[2m 0.90 kB[22m[1m[22m
|
|
85
85
|
[2mdist/[22m[36mtasks/frictionless/frictionlessTasksUtils.js [39m[1m[2m 0.91 kB[22m[1m[22m
|
|
86
86
|
[2mdist/[22m[36mapi/headerCheckMiddleware.js [39m[1m[2m 0.92 kB[22m[1m[22m
|
|
87
|
+
[2mdist/[22m[36mtasks/powCaptcha/powTasksUtils.js [39m[1m[2m 0.98 kB[22m[1m[22m
|
|
87
88
|
[2mdist/[22m[36mapi/captcha/getFrictionlessCaptchaChallenge/sessionDedup.js [39m[1m[2m 0.98 kB[22m[1m[22m
|
|
88
|
-
[2mdist/[22m[36mtasks/powCaptcha/powTasksUtils.js [39m[1m[2m 0.99 kB[22m[1m[22m
|
|
89
89
|
[2mdist/[22m[36mapi/admin/apiRemoveSiteKeyEndpoint.js [39m[1m[2m 1.00 kB[22m[1m[22m
|
|
90
90
|
[2mdist/[22m[36mapi/admin/apiRemoveSiteKeysEndpoint.js [39m[1m[2m 1.00 kB[22m[1m[22m
|
|
91
91
|
[2mdist/[22m[36mapi/admin/apiRegisterSiteKeysEndpoint.js [39m[1m[2m 1.01 kB[22m[1m[22m
|
|
@@ -121,23 +121,23 @@ rendering chunks...
|
|
|
121
121
|
[2mdist/[22m[36mutils/dns.js [39m[1m[2m 2.57 kB[22m[1m[22m
|
|
122
122
|
[2mdist/[22m[36mindex.js [39m[1m[2m 2.66 kB[22m[1m[22m
|
|
123
123
|
[2mdist/[22m[36mapi/admin/apiDnsEventEndpoint.js [39m[1m[2m 2.66 kB[22m[1m[22m
|
|
124
|
-
[2mdist/[22m[36mapi/captcha/submitPuzzleCaptchaSolution.js [39m[1m[2m 2.78 kB[22m[1m[22m
|
|
125
124
|
[2mdist/[22m[36mtasks/spam/evaluateEmailSpamRules.js [39m[1m[2m 2.84 kB[22m[1m[22m
|
|
125
|
+
[2mdist/[22m[36mapi/captcha/submitPuzzleCaptchaSolution.js [39m[1m[2m 2.92 kB[22m[1m[22m
|
|
126
126
|
[2mdist/[22m[36mapi/admin/apiAdminRoutesProvider.js [39m[1m[2m 2.99 kB[22m[1m[22m
|
|
127
127
|
[2mdist/[22m[36mapi/captcha/submitImageCaptchaSolution.js [39m[1m[2m 3.07 kB[22m[1m[22m
|
|
128
128
|
[2mdist/[22m[36mapi/captcha/getFrictionlessCaptchaChallenge/accessPolicy.js [39m[1m[2m 3.59 kB[22m[1m[22m
|
|
129
129
|
[2mdist/[22m[36mapi/domainMiddleware.js [39m[1m[2m 3.71 kB[22m[1m[22m
|
|
130
130
|
[2mdist/[22m[36mservices/ipComparison.js [39m[1m[2m 4.00 kB[22m[1m[22m
|
|
131
131
|
[2mdist/[22m[36mtasks/spam/checkSpamEmail.js [39m[1m[2m 4.26 kB[22m[1m[22m
|
|
132
|
-
[2mdist/[22m[36mapi/captcha/submitPoWCaptchaSolution.js [39m[1m[2m 5.09 kB[22m[1m[22m
|
|
133
132
|
[2mdist/[22m[36mtasks/tasks.js [39m[1m[2m 5.15 kB[22m[1m[22m
|
|
133
|
+
[2mdist/[22m[36mapi/captcha/submitPoWCaptchaSolution.js [39m[1m[2m 5.24 kB[22m[1m[22m
|
|
134
134
|
[2mdist/[22m[36mutil/usageCounters.js [39m[1m[2m 5.69 kB[22m[1m[22m
|
|
135
135
|
[2mdist/[22m[36mapi/captcha/getImageCaptchaChallenge.js [39m[1m[2m 5.81 kB[22m[1m[22m
|
|
136
|
-
[2mdist/[22m[36mapi/blacklistRequestInspector.js [39m[1m[2m 5.87 kB[22m[1m[22m
|
|
137
136
|
[2mdist/[22m[36mapi/captcha/getPoWCaptchaChallenge.js [39m[1m[2m 6.00 kB[22m[1m[22m
|
|
138
137
|
[2mdist/[22m[36mapi/captcha/getPuzzleCaptchaChallenge.js [39m[1m[2m 6.17 kB[22m[1m[22m
|
|
139
138
|
[2mdist/[22m[36mapi/startProviderApi.js [39m[1m[2m 7.65 kB[22m[1m[22m
|
|
140
139
|
[2mdist/[22m[36mapi/captcha/getFrictionlessCaptchaChallenge/decisionMachine.js [39m[1m[2m 9.17 kB[22m[1m[22m
|
|
140
|
+
[2mdist/[22m[36mapi/blacklistRequestInspector.js [39m[1m[2m 9.75 kB[22m[1m[22m
|
|
141
141
|
[2mdist/[22m[36mapi/captcha/getFrictionlessCaptchaChallenge/handler.js [39m[1m[2m 9.76 kB[22m[1m[22m
|
|
142
142
|
[2mdist/[22m[36mtasks/decisionMachine/decisionMachineRunner.js [39m[1m[2m10.14 kB[22m[1m[22m
|
|
143
143
|
[2mdist/[22m[36mapi/verify.js [39m[1m[2m10.44 kB[22m[1m[22m
|
|
@@ -151,7 +151,7 @@ rendering chunks...
|
|
|
151
151
|
[2mdist/[22m[36mtasks/powCaptcha/powTasks.js [39m[1m[2m21.98 kB[22m[1m[22m
|
|
152
152
|
[2mdist/[22m[36mtasks/imgCaptcha/imgCaptchaTasks.js [39m[1m[2m28.04 kB[22m[1m[22m
|
|
153
153
|
[2mdist/[22m[36mtasks/detection/decodePayload.js [39m[1m[2m44.24 kB[22m[1m[22m
|
|
154
|
-
[32m✓ built in 1.
|
|
154
|
+
[32m✓ built in 1.00s[39m
|
|
155
155
|
[copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodeBehavior.js to /home/runner/work/captcha/captcha/packages/provider/dist/tasks/detection/decodeBehavior.js
|
|
156
156
|
[copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodePayload.js to /home/runner/work/captcha/captcha/packages/provider/dist/tasks/detection/decodePayload.js
|
|
157
157
|
[copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodeSimd.js to /home/runner/work/captcha/captcha/packages/provider/dist/tasks/detection/decodeSimd.js
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,61 @@
|
|
|
1
1
|
# @prosopo/provider
|
|
2
2
|
|
|
3
|
+
## 4.11.0
|
|
4
|
+
### Minor Changes
|
|
5
|
+
|
|
6
|
+
- 55b1388: Bit-level granular PoW difficulty via target-threshold check. `solvePoW` (client) and `validateSolution` (server) now compare the hash as a 256-bit big-endian integer against `target = 2^(256 - round(4 * difficulty))`, shared via `targetForDifficulty` / `hashMeetsDifficulty` in `@prosopo/util`. Integer difficulties produce *identical* behaviour to the legacy hex-prefix check (d=4 ≡ 16 leading zero bits ≡ threshold 2^240), so existing clients, configs, anomaly detectors, and stored records are unchanged. Fractional values quantise to bit-level granularity: each 0.25 step ≡ 1 bit ≡ 2× work, so providers can tune d=4.25, d=4.5, d=4.75 to fill the 16× gap between today's d=4 and d=5 — useful for landing on a sensible mobile UX. `powDifficulty` in `ClientSettingsSchema` and `RoutingMachineOutputSchema` drops `.int()`; wire format (nonce as `u32`, difficulty as `number`) is unchanged.
|
|
7
|
+
|
|
8
|
+
### Patch Changes
|
|
9
|
+
|
|
10
|
+
- Updated dependencies [55b1388]
|
|
11
|
+
- Updated dependencies [44eaebf]
|
|
12
|
+
- @prosopo/util@3.3.0
|
|
13
|
+
- @prosopo/types@4.6.0
|
|
14
|
+
- @prosopo/database@3.14.1
|
|
15
|
+
- @prosopo/types-database@4.10.1
|
|
16
|
+
- @prosopo/datasets@3.1.33
|
|
17
|
+
- @prosopo/keyring@2.9.39
|
|
18
|
+
- @prosopo/logger@1.0.3
|
|
19
|
+
- @prosopo/user-access-policy@3.10.1
|
|
20
|
+
- @prosopo/api@3.4.13
|
|
21
|
+
- @prosopo/api-express-router@3.1.24
|
|
22
|
+
- @prosopo/common@3.1.39
|
|
23
|
+
- @prosopo/env@3.5.14
|
|
24
|
+
- @prosopo/ipinfo@0.2.19
|
|
25
|
+
- @prosopo/load-balancer@2.9.15
|
|
26
|
+
- @prosopo/types-env@2.9.23
|
|
27
|
+
- @prosopo/api-route@2.6.47
|
|
28
|
+
- @prosopo/redis-client@1.0.24
|
|
29
|
+
|
|
30
|
+
## 4.10.0
|
|
31
|
+
### Minor Changes
|
|
32
|
+
|
|
33
|
+
- 9b91e85: Log + persist access-policy block decisions. When `blockMiddleware` 401s a request, the inspector now emits a structured `"Access policy block"` log line carrying the matched rule's identity (`ruleHash`, `ruleType`, `ruleDescription`, `policyType`) and the request's user-scope (ja4 / ip / userAgent / userId / countryCode / asn), and writes a synthetic `Session` record with `blocked: true`, `deleted: true`, `reason: ACCESS_POLICY_BLOCK`, and the same rule fields surfaced on three new optional columns (`ruleHash`, `ruleType`, `ruleDescription`). Persistence is fire-and-forget and any Mongo failure is swallowed-and-logged so the 401 response is never delayed. The new fields are gated by `blocked: true` so legit sessions stay untouched, and two sparse indexes (`{siteKey, blocked, createdAt}`, `{ruleHash}`) keep the per-rule and per-client block aggregations the Traffic page will query off the existing sessions collection without bloating the index on normal traffic.
|
|
34
|
+
- c1c7998: Server-side specificity rank for the access-rule lookup. Strict-match callers (the `blockMiddleware` and the verify-time `checkForHardBlock`) now issue one `FT.AGGREGATE` with `APPLY exists()` for specificity, `APPLY @type == "block"` for the severity tiebreak, `SORTBY @_rank DESC`, and `LIMIT 0 20`. Node receives at most 20 fully-populated rules — no follow-up HGETALL per candidate, no JS-side rank, no silent truncation past the LIMIT (which only applies after Redis has scored every candidate the strict filter returned).
|
|
35
|
+
|
|
36
|
+
Supersedes both the v3.6.38 regression (`b520cd94c` — FT.AGGREGATE WITHCURSOR materialising ~1190 hashes per request, pegged provider1 at ~125% CPU on pronode10) and the 3.6.38-hotfix1 shape that reverted to FT.SEARCH (re-opened the 1000-candidate silent-truncation bug). The greedy/admin path (`matchingFieldsOnly=false`) keeps the FT.AGGREGATE+CURSOR approach with a generous `GREEDY_MAX_CANDIDATES` cap since those callers do not run on the per-request hot path.
|
|
37
|
+
|
|
38
|
+
`packages/provider/src/api/blacklistRequestInspector.ts` flips `getPrioritisedAccessRule` to `matchingFieldsOnly: true` to engage the new path. The defensive JS `rankCandidateRules` is kept so any drift between the Redis-side score and the JS semantics surfaces as ordering, not as letting traffic through. New benchmark integration test seeds 10k rules across a realistic specificity distribution and asserts p50 < 80ms / p99 < 250ms over 200 lookups; local measurement is steady at p50 ≈ 20ms, p99 ≈ 24ms.
|
|
39
|
+
- c80a05b: Split `solutionTimeout` (challenge issuance → user submission) from `verifiedTimeout` (submission → dapp's /verify call) on `UserSettings`. Historically `verifiedTimeout` gated both windows in `verifyRecency` (at /pow|puzzle/solution submit) and in `serverVerifyPowCaptchaSolution` (at /verify), even though its doc comment only described the latter. Adds `solutionTimeout` to `ClientSettingsSchema` (zod) and `UserSettingsSchema` (mongoose) with `DEFAULT_POW_CAPTCHA_SOLUTION_TIMEOUT` (60s) as default. `submitPoWCaptchaSolution` and `submitPuzzleCaptchaSolution` now use `solutionTimeout` for the recency check and fall back to `verifiedTimeout` for pre-existing client records so behaviour is preserved until those records are backfilled. The `/verify` path is unchanged. Operators can now tighten `verifiedTimeout` (e.g. 20s) to invalidate stale solutions at verify time without also shrinking the user's solve budget.
|
|
40
|
+
|
|
41
|
+
### Patch Changes
|
|
42
|
+
|
|
43
|
+
- Updated dependencies [9b91e85]
|
|
44
|
+
- Updated dependencies [c1c7998]
|
|
45
|
+
- Updated dependencies [c80a05b]
|
|
46
|
+
- @prosopo/database@3.14.0
|
|
47
|
+
- @prosopo/types@4.5.0
|
|
48
|
+
- @prosopo/types-database@4.10.0
|
|
49
|
+
- @prosopo/user-access-policy@3.10.0
|
|
50
|
+
- @prosopo/env@3.5.13
|
|
51
|
+
- @prosopo/api@3.4.12
|
|
52
|
+
- @prosopo/api-express-router@3.1.23
|
|
53
|
+
- @prosopo/datasets@3.1.32
|
|
54
|
+
- @prosopo/ipinfo@0.2.18
|
|
55
|
+
- @prosopo/keyring@2.9.38
|
|
56
|
+
- @prosopo/load-balancer@2.9.14
|
|
57
|
+
- @prosopo/types-env@2.9.22
|
|
58
|
+
|
|
3
59
|
## 4.9.2
|
|
4
60
|
### Patch Changes
|
|
5
61
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiRemoveDetectorKeyEndpoint.d.ts","sourceRoot":"","sources":["../../../src/api/admin/apiRemoveDetectorKeyEndpoint.ts"],"names":[],"mappings":"AAcA,OAAO,EACN,KAAK,WAAW,EAChB,KAAK,mBAAmB,EAExB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,KAAK,MAAM,EAAa,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAE3E,KAAK,yBAAyB,GAAG,OAAO,yBAAyB,CAAC;AAElE,cAAM,4BACL,YAAW,WAAW,CAAC,yBAAyB,CAAC;IAE9B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBAAjB,iBAAiB,EAAE,iBAAiB;IAElE,cAAc,CACnB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC,EACxC,MAAM,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,CAAC;IA0BxB,oBAAoB;
|
|
1
|
+
{"version":3,"file":"apiRemoveDetectorKeyEndpoint.d.ts","sourceRoot":"","sources":["../../../src/api/admin/apiRemoveDetectorKeyEndpoint.ts"],"names":[],"mappings":"AAcA,OAAO,EACN,KAAK,WAAW,EAChB,KAAK,mBAAmB,EAExB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,KAAK,MAAM,EAAa,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAE3E,KAAK,yBAAyB,GAAG,OAAO,yBAAyB,CAAC;AAElE,cAAM,4BACL,YAAW,WAAW,CAAC,yBAAyB,CAAC;IAE9B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBAAjB,iBAAiB,EAAE,iBAAiB;IAElE,cAAc,CACnB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC,EACxC,MAAM,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,CAAC;IA0BxB,oBAAoB;qBAMmrlG,EAAG,SAAS;;;;;;;;;CAH1tlG;AAED,OAAO,EAAE,4BAA4B,EAAE,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Logger } from "@prosopo/logger";
|
|
2
2
|
import { type IPInfoResponse } from "@prosopo/types";
|
|
3
|
+
import type { IProviderDatabase } from "@prosopo/types-database";
|
|
3
4
|
import { type AccessRule, type AccessRulesStorage, type UserScope, type UserScopeRecord } from "@prosopo/user-access-policy";
|
|
4
5
|
import type { NextFunction, Request, Response } from "express";
|
|
5
6
|
export declare const getRequestUserScope: (requestHeaders: Record<string, unknown>, ja4?: string, ip?: string, user?: string, headHash?: string, coords?: string, countryCode?: string, asn?: number) => Pick<UserScopeRecord, "userId" | "ja4Hash" | "userAgent" | "ip" | "headHash" | "coords" | "countryCode" | "asn">;
|
|
@@ -8,9 +9,11 @@ export declare const getPrioritisedAccessRule: (userAccessRulesStorage: AccessRu
|
|
|
8
9
|
export declare class BlacklistRequestInspector {
|
|
9
10
|
private readonly userAccessRulesStorage;
|
|
10
11
|
private readonly environmentReadinessWaiter;
|
|
11
|
-
|
|
12
|
+
private readonly db?;
|
|
13
|
+
constructor(userAccessRulesStorage: AccessRulesStorage, environmentReadinessWaiter: () => Promise<void>, db?: IProviderDatabase | undefined);
|
|
12
14
|
abortRequestForBlockedUsers(request: Request, res: Response, next: NextFunction): Promise<void>;
|
|
13
15
|
shouldAbortRequest(requestedRoute: string, rawIp: string, ja4: string, requestHeaders: Record<string, unknown>, requestBody: Record<string, unknown>, logger: Logger, ipInfo?: IPInfoResponse): Promise<boolean>;
|
|
16
|
+
private recordBlockDecision;
|
|
14
17
|
protected isApiUnrelatedRoute(url: string): boolean;
|
|
15
18
|
protected extractIdsFromRequest(requestHeaders: Record<string, unknown>, requestBody: Record<string, unknown>): {
|
|
16
19
|
userId: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blacklistRequestInspector.d.ts","sourceRoot":"","sources":["../../src/api/blacklistRequestInspector.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"blacklistRequestInspector.d.ts","sourceRoot":"","sources":["../../src/api/blacklistRequestInspector.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAKN,KAAK,cAAc,EAInB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAEN,KAAK,UAAU,EACf,KAAK,kBAAkB,EAEvB,KAAK,SAAS,EACd,KAAK,eAAe,EAGpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAG/D,eAAO,MAAM,mBAAmB,mBACf,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,QACjC,MAAM,OACP,MAAM,SACJ,MAAM,aACF,MAAM,WACR,MAAM,gBACD,MAAM,QACd,MAAM,KACV,IAAI,CACN,eAAe,EACb,QAAQ,GACR,SAAS,GACT,WAAW,GACX,IAAI,GACJ,UAAU,GACV,QAAQ,GACR,aAAa,GACb,KAAK,CAgBP,CAAC;AAwIF,eAAO,MAAM,kBAAkB,UACvB,UAAU,EAAE,WACV,SAAS,mBACD,MAAM,GAAG,SAAS,KACjC,UAAU,EAWT,CAAC;AAyBL,eAAO,MAAM,wBAAwB,2BACZ,kBAAkB,aAC/B,SAAS,GAAG,eAAe,aAC3B,MAAM,KACf,OAAO,CAAC,UAAU,EAAE,CAqBtB,CAAC;AAEF,qBAAa,yBAAyB;IAEpC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,0BAA0B;IAM3C,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAPH,sBAAsB,EAAE,kBAAkB,EAC1C,0BAA0B,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAM/C,EAAE,CAAC,EAAE,iBAAiB,YAAA;IAG3B,2BAA2B,CACvC,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GAChB,OAAO,CAAC,IAAI,CAAC;IAyBH,kBAAkB,CAC9B,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,cAAc,GACrB,OAAO,CAAC,OAAO,CAAC;IAwGnB,OAAO,CAAC,mBAAmB;IAyF3B,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAInD,SAAS,CAAC,qBAAqB,CAC9B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC;QACF,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;KAC7B;IAcD,SAAS,CAAC,cAAc,CACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,GAAG,EAAE,MAAM,GACT,OAAO;CAGV"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { ResultReason, CaptchaStatus, FrictionlessReason, CaptchaType, ApiPrefix } from "@prosopo/types";
|
|
3
|
+
import { AccessPolicyType, userScopeInput, FilterScopeMatch, makeAccessRuleHash } from "@prosopo/user-access-policy";
|
|
4
|
+
import { getCompositeIpAddress } from "../compositeIpAddress.js";
|
|
3
5
|
const getRequestUserScope = (requestHeaders, ja4, ip, user, headHash, coords, countryCode, asn) => {
|
|
4
6
|
const userAgent = requestHeaders["user-agent"] ? requestHeaders["user-agent"].toString() : void 0;
|
|
5
7
|
return {
|
|
@@ -23,6 +25,31 @@ const SCALAR_USER_SCOPE_FIELDS = [
|
|
|
23
25
|
"countryCode",
|
|
24
26
|
"asn"
|
|
25
27
|
];
|
|
28
|
+
const deriveRuleType = (rule) => {
|
|
29
|
+
const fields = [];
|
|
30
|
+
for (const f of SCALAR_USER_SCOPE_FIELDS) {
|
|
31
|
+
if (rule[f] !== void 0) {
|
|
32
|
+
fields.push(f);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (rule.numericIp !== void 0) {
|
|
36
|
+
fields.push("ip");
|
|
37
|
+
} else if (rule.numericIpMaskMin !== void 0 && rule.numericIpMaskMax !== void 0) {
|
|
38
|
+
fields.push("ipMask");
|
|
39
|
+
}
|
|
40
|
+
return fields;
|
|
41
|
+
};
|
|
42
|
+
const sanitizeRequestHeaders = (headers) => {
|
|
43
|
+
const out = {};
|
|
44
|
+
for (const [k, v] of Object.entries(headers)) {
|
|
45
|
+
if (typeof v === "string") {
|
|
46
|
+
out[k] = v;
|
|
47
|
+
} else if (Array.isArray(v)) {
|
|
48
|
+
out[k] = v.map((x) => String(x)).join(", ");
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return out;
|
|
52
|
+
};
|
|
26
53
|
const ruleHasIpConstraint = (rule) => rule.numericIp !== void 0 || rule.numericIpMaskMin !== void 0 && rule.numericIpMaskMax !== void 0;
|
|
27
54
|
const ruleIpMatchesRequest = (rule, requestIp) => {
|
|
28
55
|
if (!ruleHasIpConstraint(rule)) {
|
|
@@ -88,15 +115,17 @@ const getPrioritisedAccessRule = async (userAccessRulesStorage, userScope, clien
|
|
|
88
115
|
};
|
|
89
116
|
const candidates = await userAccessRulesStorage.findRules(
|
|
90
117
|
filter,
|
|
91
|
-
|
|
118
|
+
true,
|
|
119
|
+
// matchingFieldsOnly — engages server-side specificity rank
|
|
92
120
|
true
|
|
93
121
|
);
|
|
94
122
|
return rankCandidateRules(candidates, parsedUserScope, clientId);
|
|
95
123
|
};
|
|
96
124
|
class BlacklistRequestInspector {
|
|
97
|
-
constructor(userAccessRulesStorage, environmentReadinessWaiter) {
|
|
125
|
+
constructor(userAccessRulesStorage, environmentReadinessWaiter, db) {
|
|
98
126
|
this.userAccessRulesStorage = userAccessRulesStorage;
|
|
99
127
|
this.environmentReadinessWaiter = environmentReadinessWaiter;
|
|
128
|
+
this.db = db;
|
|
100
129
|
}
|
|
101
130
|
async abortRequestForBlockedUsers(request, res, next) {
|
|
102
131
|
const rawIp = request.ip || "";
|
|
@@ -164,7 +193,24 @@ class BlacklistRequestInspector {
|
|
|
164
193
|
return false;
|
|
165
194
|
}
|
|
166
195
|
const accessPolicy = enforceable[0];
|
|
167
|
-
|
|
196
|
+
const isBlock = AccessPolicyType.Block === accessPolicy.type;
|
|
197
|
+
if (isBlock) {
|
|
198
|
+
this.recordBlockDecision(
|
|
199
|
+
accessPolicy,
|
|
200
|
+
{
|
|
201
|
+
userId,
|
|
202
|
+
clientId,
|
|
203
|
+
rawIp,
|
|
204
|
+
ja4,
|
|
205
|
+
requestHeaders,
|
|
206
|
+
ipInfo,
|
|
207
|
+
countryCode,
|
|
208
|
+
asn
|
|
209
|
+
},
|
|
210
|
+
logger
|
|
211
|
+
);
|
|
212
|
+
}
|
|
213
|
+
return isBlock;
|
|
168
214
|
} catch (err) {
|
|
169
215
|
logger.error(() => ({
|
|
170
216
|
err,
|
|
@@ -173,6 +219,81 @@ class BlacklistRequestInspector {
|
|
|
173
219
|
return true;
|
|
174
220
|
}
|
|
175
221
|
}
|
|
222
|
+
/**
|
|
223
|
+
* Emit a structured log line and (if a DB is wired) persist a synthetic
|
|
224
|
+
* Session record for the request we're about to 401. Fire-and-forget on
|
|
225
|
+
* the Mongo side — the structured log line is the source of truth and
|
|
226
|
+
* the 401 response is never delayed by a persistence failure.
|
|
227
|
+
*
|
|
228
|
+
* Carries the matched rule's identity (hash + ruleType + description)
|
|
229
|
+
* so the Traffic page can surface "what's blocking traffic for this
|
|
230
|
+
* site" without re-reading the rules collection.
|
|
231
|
+
*/
|
|
232
|
+
recordBlockDecision(accessPolicy, ctx, logger) {
|
|
233
|
+
const ruleHash = makeAccessRuleHash(accessPolicy);
|
|
234
|
+
const ruleType = deriveRuleType(accessPolicy);
|
|
235
|
+
const ruleDescription = accessPolicy.description;
|
|
236
|
+
const userAgent = typeof ctx.requestHeaders["user-agent"] === "string" ? ctx.requestHeaders["user-agent"] : void 0;
|
|
237
|
+
logger.info(() => ({
|
|
238
|
+
msg: "Access policy block",
|
|
239
|
+
data: {
|
|
240
|
+
ruleHash,
|
|
241
|
+
ruleType,
|
|
242
|
+
ruleDescription,
|
|
243
|
+
policyType: accessPolicy.type,
|
|
244
|
+
clientId: ctx.clientId,
|
|
245
|
+
userScope: {
|
|
246
|
+
userId: ctx.userId,
|
|
247
|
+
ja4: ctx.ja4,
|
|
248
|
+
ip: ctx.rawIp,
|
|
249
|
+
userAgent,
|
|
250
|
+
countryCode: ctx.countryCode,
|
|
251
|
+
asn: ctx.asn
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}));
|
|
255
|
+
if (!this.db) {
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
const ipAddress = ctx.rawIp ? getCompositeIpAddress(ctx.rawIp) : void 0;
|
|
259
|
+
if (!ipAddress) {
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
const headers = sanitizeRequestHeaders(ctx.requestHeaders);
|
|
263
|
+
const session = {
|
|
264
|
+
sessionId: `blocked-${randomUUID()}`,
|
|
265
|
+
createdAt: /* @__PURE__ */ new Date(),
|
|
266
|
+
// Sentinel values for schema-required fields the blocked request
|
|
267
|
+
// never reached the point of populating.
|
|
268
|
+
token: "",
|
|
269
|
+
score: 1,
|
|
270
|
+
threshold: 0,
|
|
271
|
+
scoreComponents: { baseScore: 1 },
|
|
272
|
+
providerSelectEntropy: 0,
|
|
273
|
+
captchaType: CaptchaType.frictionless,
|
|
274
|
+
webView: false,
|
|
275
|
+
iFrame: false,
|
|
276
|
+
decryptedHeadHash: "",
|
|
277
|
+
// Real data the inspector did collect.
|
|
278
|
+
siteKey: ctx.clientId,
|
|
279
|
+
ipAddress,
|
|
280
|
+
ipInfo: ctx.ipInfo,
|
|
281
|
+
headers,
|
|
282
|
+
reason: FrictionlessReason.ACCESS_POLICY_BLOCK,
|
|
283
|
+
result: {
|
|
284
|
+
status: CaptchaStatus.disapproved,
|
|
285
|
+
reason: ResultReason.ACCESS_POLICY_BLOCK
|
|
286
|
+
},
|
|
287
|
+
// Rule identity — the whole point of writing this record.
|
|
288
|
+
ruleHash,
|
|
289
|
+
ruleType,
|
|
290
|
+
ruleDescription
|
|
291
|
+
// blocked + deleted are stamped inside storeBlockedSession so
|
|
292
|
+
// the synthetic record is unmistakably a block-middleware
|
|
293
|
+
// artefact and can never be picked up by the captcha flow.
|
|
294
|
+
};
|
|
295
|
+
void this.db.storeBlockedSession(session);
|
|
296
|
+
}
|
|
176
297
|
isApiUnrelatedRoute(url) {
|
|
177
298
|
return !url.includes(ApiPrefix);
|
|
178
299
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blacklistRequestInspector.js","sourceRoot":"","sources":["../../src/api/blacklistRequestInspector.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"blacklistRequestInspector.js","sourceRoot":"","sources":["../../src/api/blacklistRequestInspector.ts"],"names":[],"mappings":"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"}
|
package/dist/api/block.js
CHANGED
|
@@ -5,10 +5,12 @@ const blockMiddleware = (providerEnvironment) => {
|
|
|
5
5
|
return (req, res, next) => {
|
|
6
6
|
if (!blacklistRequestInspector) {
|
|
7
7
|
try {
|
|
8
|
-
const
|
|
8
|
+
const db = providerEnvironment.getDb();
|
|
9
|
+
const userAccessRulesStorage = db.getUserAccessRulesStorage();
|
|
9
10
|
blacklistRequestInspector = new BlacklistRequestInspector(
|
|
10
11
|
userAccessRulesStorage,
|
|
11
|
-
environmentReadinessWaiter
|
|
12
|
+
environmentReadinessWaiter,
|
|
13
|
+
db
|
|
12
14
|
);
|
|
13
15
|
} catch {
|
|
14
16
|
return next();
|
package/dist/api/block.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block.js","sourceRoot":"","sources":["../../src/api/block.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,mBAAwC,EAAE,EAAE;IAK3E,IAAI,yBAAgE,CAAC;IAErE,MAAM,0BAA0B,GAC/B,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAEvD,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QAC1D,IAAI,CAAC,yBAAyB,EAAE,CAAC;YAChC,IAAI,CAAC;gBACJ,MAAM,
|
|
1
|
+
{"version":3,"file":"block.js","sourceRoot":"","sources":["../../src/api/block.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,mBAAwC,EAAE,EAAE;IAK3E,IAAI,yBAAgE,CAAC;IAErE,MAAM,0BAA0B,GAC/B,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAEvD,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QAC1D,IAAI,CAAC,yBAAyB,EAAE,CAAC;YAChC,IAAI,CAAC;gBACJ,MAAM,EAAE,GAAG,mBAAmB,CAAC,KAAK,EAAE,CAAC;gBACvC,MAAM,sBAAsB,GAAG,EAAE,CAAC,yBAAyB,EAAE,CAAC;gBAC9D,yBAAyB,GAAG,IAAI,yBAAyB,CACxD,sBAAsB,EACtB,0BAA0B,EAC1B,EAAE,CACF,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBAER,OAAO,IAAI,EAAE,CAAC;YACf,CAAC;QACF,CAAC;QACD,OAAO,yBAAyB,CAAC,2BAA2B,CAC3D,GAAG,EACH,GAAG,EACH,IAAI,CACJ,CAAC;IACH,CAAC,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submitPoWCaptchaSolution.d.ts","sourceRoot":"","sources":["../../../src/api/captcha/submitPoWCaptchaSolution.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;8BAOpC,mBAAmB,WAEjC,OAAO,GAAG,gBAAgB,OAC1B,QAAQ,QACP,YAAY;AAJpB,
|
|
1
|
+
{"version":3,"file":"submitPoWCaptchaSolution.d.ts","sourceRoot":"","sources":["../../../src/api/captcha/submitPoWCaptchaSolution.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;8BAOpC,mBAAmB,WAEjC,OAAO,GAAG,gBAAgB,OAC1B,QAAQ,QACP,YAAY;AAJpB,wBAoJG"}
|
|
@@ -77,11 +77,13 @@ const submitPoWCaptchaSolution = (env) => async (req, res, next) => {
|
|
|
77
77
|
...req.ja4 && { ja4: req.ja4 }
|
|
78
78
|
}
|
|
79
79
|
});
|
|
80
|
+
const persistedSolutionTimeout = clientRecord.settings.solutionTimeout;
|
|
81
|
+
const submitWindowMs = persistedSolutionTimeout ?? clientRecord.settings.verifiedTimeout;
|
|
80
82
|
const result = await tasks.powCaptchaManager.verifyPowCaptchaSolution(
|
|
81
83
|
challenge,
|
|
82
84
|
signature.provider.challenge,
|
|
83
85
|
nonce,
|
|
84
|
-
|
|
86
|
+
submitWindowMs,
|
|
85
87
|
signature.user.timestamp,
|
|
86
88
|
getIPAddress(req.ip || ""),
|
|
87
89
|
flatHeaders,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submitPoWCaptchaSolution.js","sourceRoot":"","sources":["../../../src/api/captcha/submitPoWCaptchaSolution.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"submitPoWCaptchaSolution.js","sourceRoot":"","sources":["../../../src/api/captcha/submitPoWCaptchaSolution.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submitPuzzleCaptchaSolution.d.ts","sourceRoot":"","sources":["../../../src/api/captcha/submitPuzzleCaptchaSolution.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;8BAMpC,mBAAmB,WAEjC,OAAO,GAAG,gBAAgB,OAC1B,QAAQ,QACP,YAAY;AAJpB,
|
|
1
|
+
{"version":3,"file":"submitPuzzleCaptchaSolution.d.ts","sourceRoot":"","sources":["../../../src/api/captcha/submitPuzzleCaptchaSolution.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;8BAMpC,mBAAmB,WAEjC,OAAO,GAAG,gBAAgB,OAC1B,QAAQ,QACP,YAAY;AAJpB,wBA6HG"}
|