@browsercore/profiles 0.1.4 → 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.
@@ -1 +1 @@
1
- {"version":3,"file":"chrome.js","sourceRoot":"","sources":["../../src/profiles/chrome.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chrome.js","sourceRoot":"","sources":["../../src/profiles/chrome.ts"],"names":[],"mappings":"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"}
@@ -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 real Edge captures per version.
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;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,aAAa,CAAC;AAiD7D,eAAO,MAAM,OAAO,EAAE,cAoDrB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,cAoDrB,CAAC;AAEF,eAAO,MAAM,YAAY;;;CAGf,CAAC"}
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"}
@@ -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 real Edge captures per version.
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":"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"}
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
- * Firefox uses a distinct cipher order from Chrome, does NOT enable GREASE, and
5
- * advertises a different TLS extension set. HTTP/2 settings are more conservative
6
- * (smaller initial window). Values mirror real Firefox captures per version.
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;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,aAAa,CAAC;AA8C7D,eAAO,MAAM,UAAU,EAAE,cAkDxB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,cAkDxB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,cAkDxB,CAAC;AAEF,eAAO,MAAM,eAAe;;;;CAIlB,CAAC"}
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"}
@@ -1,28 +1,67 @@
1
1
  /**
2
2
  * Firefox fingerprint definitions.
3
3
  *
4
- * Firefox uses a distinct cipher order from Chrome, does NOT enable GREASE, and
5
- * advertises a different TLS extension set. HTTP/2 settings are more conservative
6
- * (smaller initial window). Values mirror real Firefox captures per version.
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, 13, 16, 18, 23, 35, 41, 43, 45, 51, 65281,
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: ["x25519", "secp256r1", "secp384r1"],
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
- "ed25519",
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":"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"}
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
- * unique cipher order that prioritizes ChaCha20 less aggressively than Chrome,
6
- * and advertises a smaller set of signature algorithms. HTTP/2 settings are
7
- * conservative. Values mirror real Safari/WebKit captures per version.
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;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,aAAa,CAAC;AAoC7D,eAAO,MAAM,QAAQ,EAAE,cA6CtB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,cA6CtB,CAAC;AAEF,eAAO,MAAM,cAAc;;;CAGjB,CAAC"}
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"}
@@ -2,20 +2,45 @@
2
2
  * Safari fingerprint definitions.
3
3
  *
4
4
  * Safari (WebKit) has a distinct TLS fingerprint: it enables GREASE, uses a
5
- * unique cipher order that prioritizes ChaCha20 less aggressively than Chrome,
6
- * and advertises a smaller set of signature algorithms. HTTP/2 settings are
7
- * conservative. Values mirror real Safari/WebKit captures per version.
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
  */
12
+ /** TLS 1.3 GREASE placeholder cipher (0x?a?a) Safari inserts at the top of the list. */
13
+ const GREASE = "TLS_GREASE_RESERVED_0";
14
+ /**
15
+ * Safari TLS extension order, in wire order, taken verbatim from the
16
+ * curl-impersonate signature. GREASE extension slots are excluded (their values
17
+ * are randomized per-connection and the profile stores literal wire codes).
18
+ */
19
+ const SAFARI_EXTENSION_ORDER = [
20
+ 0, 23, 65281, 10, 11, 16, 5, 13, 18, 51, 45, 43, 27, 21,
21
+ ];
9
22
  const safariTlsBase = {
10
- extensionOrder: [
11
- 0, 10, 11, 13, 16, 18, 23, 35, 41, 43, 45, 51, 65281,
12
- ],
13
- supportedVersions: ["TLS 1.3", "TLS 1.2"],
14
- keyShareGroups: ["x25519", "secp256r1"],
23
+ extensionOrder: SAFARI_EXTENSION_ORDER,
24
+ supportedVersions: ["TLS 1.3", "TLS 1.2", "TLS 1.1", "TLS 1.0"],
25
+ keyShareGroups: ["x25519", "secp256r1", "secp384r1", "secp521r1"],
26
+ /**
27
+ * Safari's signature algorithm list, in wire order. Note the intentional
28
+ * duplicate rsa_pss_rsae_sha384 (0x0805) — this is a real Safari quirk that
29
+ * curl-impersonate preserves (BoringSSL's uniqueness check is patched out
30
+ * for this reason). See boringssl-old-ciphers.patch in curl-impersonate.
31
+ */
15
32
  signatureAlgorithms: [
16
33
  "ecdsa_secp256r1_sha256",
17
34
  "rsa_pss_rsae_sha256",
18
35
  "rsa_pkcs1_sha256",
36
+ "ecdsa_secp384r1_sha384",
37
+ "ecdsa_sha1",
38
+ "rsa_pss_rsae_sha384",
39
+ "rsa_pss_rsae_sha384",
40
+ "rsa_pkcs1_sha384",
41
+ "rsa_pss_rsae_sha512",
42
+ "rsa_pkcs1_sha512",
43
+ "rsa_pkcs1_sha1",
19
44
  ],
20
45
  grease: true,
21
46
  };
@@ -37,31 +62,41 @@ const safariHttp1Base = {
37
62
  "connection",
38
63
  ],
39
64
  };
