@browsercore/profiles 0.1.3 → 0.1.9
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/README.md +114 -11
- package/dist/codes.d.ts +40 -0
- package/dist/codes.d.ts.map +1 -0
- package/dist/codes.js +111 -0
- package/dist/codes.js.map +1 -0
- package/dist/diff.d.ts.map +1 -1
- package/dist/diff.js +11 -8
- package/dist/diff.js.map +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/profiles/chrome.d.ts +17 -4
- package/dist/profiles/chrome.d.ts.map +1 -1
- package/dist/profiles/chrome.js +68 -83
- package/dist/profiles/chrome.js.map +1 -1
- package/dist/profiles/edge.d.ts +2 -1
- package/dist/profiles/edge.d.ts.map +1 -1
- package/dist/profiles/edge.js +39 -41
- package/dist/profiles/edge.js.map +1 -1
- package/dist/profiles/firefox.d.ts +13 -3
- package/dist/profiles/firefox.d.ts.map +1 -1
- package/dist/profiles/firefox.js +48 -63
- package/dist/profiles/firefox.js.map +1 -1
- package/dist/profiles/safari.d.ts +6 -3
- package/dist/profiles/safari.d.ts.map +1 -1
- package/dist/profiles/safari.js +63 -46
- package/dist/profiles/safari.js.map +1 -1
- package/dist/registry.d.ts +4 -2
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +4 -2
- package/dist/registry.js.map +1 -1
- package/dist/utils.d.ts +2 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js.map +1 -1
- package/dist/validate.d.ts +8 -4
- package/dist/validate.d.ts.map +1 -1
- package/dist/validate.js +8 -62
- package/dist/validate.js.map +1 -1
- package/package.json +49 -44
package/dist/profiles/chrome.js
CHANGED
|
@@ -1,19 +1,39 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Chrome fingerprint definitions.
|
|
3
3
|
*
|
|
4
|
-
* TLS values
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* TLS values are byte-accurate against real curl-impersonate ClientHello
|
|
5
|
+
* captures. The authoritative ground truth is the lwthiker/curl-impersonate
|
|
6
|
+
* wire captures (testing-worktree/captures/_probe/output/chrome*.json) together
|
|
7
|
+
* with their reported ja3 / ja4 / peetprint fingerprints. Every value here is
|
|
8
|
+
* verified against those captures:
|
|
9
|
+
*
|
|
10
|
+
* - chrome-120: ja3 698f6d684588ddc1217dfb4454916129, peetprint
|
|
11
|
+
* 8ad9325e12f531d2983b78860de7b0ec (no post-quantum group).
|
|
12
|
+
* - chrome-124..130: X25519Kyber768 (0x6399) added to supported_groups.
|
|
13
|
+
* - chrome-131+: X25519MLKEM768 (0x11ec) replaces Kyber768; the
|
|
14
|
+
* application_settings extension moves from 17513 to 17613.
|
|
15
|
+
*
|
|
16
|
+
* Chrome permutes its extension order at runtime (tls_permute_extensions), so
|
|
17
|
+
* `extensionOrder` stores the canonical pre-permutation seed that
|
|
18
|
+
* curl-impersonate configures — matching the peetprint's normalized order.
|
|
19
|
+
* GREASE slots are tracked separately via the `grease` flag; the runtime
|
|
20
|
+
* randomizes the actual 0x?a?a values per RFC 8701.
|
|
8
21
|
*/
|
|
9
22
|
/** TLS 1.3 GREASE placeholder cipher (0x?a?a) Chrome inserts at the top of the list. */
|
|
10
23
|
const GREASE = "TLS_GREASE_RESERVED_0";
|
|
24
|
+
/**
|
|
25
|
+
* Canonical (pre-permutation) Chrome extension order.
|
|
26
|
+
*
|
|
27
|
+
* Mirrors the peetprint-normalized order `0-10-11-13-16-APP_SETTINGS-18-23-27-
|
|
28
|
+
* 35-43-45-5-51-65037-65281`. The only version-dependent slot is the
|
|
29
|
+
* application_settings extension: 17513 (application_settings_old) through
|
|
30
|
+
* chrome ~131, then 17613 (application_settings) from chrome ~132 onward.
|
|
31
|
+
*/
|
|
32
|
+
const chromeExtensionOrder = (appSettings) => [
|
|
33
|
+
0, 10, 11, 13, 16, appSettings, 18, 23, 27, 35, 43, 45, 5, 51, 65037, 65281,
|
|
34
|
+
];
|
|
11
35
|
const chromeTlsBase = {
|
|
12
|
-
extensionOrder: [
|
|
13
|
-
0, 10, 11, 13, 16, 17513, 18, 23, 27, 35, 41, 43, 45, 5, 51, 65281,
|
|
14
|
-
],
|
|
15
36
|
supportedVersions: ["TLS 1.3", "TLS 1.2"],
|
|
16
|
-
keyShareGroups: ["x25519", "secp256r1"],
|
|
17
37
|
signatureAlgorithms: [
|
|
18
38
|
"ecdsa_secp256r1_sha256",
|
|
19
39
|
"rsa_pss_rsae_sha256",
|
|
@@ -21,6 +41,8 @@ const chromeTlsBase = {
|
|
|
21
41
|
"ecdsa_secp384r1_sha384",
|
|
22
42
|
"rsa_pss_rsae_sha384",
|
|
23
43
|
"rsa_pkcs1_sha384",
|
|
44
|
+
"rsa_pss_rsae_sha512",
|
|
45
|
+
"rsa_pkcs1_sha512",
|
|
24
46
|
],
|
|
25
47
|
grease: true,
|
|
26
48
|
};
|
|
@@ -30,6 +52,14 @@ const chromeHttp2Base = {
|
|
|
30
52
|
headerTableSize: 65536,
|
|
31
53
|
weight: 256,
|
|
32
54
|
};
|
|
55
|
+
const chromeHttp2Settings = {
|
|
56
|
+
headerTableSize: 65536,
|
|
57
|
+
enablePush: false,
|
|
58
|
+
maxConcurrentStreams: 100,
|
|
59
|
+
initialWindowSize: 6291456,
|
|
60
|
+
maxFrameSize: 16384,
|
|
61
|
+
maxHeaderListSize: 262144,
|
|
62
|
+
};
|
|
33
63
|
const chromeHttp1Base = {
|
|
34
64
|
connection: "keep-alive",
|
|
35
65
|
acceptEncoding: "gzip, deflate, br",
|
|
@@ -50,40 +80,37 @@ const chromeHttp1Base = {
|
|
|
50
80
|
"accept-language",
|
|
51
81
|
],
|
|
52
82
|
};
|
|
83
|
+
const chromeCipherSuites = [
|
|
84
|
+
GREASE,
|
|
85
|
+
"TLS_AES_128_GCM_SHA256",
|
|
86
|
+
"TLS_AES_256_GCM_SHA384",
|
|
87
|
+
"TLS_CHACHA20_POLY1305_SHA256",
|
|
88
|
+
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
|
|
89
|
+
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
|
|
90
|
+
"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
|
|
91
|
+
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
|
|
92
|
+
"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256",
|
|
93
|
+
"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",
|
|
94
|
+
"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
|
|
95
|
+
"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",
|
|
96
|
+
"TLS_RSA_WITH_AES_128_GCM_SHA256",
|
|
97
|
+
"TLS_RSA_WITH_AES_256_GCM_SHA384",
|
|
98
|
+
"TLS_RSA_WITH_AES_128_CBC_SHA",
|
|
99
|
+
"TLS_RSA_WITH_AES_256_CBC_SHA",
|
|
100
|
+
];
|
|
53
101
|
export const chrome120 = {
|
|
54
102
|
id: "chrome-120",
|
|
55
103
|
name: "chrome",
|
|
56
104
|
version: "120.0.6099.71",
|
|
57
105
|
tls: {
|
|
58
106
|
...chromeTlsBase,
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
"TLS_AES_256_GCM_SHA384",
|
|
63
|
-
"TLS_CHACHA20_POLY1305_SHA256",
|
|
64
|
-
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
|
|
65
|
-
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
|
|
66
|
-
"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
|
|
67
|
-
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
|
|
68
|
-
"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256",
|
|
69
|
-
"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",
|
|
70
|
-
"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
|
|
71
|
-
"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",
|
|
72
|
-
"TLS_RSA_WITH_AES_128_GCM_SHA256",
|
|
73
|
-
"TLS_RSA_WITH_AES_256_GCM_SHA384",
|
|
74
|
-
"TLS_RSA_WITH_AES_128_CBC_SHA",
|
|
75
|
-
"TLS_RSA_WITH_AES_256_CBC_SHA",
|
|
76
|
-
],
|
|
107
|
+
extensionOrder: chromeExtensionOrder(17513),
|
|
108
|
+
keyShareGroups: ["x25519", "secp256r1", "secp384r1"],
|
|
109
|
+
cipherSuites: chromeCipherSuites,
|
|
77
110
|
},
|
|
78
111
|
http2: {
|
|
79
112
|
...chromeHttp2Base,
|
|
80
|
-
settings:
|
|
81
|
-
headerTableSize: 65536,
|
|
82
|
-
enablePush: false,
|
|
83
|
-
maxConcurrentStreams: 100,
|
|
84
|
-
initialWindowSize: 6291456,
|
|
85
|
-
maxFrameSize: 16384,
|
|
86
|
-
},
|
|
113
|
+
settings: chromeHttp2Settings,
|
|
87
114
|
},
|
|
88
115
|
http1: {
|
|
89
116
|
...chromeHttp1Base,
|
|
@@ -108,34 +135,13 @@ export const chrome128 = {
|
|
|
108
135
|
version: "128.0.6613.137",
|
|
109
136
|
tls: {
|
|
110
137
|
...chromeTlsBase,
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
"TLS_AES_256_GCM_SHA384",
|
|
115
|
-
"TLS_CHACHA20_POLY1305_SHA256",
|
|
116
|
-
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
|
|
117
|
-
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
|
|
118
|
-
"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
|
|
119
|
-
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
|
|
120
|
-
"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256",
|
|
121
|
-
"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",
|
|
122
|
-
"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
|
|
123
|
-
"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",
|
|
124
|
-
"TLS_RSA_WITH_AES_128_GCM_SHA256",
|
|
125
|
-
"TLS_RSA_WITH_AES_256_GCM_SHA384",
|
|
126
|
-
"TLS_RSA_WITH_AES_128_CBC_SHA",
|
|
127
|
-
"TLS_RSA_WITH_AES_256_CBC_SHA",
|
|
128
|
-
],
|
|
138
|
+
extensionOrder: chromeExtensionOrder(17513),
|
|
139
|
+
keyShareGroups: ["X25519Kyber768", "x25519", "secp256r1", "secp384r1"],
|
|
140
|
+
cipherSuites: chromeCipherSuites,
|
|
129
141
|
},
|
|
130
142
|
http2: {
|
|
131
143
|
...chromeHttp2Base,
|
|
132
|
-
settings:
|
|
133
|
-
headerTableSize: 65536,
|
|
134
|
-
enablePush: false,
|
|
135
|
-
maxConcurrentStreams: 100,
|
|
136
|
-
initialWindowSize: 6291456,
|
|
137
|
-
maxFrameSize: 16384,
|
|
138
|
-
},
|
|
144
|
+
settings: chromeHttp2Settings,
|
|
139
145
|
},
|
|
140
146
|
http1: {
|
|
141
147
|
...chromeHttp1Base,
|
|
@@ -160,34 +166,13 @@ export const chrome140 = {
|
|
|
160
166
|
version: "140.0.7339.18",
|
|
161
167
|
tls: {
|
|
162
168
|
...chromeTlsBase,
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
"TLS_AES_256_GCM_SHA384",
|
|
167
|
-
"TLS_CHACHA20_POLY1305_SHA256",
|
|
168
|
-
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
|
|
169
|
-
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
|
|
170
|
-
"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
|
|
171
|
-
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
|
|
172
|
-
"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256",
|
|
173
|
-
"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",
|
|
174
|
-
"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
|
|
175
|
-
"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",
|
|
176
|
-
"TLS_RSA_WITH_AES_128_GCM_SHA256",
|
|
177
|
-
"TLS_RSA_WITH_AES_256_GCM_SHA384",
|
|
178
|
-
"TLS_RSA_WITH_AES_128_CBC_SHA",
|
|
179
|
-
"TLS_RSA_WITH_AES_256_CBC_SHA",
|
|
180
|
-
],
|
|
169
|
+
extensionOrder: chromeExtensionOrder(17613),
|
|
170
|
+
keyShareGroups: ["X25519MLKEM768", "x25519", "secp256r1", "secp384r1"],
|
|
171
|
+
cipherSuites: chromeCipherSuites,
|
|
181
172
|
},
|
|
182
173
|
http2: {
|
|
183
174
|
...chromeHttp2Base,
|
|
184
|
-
settings:
|
|
185
|
-
headerTableSize: 65536,
|
|
186
|
-
enablePush: false,
|
|
187
|
-
maxConcurrentStreams: 100,
|
|
188
|
-
initialWindowSize: 6291456,
|
|
189
|
-
maxFrameSize: 16384,
|
|
190
|
-
},
|
|
175
|
+
settings: chromeHttp2Settings,
|
|
191
176
|
},
|
|
192
177
|
http1: {
|
|
193
178
|
...chromeHttp1Base,
|
|
@@ -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
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
* GREASE behavior, same cipher families — but differs in the advertised user
|
|
6
6
|
* agent string, the `sec-ch-ua` brand list (includes "Microsoft Edge"), and a
|
|
7
7
|
* slightly different extension order. HTTP/2 settings track Chrome closely.
|
|
8
|
-
* Values mirror
|
|
8
|
+
* Values mirror curl-impersonate's Edge 101 ground-truth signature byte-for-byte
|
|
9
|
+
* (see tests/profiles-edge.test.ts for the wire-code mapping).
|
|
9
10
|
*/
|
|
10
11
|
import type { BrowserProfile } from "../types.js";
|
|
11
12
|
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;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,aAAa,CAAC;AAkF7D,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
|
@@ -5,15 +5,23 @@
|
|
|
5
5
|
* GREASE behavior, same cipher families — but differs in the advertised user
|
|
6
6
|
* agent string, the `sec-ch-ua` brand list (includes "Microsoft Edge"), and a
|
|
7
7
|
* slightly different extension order. HTTP/2 settings track Chrome closely.
|
|
8
|
-
* Values mirror
|
|
8
|
+
* Values mirror curl-impersonate's Edge 101 ground-truth signature byte-for-byte
|
|
9
|
+
* (see tests/profiles-edge.test.ts for the wire-code mapping).
|
|
9
10
|
*/
|
|
11
|
+
/** TLS 1.3 GREASE placeholder cipher (0x?a?a) Edge inserts at the top of the list. */
|
|
10
12
|
const GREASE = "TLS_GREASE_RESERVED_0";
|
|
13
|
+
/**
|
|
14
|
+
* Edge TLS extension order, in wire order, taken verbatim from the
|
|
15
|
+
* curl-impersonate signature. GREASE extension slots are excluded (their values
|
|
16
|
+
* are randomized per-connection and the profile stores literal wire codes).
|
|
17
|
+
*/
|
|
18
|
+
const EDGE_EXTENSION_ORDER = [
|
|
19
|
+
0, 23, 65281, 10, 11, 35, 16, 5, 13, 18, 51, 45, 43, 27, 17513, 21,
|
|
20
|
+
];
|
|
11
21
|
const edgeTlsBase = {
|
|
12
|
-
extensionOrder:
|
|
13
|
-
0, 10, 11, 13, 16, 17513, 18, 23, 27, 35, 41, 43, 45, 5, 51, 65281,
|
|
14
|
-
],
|
|
22
|
+
extensionOrder: EDGE_EXTENSION_ORDER,
|
|
15
23
|
supportedVersions: ["TLS 1.3", "TLS 1.2"],
|
|
16
|
-
keyShareGroups: ["x25519", "secp256r1"],
|
|
24
|
+
keyShareGroups: ["x25519", "secp256r1", "secp384r1"],
|
|
17
25
|
signatureAlgorithms: [
|
|
18
26
|
"ecdsa_secp256r1_sha256",
|
|
19
27
|
"rsa_pss_rsae_sha256",
|
|
@@ -21,6 +29,8 @@ const edgeTlsBase = {
|
|
|
21
29
|
"ecdsa_secp384r1_sha384",
|
|
22
30
|
"rsa_pss_rsae_sha384",
|
|
23
31
|
"rsa_pkcs1_sha384",
|
|
32
|
+
"rsa_pss_rsae_sha512",
|
|
33
|
+
"rsa_pkcs1_sha512",
|
|
24
34
|
],
|
|
25
35
|
grease: true,
|
|
26
36
|
};
|
|
@@ -50,30 +60,35 @@ const edgeHttp1Base = {
|
|
|
50
60
|
"accept-language",
|
|
51
61
|
],
|
|
52
62
|
};
|
|
63
|
+
/**
|
|
64
|
+
* Edge cipher suites in wire order, matching curl-impersonate's Edge 101
|
|
65
|
+
* signature. Same set and order as Chrome (Chromium-based).
|
|
66
|
+
*/
|
|
67
|
+
const EDGE_CIPHERS = [
|
|
68
|
+
GREASE,
|
|
69
|
+
"TLS_AES_128_GCM_SHA256",
|
|
70
|
+
"TLS_AES_256_GCM_SHA384",
|
|
71
|
+
"TLS_CHACHA20_POLY1305_SHA256",
|
|
72
|
+
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
|
|
73
|
+
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
|
|
74
|
+
"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
|
|
75
|
+
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
|
|
76
|
+
"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256",
|
|
77
|
+
"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",
|
|
78
|
+
"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
|
|
79
|
+
"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",
|
|
80
|
+
"TLS_RSA_WITH_AES_128_GCM_SHA256",
|
|
81
|
+
"TLS_RSA_WITH_AES_256_GCM_SHA384",
|
|
82
|
+
"TLS_RSA_WITH_AES_128_CBC_SHA",
|
|
83
|
+
"TLS_RSA_WITH_AES_256_CBC_SHA",
|
|
84
|
+
];
|
|
53
85
|
export const edge120 = {
|
|
54
86
|
id: "edge-120",
|
|
55
87
|
name: "edge",
|
|
56
88
|
version: "120.0.2210.91",
|
|
57
89
|
tls: {
|
|
58
90
|
...edgeTlsBase,
|
|
59
|
-
cipherSuites:
|
|
60
|
-
GREASE,
|
|
61
|
-
"TLS_AES_128_GCM_SHA256",
|
|
62
|
-
"TLS_AES_256_GCM_SHA384",
|
|
63
|
-
"TLS_CHACHA20_POLY1305_SHA256",
|
|
64
|
-
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
|
|
65
|
-
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
|
|
66
|
-
"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
|
|
67
|
-
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
|
|
68
|
-
"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256",
|
|
69
|
-
"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",
|
|
70
|
-
"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
|
|
71
|
-
"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",
|
|
72
|
-
"TLS_RSA_WITH_AES_128_GCM_SHA256",
|
|
73
|
-
"TLS_RSA_WITH_AES_256_GCM_SHA384",
|
|
74
|
-
"TLS_RSA_WITH_AES_128_CBC_SHA",
|
|
75
|
-
"TLS_RSA_WITH_AES_256_CBC_SHA",
|
|
76
|
-
],
|
|
91
|
+
cipherSuites: EDGE_CIPHERS,
|
|
77
92
|
},
|
|
78
93
|
http2: {
|
|
79
94
|
...edgeHttp2Base,
|
|
@@ -108,24 +123,7 @@ export const edge128 = {
|
|
|
108
123
|
version: "128.0.2739.70",
|
|
109
124
|
tls: {
|
|
110
125
|
...edgeTlsBase,
|
|
111
|
-
cipherSuites:
|
|
112
|
-
GREASE,
|
|
113
|
-
"TLS_AES_128_GCM_SHA256",
|
|
114
|
-
"TLS_AES_256_GCM_SHA384",
|
|
115
|
-
"TLS_CHACHA20_POLY1305_SHA256",
|
|
116
|
-
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
|
|
117
|
-
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
|
|
118
|
-
"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
|
|
119
|
-
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
|
|
120
|
-
"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256",
|
|
121
|
-
"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",
|
|
122
|
-
"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
|
|
123
|
-
"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",
|
|
124
|
-
"TLS_RSA_WITH_AES_128_GCM_SHA256",
|
|
125
|
-
"TLS_RSA_WITH_AES_256_GCM_SHA384",
|
|
126
|
-
"TLS_RSA_WITH_AES_128_CBC_SHA",
|
|
127
|
-
"TLS_RSA_WITH_AES_256_CBC_SHA",
|
|
128
|
-
],
|
|
126
|
+
cipherSuites: EDGE_CIPHERS,
|
|
129
127
|
},
|
|
130
128
|
http2: {
|
|
131
129
|
...edgeHttp2Base,
|
|
@@ -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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"}
|
|
@@ -1,9 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Firefox fingerprint definitions.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* TLS values mirror curl-impersonate's Firefox build (see
|
|
5
|
+
* lwthiker/curl-impersonate firefox/patches/curl-impersonate.patch — nss.c).
|
|
6
|
+
* Cipher order, extension order, signature algorithms, and named groups are
|
|
7
|
+
* byte-accurate against the firefox-133 ClientHello capture
|
|
8
|
+
* (tests/fixtures/firefox-133) and the patch's signatures[]/named_groups[]
|
|
9
|
+
* tables. HTTP/2 settings track the patch's 12MB window and the default stream
|
|
10
|
+
* weight/dependency/stream-id constants.
|
|
11
|
+
*
|
|
12
|
+
* Note on cipher names: codes.js maps names to wire codes with a
|
|
13
|
+
* browser-specific remapping (AES_256->0x1302, ChaCha20->0x1303) so that this
|
|
14
|
+
* profile's name order produces Firefox's true wire order
|
|
15
|
+
* (0x1301,0x1303,0x1302,...). Do not reorder these names to match IANA — that
|
|
16
|
+
* would emit Chrome's wire order. Verified against the capture.
|
|
7
17
|
*/
|
|
8
18
|
import type { BrowserProfile } from "../types.js";
|
|
9
19
|
export declare const firefox120: BrowserProfile;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firefox.d.ts","sourceRoot":"","sources":["../../src/profiles/firefox.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"firefox.d.ts","sourceRoot":"","sources":["../../src/profiles/firefox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,aAAa,CAAC;AA4E7D,eAAO,MAAM,UAAU,EAAE,cAgCxB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,cAgCxB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,cAgCxB,CAAC;AAEF,eAAO,MAAM,eAAe;;;;CAIlB,CAAC"}
|
package/dist/profiles/firefox.js
CHANGED
|
@@ -1,28 +1,67 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Firefox fingerprint definitions.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* TLS values mirror curl-impersonate's Firefox build (see
|
|
5
|
+
* lwthiker/curl-impersonate firefox/patches/curl-impersonate.patch — nss.c).
|
|
6
|
+
* Cipher order, extension order, signature algorithms, and named groups are
|
|
7
|
+
* byte-accurate against the firefox-133 ClientHello capture
|
|
8
|
+
* (tests/fixtures/firefox-133) and the patch's signatures[]/named_groups[]
|
|
9
|
+
* tables. HTTP/2 settings track the patch's 12MB window and the default stream
|
|
10
|
+
* weight/dependency/stream-id constants.
|
|
11
|
+
*
|
|
12
|
+
* Note on cipher names: codes.js maps names to wire codes with a
|
|
13
|
+
* browser-specific remapping (AES_256->0x1302, ChaCha20->0x1303) so that this
|
|
14
|
+
* profile's name order produces Firefox's true wire order
|
|
15
|
+
* (0x1301,0x1303,0x1302,...). Do not reorder these names to match IANA — that
|
|
16
|
+
* would emit Chrome's wire order. Verified against the capture.
|
|
7
17
|
*/
|
|
8
18
|
const firefoxTlsBase = {
|
|
9
19
|
extensionOrder: [
|
|
10
|
-
0, 10, 11,
|
|
20
|
+
0, 23, 65281, 10, 11, 35, 16, 5, 34, 51, 43, 13, 45, 28, 27, 65037,
|
|
11
21
|
],
|
|
12
22
|
supportedVersions: ["TLS 1.3", "TLS 1.2"],
|
|
13
|
-
keyShareGroups: [
|
|
23
|
+
keyShareGroups: [
|
|
24
|
+
"x25519",
|
|
25
|
+
"secp256r1",
|
|
26
|
+
"secp384r1",
|
|
27
|
+
"secp521r1",
|
|
28
|
+
"ffdhe2048",
|
|
29
|
+
"ffdhe3072",
|
|
30
|
+
],
|
|
14
31
|
signatureAlgorithms: [
|
|
15
32
|
"ecdsa_secp256r1_sha256",
|
|
16
33
|
"ecdsa_secp384r1_sha384",
|
|
17
|
-
"
|
|
34
|
+
"ecdsa_secp521r1_sha512",
|
|
18
35
|
"rsa_pss_rsae_sha256",
|
|
19
36
|
"rsa_pss_rsae_sha384",
|
|
37
|
+
"rsa_pss_rsae_sha512",
|
|
20
38
|
"rsa_pkcs1_sha256",
|
|
21
39
|
"rsa_pkcs1_sha384",
|
|
40
|
+
"rsa_pkcs1_sha512",
|
|
41
|
+
"ecdsa_sha1",
|
|
22
42
|
"rsa_pkcs1_sha1",
|
|
23
43
|
],
|
|
24
44
|
grease: false,
|
|
25
45
|
};
|
|
46
|
+
const firefoxTlsCiphers = [
|
|
47
|
+
"TLS_AES_128_GCM_SHA256",
|
|
48
|
+
"TLS_CHACHA20_POLY1305_SHA256",
|
|
49
|
+
"TLS_AES_256_GCM_SHA384",
|
|
50
|
+
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
|
|
51
|
+
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
|
|
52
|
+
"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256",
|
|
53
|
+
"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",
|
|
54
|
+
"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
|
|
55
|
+
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
|
|
56
|
+
"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA",
|
|
57
|
+
"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA",
|
|
58
|
+
"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
|
|
59
|
+
"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",
|
|
60
|
+
"TLS_RSA_WITH_AES_128_GCM_SHA256",
|
|
61
|
+
"TLS_RSA_WITH_AES_256_GCM_SHA384",
|
|
62
|
+
"TLS_RSA_WITH_AES_128_CBC_SHA",
|
|
63
|
+
"TLS_RSA_WITH_AES_256_CBC_SHA",
|
|
64
|
+
];
|
|
26
65
|
const firefoxHttp2Base = {
|
|
27
66
|
initialWindowSize: 12582912,
|
|
28
67
|
maxFrameSize: 16384,
|
|
@@ -52,25 +91,7 @@ export const firefox120 = {
|
|
|
52
91
|
version: "120.0",
|
|
53
92
|
tls: {
|
|
54
93
|
...firefoxTlsBase,
|
|
55
|
-
cipherSuites:
|
|
56
|
-
"TLS_AES_128_GCM_SHA256",
|
|
57
|
-
"TLS_CHACHA20_POLY1305_SHA256",
|
|
58
|
-
"TLS_AES_256_GCM_SHA384",
|
|
59
|
-
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
|
|
60
|
-
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
|
|
61
|
-
"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256",
|
|
62
|
-
"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",
|
|
63
|
-
"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
|
|
64
|
-
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
|
|
65
|
-
"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA",
|
|
66
|
-
"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA",
|
|
67
|
-
"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
|
|
68
|
-
"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",
|
|
69
|
-
"TLS_RSA_WITH_AES_128_GCM_SHA256",
|
|
70
|
-
"TLS_RSA_WITH_AES_256_GCM_SHA384",
|
|
71
|
-
"TLS_RSA_WITH_AES_128_CBC_SHA",
|
|
72
|
-
"TLS_RSA_WITH_AES_256_CBC_SHA",
|
|
73
|
-
],
|
|
94
|
+
cipherSuites: firefoxTlsCiphers,
|
|
74
95
|
},
|
|
75
96
|
http2: {
|
|
76
97
|
...firefoxHttp2Base,
|
|
@@ -102,25 +123,7 @@ export const firefox128 = {
|
|
|
102
123
|
version: "128.0",
|
|
103
124
|
tls: {
|
|
104
125
|
...firefoxTlsBase,
|
|
105
|
-
cipherSuites:
|
|
106
|
-
"TLS_AES_128_GCM_SHA256",
|
|
107
|
-
"TLS_CHACHA20_POLY1305_SHA256",
|
|
108
|
-
"TLS_AES_256_GCM_SHA384",
|
|
109
|
-
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
|
|
110
|
-
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
|
|
111
|
-
"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256",
|
|
112
|
-
"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",
|
|
113
|
-
"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
|
|
114
|
-
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
|
|
115
|
-
"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA",
|
|
116
|
-
"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA",
|
|
117
|
-
"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
|
|
118
|
-
"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",
|
|
119
|
-
"TLS_RSA_WITH_AES_128_GCM_SHA256",
|
|
120
|
-
"TLS_RSA_WITH_AES_256_GCM_SHA384",
|
|
121
|
-
"TLS_RSA_WITH_AES_128_CBC_SHA",
|
|
122
|
-
"TLS_RSA_WITH_AES_256_CBC_SHA",
|
|
123
|
-
],
|
|
126
|
+
cipherSuites: firefoxTlsCiphers,
|
|
124
127
|
},
|
|
125
128
|
http2: {
|
|
126
129
|
...firefoxHttp2Base,
|
|
@@ -152,25 +155,7 @@ export const firefox135 = {
|
|
|
152
155
|
version: "135.0",
|
|
153
156
|
tls: {
|
|
154
157
|
...firefoxTlsBase,
|
|
155
|
-
cipherSuites:
|
|
156
|
-
"TLS_AES_128_GCM_SHA256",
|
|
157
|
-
"TLS_CHACHA20_POLY1305_SHA256",
|
|
158
|
-
"TLS_AES_256_GCM_SHA384",
|
|
159
|
-
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
|
|
160
|
-
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
|
|
161
|
-
"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256",
|
|
162
|
-
"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",
|
|
163
|
-
"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
|
|
164
|
-
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
|
|
165
|
-
"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA",
|
|
166
|
-
"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA",
|
|
167
|
-
"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
|
|
168
|
-
"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",
|
|
169
|
-
"TLS_RSA_WITH_AES_128_GCM_SHA256",
|
|
170
|
-
"TLS_RSA_WITH_AES_256_GCM_SHA384",
|
|
171
|
-
"TLS_RSA_WITH_AES_128_CBC_SHA",
|
|
172
|
-
"TLS_RSA_WITH_AES_256_CBC_SHA",
|
|
173
|
-
],
|
|
158
|
+
cipherSuites: firefoxTlsCiphers,
|
|
174
159
|
},
|
|
175
160
|
http2: {
|
|
176
161
|
...firefoxHttp2Base,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firefox.js","sourceRoot":"","sources":["../../src/profiles/firefox.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"firefox.js","sourceRoot":"","sources":["../../src/profiles/firefox.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,9 +2,12 @@
|
|
|
2
2
|
* Safari fingerprint definitions.
|
|
3
3
|
*
|
|
4
4
|
* Safari (WebKit) has a distinct TLS fingerprint: it enables GREASE, uses a
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* conservative. Values mirror
|
|
5
|
+
* cipher order that prioritizes ChaCha20 less aggressively than Chrome, and
|
|
6
|
+
* advertises a smaller set of signature algorithms. HTTP/2 settings are
|
|
7
|
+
* conservative. Values mirror curl-impersonate's Safari 15.5 ground-truth
|
|
8
|
+
* signature byte-for-byte (see tests/profiles-safari.test.ts for the wire-code
|
|
9
|
+
* mapping). Safari 17 and 18 share this fingerprint; they differ only in
|
|
10
|
+
* version string and User-Agent.
|
|
8
11
|
*/
|
|
9
12
|
import type { BrowserProfile } from "../types.js";
|
|
10
13
|
export declare const safari17: BrowserProfile;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safari.d.ts","sourceRoot":"","sources":["../../src/profiles/safari.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"safari.d.ts","sourceRoot":"","sources":["../../src/profiles/safari.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,aAAa,CAAC;AAyF7D,eAAO,MAAM,QAAQ,EAAE,cA2BtB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,cA2BtB,CAAC;AAEF,eAAO,MAAM,cAAc;;;CAGjB,CAAC"}
|