@webdecoy/fcaptcha 1.18.0 → 1.19.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/detection.js +29 -8
- package/package.json +1 -1
package/detection.js
CHANGED
|
@@ -403,14 +403,35 @@ function checkJA3Fingerprint(ja3Hash) {
|
|
|
403
403
|
// and passed via a trusted header the server is configured to accept.
|
|
404
404
|
// Configure with: TRUSTED_JA4_HEADERS=cf-ja4,x-tls-ja4 (comma-separated).
|
|
405
405
|
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
406
|
+
// Observed automation fingerprints. Ships EMPTY, deliberately.
|
|
407
|
+
//
|
|
408
|
+
// JA4 format: t##d####_<cipher hash>_<extension+sigalg hash>
|
|
409
|
+
//
|
|
410
|
+
// # The placeholder that used to live here was wrong
|
|
411
|
+
//
|
|
412
|
+
// It read:
|
|
413
|
+
//
|
|
414
|
+
// 't13d1516h2_8daaf6152771_02713d6af862': 'Go default stdlib TLS'
|
|
415
|
+
//
|
|
416
|
+
// That is the canonical example from the JA4 specification, and it is **Chrome**,
|
|
417
|
+
// not Go. Measured against a real TLS listener with server-go's ComputeJA4:
|
|
418
|
+
//
|
|
419
|
+
// Chromium 141 t13i1515h2_8daaf6152771_806a8c22fdea
|
|
420
|
+
// Go stdlib t13i131000_f57a46bbacb6_e5728521abd4
|
|
421
|
+
// curl t13i4906h2_0d8feac7bc37_7395dae3b2f3
|
|
422
|
+
// node https t13i521000_b262b3658495_8e6e362c5eac
|
|
423
|
+
// python urllib t13i171000_ab0a1bf427ad_8e6e362c5eac
|
|
424
|
+
//
|
|
425
|
+
// The middle section hashes the cipher list, i.e. the TLS stack itself.
|
|
426
|
+
// 8daaf6152771 is Chrome's; Go's is f57a46bbacb6. Had anyone uncommented that
|
|
427
|
+
// line, every Chrome visitor would have been scored as automation at 0.8/0.9.
|
|
428
|
+
//
|
|
429
|
+
// # Why it stays empty
|
|
430
|
+
//
|
|
431
|
+
// A static hash list is defeated by rotating a fingerprint, and these values
|
|
432
|
+
// drift with every browser release. Populate it only from abuse you actually saw
|
|
433
|
+
// on your own deployment, and record where each fingerprint came from.
|
|
434
|
+
const KNOWN_BOT_JA4_HASHES = {};
|
|
414
435
|
|
|
415
436
|
function getTrustedJA4HeaderNames() {
|
|
416
437
|
const env = process.env.TRUSTED_JA4_HEADERS;
|