65
+ /**
66
+ * Safari cipher suites in wire order, matching curl-impersonate's Safari 15.5
67
+ * signature. The legacy tail uses SHA-CBC (not SHA256-CBC) variants followed by
68
+ * a 3DES tail — BoringSSL dropped these, but curl-impersonate restores them.
69
+ */
70
+ const SAFARI_CIPHERS = [
71
+ GREASE,
72
+ "TLS_AES_128_GCM_SHA256",
73
+ "TLS_AES_256_GCM_SHA384",
74
+ "TLS_CHACHA20_POLY1305_SHA256",
75
+ "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
76
+ "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
77
+ "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256",
78
+ "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
79
+ "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
80
+ "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",
81
+ "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA",
82
+ "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA",
83
+ "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",
84
+ "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
85
+ "TLS_RSA_WITH_AES_256_GCM_SHA384",
86
+ "TLS_RSA_WITH_AES_128_GCM_SHA256",
87
+ "TLS_RSA_WITH_AES_256_CBC_SHA",
88
+ "TLS_RSA_WITH_AES_128_CBC_SHA",
89
+ "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA",
90
+ "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA",
91
+ "TLS_RSA_WITH_3DES_EDE_CBC_SHA",
92
+ ];
40
93
  export const safari17 = {
41
94
  id: "safari-17",
42
95
  name: "safari",
43
96
  version: "17.6",
44
97
  tls: {
45
98
  ...safariTlsBase,
46
- cipherSuites: [
47
- "TLS_AES_128_GCM_SHA256",
48
- "TLS_AES_256_GCM_SHA384",
49
- "TLS_CHACHA20_POLY1305_SHA256",
50
- "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
51
- "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
52
- "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
53
- "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
54
- "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256",
55
- "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",
56
- "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384",
57
- "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256",
58
- "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384",
59
- "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256",
60
- "TLS_RSA_WITH_AES_256_GCM_SHA384",
61
- "TLS_RSA_WITH_AES_128_GCM_SHA256",
62
- "TLS_RSA_WITH_AES_256_CBC_SHA256",
63
- "TLS_RSA_WITH_AES_128_CBC_SHA256",
64
- ],
99
+ cipherSuites: SAFARI_CIPHERS,
65
100
  },
66
101
  http2: {
67
102
  ...safariHttp2Base,
@@ -88,25 +123,7 @@ export const safari18 = {
88
123
  version: "18.1",
89
124
  tls: {
90
125
  ...safariTlsBase,
91
- cipherSuites: [
92
- "TLS_AES_128_GCM_SHA256",
93
- "TLS_AES_256_GCM_SHA384",
94
- "TLS_CHACHA20_POLY1305_SHA256",
95
- "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
96
- "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
97
- "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
98
- "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
99
- "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256",
100
- "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",
101
- "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384",
102
- "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256",
103
- "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384",
104
- "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256",
105
- "TLS_RSA_WITH_AES_256_GCM_SHA384",
106
- "TLS_RSA_WITH_AES_128_GCM_SHA256",
107
- "TLS_RSA_WITH_AES_256_CBC_SHA256",
108
- "TLS_RSA_WITH_AES_128_CBC_SHA256",
109
- ],
126
+ cipherSuites: SAFARI_CIPHERS,
110
127
  },
111
128
  http2: {
112
129
  ...safariHttp2Base,
@@ -1 +1 @@
1
- {"version":3,"file":"safari.js","sourceRoot":"","sources":["../../src/profiles/safari.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"safari.js","sourceRoot":"","sources":["../../src/profiles/safari.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
1
  /**
2
2
  * Profile registry — the single source of truth for known browser fingerprints.
3
3
  *
4
- * Profiles are registered once at module load (via the per-browser map files) and
5
- * can be extended at runtime through {@link registerProfile}. Lookups are O(1).
4
+ * Backed by a `Map`, which preserves insertion order, so {@link listProfiles}
5
+ * returns ids in a stable, deterministic sequence (built-ins first, then any
6
+ * runtime-registered profiles). Built-in profiles are indexed once at module
7
+ * evaluation; later {@link registerProfile} calls append or overwrite by id.
6
8
  */
7
9
  import type { BrowserProfile, ProfileId } from "./types.js";
8
10
  /** Look up a profile by its branded id. Throws {@link UnknownProfileError} if absent. */
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AA2B5D,yFAAyF;AACzF,wBAAgB,UAAU,CAAC,EAAE,EAAE,SAAS,GAAG,cAAc,CAMxD;AAED,4DAA4D;AAC5D,wBAAgB,YAAY,IAAI,aAAa,CAAC,SAAS,CAAC,CAEvD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAE7D"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AA2B5D,yFAAyF;AACzF,wBAAgB,UAAU,CAAC,EAAE,EAAE,SAAS,GAAG,cAAc,CAMxD;AAED,4DAA4D;AAC5D,wBAAgB,YAAY,IAAI,aAAa,CAAC,SAAS,CAAC,CAEvD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAE7D"}
package/dist/registry.js CHANGED
@@ -1,8 +1,10 @@
1
1
  /**
2
2
  * Profile registry — the single source of truth for known browser fingerprints.
3
3
  *
4
- * Profiles are registered once at module load (via the per-browser map files) and
5
- * can be extended at runtime through {@link registerProfile}. Lookups are O(1).
4
+ * Backed by a `Map`, which preserves insertion order, so {@link listProfiles}
5
+ * returns ids in a stable, deterministic sequence (built-ins first, then any
6
+ * runtime-registered profiles). Built-in profiles are indexed once at module
7
+ * evaluation; later {@link registerProfile} calls append or overwrite by id.
6
8
  */
7
9
  import { UnknownProfileError } from "./errors.js";
8
10
  import { ChromeProfiles } from "./profiles/chrome.js";
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA6B,CAAC;AAEtD,SAAS,KAAK,CAAC,OAAuB;IAClC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,oDAAoD;AACpD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;IAClD,KAAK,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC;AACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;IACnD,KAAK,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC;AACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;IAClD,KAAK,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC;AACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;IAChD,KAAK,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,UAAU,CAAC,EAAa;IACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,YAAY;IACxB,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,OAAuB;IACnD,KAAK,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA6B,CAAC;AAEtD,SAAS,KAAK,CAAC,OAAuB;IAClC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,oDAAoD;AACpD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;IAClD,KAAK,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC;AACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;IACnD,KAAK,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC;AACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;IAClD,KAAK,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC;AACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;IAChD,KAAK,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,UAAU,CAAC,EAAa;IACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,YAAY;IACxB,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,OAAuB;IACnD,KAAK,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC"}
package/dist/utils.d.ts CHANGED
@@ -10,9 +10,10 @@
10
10
  * Adding a new union member forces every handler to compile-error until handled.
11
11
  */
12
12
  export declare function assertNever(x: never): never;
13
+ import type { ProfileId } from "./types.js";
13
14
  /**
14
15
  * Build a branded {@link ProfileId} from a browser name + version.
15
16
  * Format: `${name}-${version}`, e.g. "chrome-140".
16
17
  */
17
- export declare function createId(name: string, version: string): string;
18
+ export declare function createId(name: string, version: string): ProfileId;
18
19
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AAEH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAE3C;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE9D"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AAEH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAE3C;AAED,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAEjE"}
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,6DAA6D;AAC7D,MAAM,UAAU,WAAW,CAAC,CAAQ;IAChC,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,OAAe;IAClD,OAAO,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,6DAA6D;AAC7D,MAAM,UAAU,WAAW,CAAC,CAAQ;IAChC,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9D,CAAC;AAID;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,OAAe;IAClD,OAAO,GAAG,IAAI,IAAI,OAAO,EAAe,CAAC;AAC7C,CAAC"}