@browsercore/profiles 0.2.1 → 0.2.2
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/dist/profiles/chrome.d.ts +16 -1
- package/dist/profiles/chrome.d.ts.map +1 -1
- package/dist/profiles/chrome.js +14 -8
- package/dist/profiles/chrome.js.map +1 -1
- package/dist/profiles/edge.d.ts +7 -6
- package/dist/profiles/edge.d.ts.map +1 -1
- package/dist/profiles/edge.js +12 -13
- package/dist/profiles/edge.js.map +1 -1
- package/package.json +1 -1
|
@@ -15,11 +15,26 @@
|
|
|
15
15
|
*
|
|
16
16
|
* Chrome permutes its extension order at runtime (tls_permute_extensions), so
|
|
17
17
|
* `extensionOrder` stores the canonical pre-permutation seed that
|
|
18
|
-
* curl-impersonate configures
|
|
18
|
+
* curl-impersonate configures. The order was verified via a curl_cffi capture
|
|
19
|
+
* against tls.peet.ws, which reports the normalized extension sequence.
|
|
19
20
|
* GREASE slots are tracked separately via the `grease` flag; the runtime
|
|
20
21
|
* randomizes the actual 0x?a?a values per RFC 8701.
|
|
21
22
|
*/
|
|
22
23
|
import type { BrowserProfile } from "../types.js";
|
|
24
|
+
/**
|
|
25
|
+
* Canonical Chrome extension order (wire order, GREASE slots excluded).
|
|
26
|
+
*
|
|
27
|
+
* Captured via curl_cffi (curl-impersonate) against tls.peet.ws, which reports
|
|
28
|
+
* the normalized order Chrome's BoringSSL emits before runtime extension
|
|
29
|
+
* permutation (tls_permute_extensions). Notable: signature_algorithms (13)
|
|
30
|
+
* leads, server_name (0) sits mid-list, and supported_groups (10) / ALPN (16)
|
|
31
|
+
* trail near the end. The only version-dependent slot is application_settings:
|
|
32
|
+
* 17513 (application_settings_old) through chrome ~131, then 17613
|
|
33
|
+
* (application_settings) from chrome ~132 onward.
|
|
34
|
+
*
|
|
35
|
+
* Shared by Edge (Chromium-based) — see {@link ../profiles/edge.ts}.
|
|
36
|
+
*/
|
|
37
|
+
export declare const chromeExtensionOrder: (appSettings: number) => readonly number[];
|
|
23
38
|
export declare const chrome120: BrowserProfile;
|
|
24
39
|
export declare const chrome128: BrowserProfile;
|
|
25
40
|
export declare const chrome140: BrowserProfile;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../../src/profiles/chrome.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../../src/profiles/chrome.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,aAAa,CAAC;AAK7D;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,oBAAoB,gBAAiB,MAAM,KAAG,SAAS,MAAM,EAEzE,CAAC;AAgFF,eAAO,MAAM,SAAS,EAAE,cA+BvB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,cA+BvB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,cA+BvB,CAAC;AAEF,eAAO,MAAM,cAAc;;;;CAIjB,CAAC"}
|
package/dist/profiles/chrome.js
CHANGED
|
@@ -15,22 +15,28 @@
|
|
|
15
15
|
*
|
|
16
16
|
* Chrome permutes its extension order at runtime (tls_permute_extensions), so
|
|
17
17
|
* `extensionOrder` stores the canonical pre-permutation seed that
|
|
18
|
-
* curl-impersonate configures
|
|
18
|
+
* curl-impersonate configures. The order was verified via a curl_cffi capture
|
|
19
|
+
* against tls.peet.ws, which reports the normalized extension sequence.
|
|
19
20
|
* GREASE slots are tracked separately via the `grease` flag; the runtime
|
|
20
21
|
* randomizes the actual 0x?a?a values per RFC 8701.
|
|
21
22
|
*/
|
|
22
23
|
/** TLS 1.3 GREASE placeholder cipher (0x?a?a) Chrome inserts at the top of the list. */
|
|
23
24
|
const GREASE = "TLS_GREASE_RESERVED_0";
|
|
24
25
|
/**
|
|
25
|
-
* Canonical
|
|
26
|
+
* Canonical Chrome extension order (wire order, GREASE slots excluded).
|
|
26
27
|
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
28
|
+
* Captured via curl_cffi (curl-impersonate) against tls.peet.ws, which reports
|
|
29
|
+
* the normalized order Chrome's BoringSSL emits before runtime extension
|
|
30
|
+
* permutation (tls_permute_extensions). Notable: signature_algorithms (13)
|
|
31
|
+
* leads, server_name (0) sits mid-list, and supported_groups (10) / ALPN (16)
|
|
32
|
+
* trail near the end. The only version-dependent slot is application_settings:
|
|
33
|
+
* 17513 (application_settings_old) through chrome ~131, then 17613
|
|
34
|
+
* (application_settings) from chrome ~132 onward.
|
|
35
|
+
*
|
|
36
|
+
* Shared by Edge (Chromium-based) — see {@link ../profiles/edge.ts}.
|
|
31
37
|
*/
|
|
32
|
-
const chromeExtensionOrder = (appSettings) => [
|
|
33
|
-
|
|
38
|
+
export const chromeExtensionOrder = (appSettings) => [
|
|
39
|
+
13, 65037, appSettings, 45, 18, 35, 27, 0, 5, 11, 23, 51, 43, 65281, 10, 16,
|
|
34
40
|
];
|
|
35
41
|
const chromeTlsBase = {
|
|
36
42
|
supportedVersions: ["TLS 1.3", "TLS 1.2"],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chrome.js","sourceRoot":"","sources":["../../src/profiles/chrome.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"chrome.js","sourceRoot":"","sources":["../../src/profiles/chrome.ts"],"names":[],"mappings":"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"}
|
package/dist/profiles/edge.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Microsoft Edge fingerprint definitions.
|
|
3
3
|
*
|
|
4
|
-
* Edge is Chromium-based, so its TLS fingerprint
|
|
5
|
-
*
|
|
6
|
-
* agent string
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
4
|
+
* Edge is Chromium-based, so its TLS fingerprint matches Chrome's — same GREASE
|
|
5
|
+
* behavior, same cipher families, and the same extension wire order. Edge
|
|
6
|
+
* differs only in the advertised user agent string and the `sec-ch-ua` brand
|
|
7
|
+
* list (includes "Microsoft Edge"). HTTP/2 settings track Chrome closely.
|
|
8
|
+
* Cipher / group / version / signature values mirror curl-impersonate's
|
|
9
|
+
* ground-truth signature; the extension order is shared verbatim with Chrome
|
|
10
|
+
* via {@link chromeExtensionOrder} (captured via curl_cffi against tls.peet.ws).
|
|
10
11
|
*/
|
|
11
12
|
import type { BrowserProfile } from "../types.js";
|
|
12
13
|
export declare const edge120: BrowserProfile;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edge.d.ts","sourceRoot":"","sources":["../../src/profiles/edge.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"edge.d.ts","sourceRoot":"","sources":["../../src/profiles/edge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,aAAa,CAAC;AAsF7D,eAAO,MAAM,OAAO,EAAE,cAmCrB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,cAmCrB,CAAC;AAEF,eAAO,MAAM,YAAY;;;CAGf,CAAC"}
|
package/dist/profiles/edge.js
CHANGED
|
@@ -1,25 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Microsoft Edge fingerprint definitions.
|
|
3
3
|
*
|
|
4
|
-
* Edge is Chromium-based, so its TLS fingerprint
|
|
5
|
-
*
|
|
6
|
-
* agent string
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
4
|
+
* Edge is Chromium-based, so its TLS fingerprint matches Chrome's — same GREASE
|
|
5
|
+
* behavior, same cipher families, and the same extension wire order. Edge
|
|
6
|
+
* differs only in the advertised user agent string and the `sec-ch-ua` brand
|
|
7
|
+
* list (includes "Microsoft Edge"). HTTP/2 settings track Chrome closely.
|
|
8
|
+
* Cipher / group / version / signature values mirror curl-impersonate's
|
|
9
|
+
* ground-truth signature; the extension order is shared verbatim with Chrome
|
|
10
|
+
* via {@link chromeExtensionOrder} (captured via curl_cffi against tls.peet.ws).
|
|
10
11
|
*/
|
|
12
|
+
import { chromeExtensionOrder } from "./chrome.js";
|
|
11
13
|
/** TLS 1.3 GREASE placeholder cipher (0x?a?a) Edge inserts at the top of the list. */
|
|
12
14
|
const GREASE = "TLS_GREASE_RESERVED_0";
|
|
13
15
|
/**
|
|
14
|
-
* Edge
|
|
15
|
-
*
|
|
16
|
-
*
|
|
16
|
+
* Edge shares Chrome's extension order (modern Chromium 120+ is the base for
|
|
17
|
+
* edge-120 / edge-128). Both Edge profiles use application_settings_old (17513),
|
|
18
|
+
* predating the 17613 switch that landed in Chrome ~132.
|
|
17
19
|
*/
|
|
18
|
-
const EDGE_EXTENSION_ORDER = [
|
|
19
|
-
0, 23, 65281, 10, 11, 35, 16, 5, 13, 18, 51, 45, 43, 27, 17513, 21,
|
|
20
|
-
];
|
|
21
20
|
const edgeTlsBase = {
|
|
22
|
-
extensionOrder:
|
|
21
|
+
extensionOrder: chromeExtensionOrder(17513),
|
|
23
22
|
supportedVersions: ["TLS 1.3", "TLS 1.2"],
|
|
24
23
|
keyShareGroups: ["x25519", "secp256r1", "secp384r1"],
|
|
25
24
|
signatureAlgorithms: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edge.js","sourceRoot":"","sources":["../../src/profiles/edge.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"edge.js","sourceRoot":"","sources":["../../src/profiles/edge.ts"],"names":[],"mappings":"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"}
|