utls 2026.5.29__tar.gz

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.
Files changed (45) hide show
  1. utls-2026.5.29/Cargo.lock +407 -0
  2. utls-2026.5.29/Cargo.toml +28 -0
  3. utls-2026.5.29/LICENSE +21 -0
  4. utls-2026.5.29/NOTICE +50 -0
  5. utls-2026.5.29/PKG-INFO +378 -0
  6. utls-2026.5.29/README.md +337 -0
  7. utls-2026.5.29/crates/utls-core/Cargo.toml +23 -0
  8. utls-2026.5.29/crates/utls-core/build.rs +74 -0
  9. utls-2026.5.29/crates/utls-core/src/bio.rs +195 -0
  10. utls-2026.5.29/crates/utls-core/src/context.rs +1898 -0
  11. utls-2026.5.29/crates/utls-core/src/error.rs +118 -0
  12. utls-2026.5.29/crates/utls-core/src/fingerprint/apply.rs +468 -0
  13. utls-2026.5.29/crates/utls-core/src/fingerprint/capture.rs +279 -0
  14. utls-2026.5.29/crates/utls-core/src/fingerprint/ja3.rs +157 -0
  15. utls-2026.5.29/crates/utls-core/src/fingerprint/ja4.rs +258 -0
  16. utls-2026.5.29/crates/utls-core/src/fingerprint/mod.rs +21 -0
  17. utls-2026.5.29/crates/utls-core/src/fingerprint/spec.rs +265 -0
  18. utls-2026.5.29/crates/utls-core/src/lib.rs +103 -0
  19. utls-2026.5.29/crates/utls-core/src/peer_cert.rs +337 -0
  20. utls-2026.5.29/crates/utls-core/src/server_fp.rs +188 -0
  21. utls-2026.5.29/crates/utls-core/src/session.rs +108 -0
  22. utls-2026.5.29/crates/utls-core/src/trust_store/mod.rs +21 -0
  23. utls-2026.5.29/crates/utls-core/src/verify.rs +117 -0
  24. utls-2026.5.29/crates/utls-core/tests/extension_order.rs +180 -0
  25. utls-2026.5.29/crates/utls-core/tests/smoke.rs +47 -0
  26. utls-2026.5.29/crates/utls-py/Cargo.toml +24 -0
  27. utls-2026.5.29/crates/utls-py/build.rs +19 -0
  28. utls-2026.5.29/crates/utls-py/src/lib.rs +831 -0
  29. utls-2026.5.29/pyproject.toml +86 -0
  30. utls-2026.5.29/python/utls/__init__.py +156 -0
  31. utls-2026.5.29/python/utls/_facade.py +1368 -0
  32. utls-2026.5.29/python/utls/_fingerprint.py +186 -0
  33. utls-2026.5.29/python/utls/_socket.py +414 -0
  34. utls-2026.5.29/python/utls/_utils.py +25 -0
  35. utls-2026.5.29/python/utls/_utls.pyi +166 -0
  36. utls-2026.5.29/python/utls/constants.py +122 -0
  37. utls-2026.5.29/python/utls/exceptions.py +44 -0
  38. utls-2026.5.29/python/utls/profiles/__init__.py +28 -0
  39. utls-2026.5.29/python/utls/profiles/_base.py +73 -0
  40. utls-2026.5.29/python/utls/profiles/chrome_131.py +118 -0
  41. utls-2026.5.29/python/utls/profiles/chrome_142.py +106 -0
  42. utls-2026.5.29/python/utls/profiles/chrome_146.py +96 -0
  43. utls-2026.5.29/python/utls/profiles/chrome_148.py +40 -0
  44. utls-2026.5.29/python/utls/profiles/chrome_stable.py +16 -0
  45. utls-2026.5.29/python/utls/py.typed +0 -0
@@ -0,0 +1,407 @@
1
+ # This file is automatically @generated by Cargo.
2
+ # It is not intended for manual editing.
3
+ version = 3
4
+
5
+ [[package]]
6
+ name = "aho-corasick"
7
+ version = "1.1.4"
8
+ source = "registry+https://github.com/rust-lang/crates.io-index"
9
+ checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
10
+ dependencies = [
11
+ "memchr",
12
+ ]
13
+
14
+ [[package]]
15
+ name = "bindgen"
16
+ version = "0.72.1"
17
+ source = "registry+https://github.com/rust-lang/crates.io-index"
18
+ checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895"
19
+ dependencies = [
20
+ "bitflags",
21
+ "cexpr",
22
+ "clang-sys",
23
+ "itertools",
24
+ "proc-macro2",
25
+ "quote",
26
+ "regex",
27
+ "rustc-hash",
28
+ "shlex",
29
+ "syn",
30
+ ]
31
+
32
+ [[package]]
33
+ name = "bitflags"
34
+ version = "2.11.1"
35
+ source = "registry+https://github.com/rust-lang/crates.io-index"
36
+ checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3"
37
+
38
+ [[package]]
39
+ name = "boring-sys"
40
+ version = "5.1.0"
41
+ source = "registry+https://github.com/rust-lang/crates.io-index"
42
+ checksum = "bbc39169cb8fa025002661c8d9148ed38a896908e4d308bb0cb55303f66e95d4"
43
+ dependencies = [
44
+ "bindgen",
45
+ "cmake",
46
+ "fs_extra",
47
+ "fslock",
48
+ ]
49
+
50
+ [[package]]
51
+ name = "cc"
52
+ version = "1.2.62"
53
+ source = "registry+https://github.com/rust-lang/crates.io-index"
54
+ checksum = "a1dce859f0832a7d088c4f1119888ab94ef4b5d6795d1ce05afb7fe159d79f98"
55
+ dependencies = [
56
+ "find-msvc-tools",
57
+ "shlex",
58
+ ]
59
+
60
+ [[package]]
61
+ name = "cexpr"
62
+ version = "0.6.0"
63
+ source = "registry+https://github.com/rust-lang/crates.io-index"
64
+ checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
65
+ dependencies = [
66
+ "nom",
67
+ ]
68
+
69
+ [[package]]
70
+ name = "cfg-if"
71
+ version = "1.0.4"
72
+ source = "registry+https://github.com/rust-lang/crates.io-index"
73
+ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
74
+
75
+ [[package]]
76
+ name = "clang-sys"
77
+ version = "1.8.1"
78
+ source = "registry+https://github.com/rust-lang/crates.io-index"
79
+ checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4"
80
+ dependencies = [
81
+ "glob",
82
+ "libc",
83
+ "libloading",
84
+ ]
85
+
86
+ [[package]]
87
+ name = "cmake"
88
+ version = "0.1.58"
89
+ source = "registry+https://github.com/rust-lang/crates.io-index"
90
+ checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678"
91
+ dependencies = [
92
+ "cc",
93
+ ]
94
+
95
+ [[package]]
96
+ name = "either"
97
+ version = "1.16.0"
98
+ source = "registry+https://github.com/rust-lang/crates.io-index"
99
+ checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e"
100
+
101
+ [[package]]
102
+ name = "find-msvc-tools"
103
+ version = "0.1.9"
104
+ source = "registry+https://github.com/rust-lang/crates.io-index"
105
+ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
106
+
107
+ [[package]]
108
+ name = "fs_extra"
109
+ version = "1.3.0"
110
+ source = "registry+https://github.com/rust-lang/crates.io-index"
111
+ checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"
112
+
113
+ [[package]]
114
+ name = "fslock"
115
+ version = "0.2.1"
116
+ source = "registry+https://github.com/rust-lang/crates.io-index"
117
+ checksum = "04412b8935272e3a9bae6f48c7bfff74c2911f60525404edfdd28e49884c3bfb"
118
+ dependencies = [
119
+ "libc",
120
+ "winapi",
121
+ ]
122
+
123
+ [[package]]
124
+ name = "glob"
125
+ version = "0.3.3"
126
+ source = "registry+https://github.com/rust-lang/crates.io-index"
127
+ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"
128
+
129
+ [[package]]
130
+ name = "heck"
131
+ version = "0.5.0"
132
+ source = "registry+https://github.com/rust-lang/crates.io-index"
133
+ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
134
+
135
+ [[package]]
136
+ name = "itertools"
137
+ version = "0.13.0"
138
+ source = "registry+https://github.com/rust-lang/crates.io-index"
139
+ checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
140
+ dependencies = [
141
+ "either",
142
+ ]
143
+
144
+ [[package]]
145
+ name = "libc"
146
+ version = "0.2.186"
147
+ source = "registry+https://github.com/rust-lang/crates.io-index"
148
+ checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
149
+
150
+ [[package]]
151
+ name = "libloading"
152
+ version = "0.8.9"
153
+ source = "registry+https://github.com/rust-lang/crates.io-index"
154
+ checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55"
155
+ dependencies = [
156
+ "cfg-if",
157
+ "windows-link",
158
+ ]
159
+
160
+ [[package]]
161
+ name = "memchr"
162
+ version = "2.8.1"
163
+ source = "registry+https://github.com/rust-lang/crates.io-index"
164
+ checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8"
165
+
166
+ [[package]]
167
+ name = "minimal-lexical"
168
+ version = "0.2.1"
169
+ source = "registry+https://github.com/rust-lang/crates.io-index"
170
+ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
171
+
172
+ [[package]]
173
+ name = "nom"
174
+ version = "7.1.3"
175
+ source = "registry+https://github.com/rust-lang/crates.io-index"
176
+ checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
177
+ dependencies = [
178
+ "memchr",
179
+ "minimal-lexical",
180
+ ]
181
+
182
+ [[package]]
183
+ name = "once_cell"
184
+ version = "1.21.4"
185
+ source = "registry+https://github.com/rust-lang/crates.io-index"
186
+ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
187
+
188
+ [[package]]
189
+ name = "portable-atomic"
190
+ version = "1.13.1"
191
+ source = "registry+https://github.com/rust-lang/crates.io-index"
192
+ checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
193
+
194
+ [[package]]
195
+ name = "proc-macro2"
196
+ version = "1.0.106"
197
+ source = "registry+https://github.com/rust-lang/crates.io-index"
198
+ checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
199
+ dependencies = [
200
+ "unicode-ident",
201
+ ]
202
+
203
+ [[package]]
204
+ name = "pyo3"
205
+ version = "0.28.3"
206
+ source = "registry+https://github.com/rust-lang/crates.io-index"
207
+ checksum = "91fd8e38a3b50ed1167fb981cd6fd60147e091784c427b8f7183a7ee32c31c12"
208
+ dependencies = [
209
+ "libc",
210
+ "once_cell",
211
+ "portable-atomic",
212
+ "pyo3-build-config",
213
+ "pyo3-ffi",
214
+ "pyo3-macros",
215
+ ]
216
+
217
+ [[package]]
218
+ name = "pyo3-build-config"
219
+ version = "0.28.3"
220
+ source = "registry+https://github.com/rust-lang/crates.io-index"
221
+ checksum = "e368e7ddfdeb98c9bca7f8383be1648fd84ab466bf2bc015e94008db6d35611e"
222
+ dependencies = [
223
+ "python3-dll-a",
224
+ "target-lexicon",
225
+ ]
226
+
227
+ [[package]]
228
+ name = "pyo3-ffi"
229
+ version = "0.28.3"
230
+ source = "registry+https://github.com/rust-lang/crates.io-index"
231
+ checksum = "7f29e10af80b1f7ccaf7f69eace800a03ecd13e883acfacc1e5d0988605f651e"
232
+ dependencies = [
233
+ "libc",
234
+ "pyo3-build-config",
235
+ ]
236
+
237
+ [[package]]
238
+ name = "pyo3-macros"
239
+ version = "0.28.3"
240
+ source = "registry+https://github.com/rust-lang/crates.io-index"
241
+ checksum = "df6e520eff47c45997d2fc7dd8214b25dd1310918bbb2642156ef66a67f29813"
242
+ dependencies = [
243
+ "proc-macro2",
244
+ "pyo3-macros-backend",
245
+ "quote",
246
+ "syn",
247
+ ]
248
+
249
+ [[package]]
250
+ name = "pyo3-macros-backend"
251
+ version = "0.28.3"
252
+ source = "registry+https://github.com/rust-lang/crates.io-index"
253
+ checksum = "c4cdc218d835738f81c2338f822078af45b4afdf8b2e33cbb5916f108b813acb"
254
+ dependencies = [
255
+ "heck",
256
+ "proc-macro2",
257
+ "pyo3-build-config",
258
+ "quote",
259
+ "syn",
260
+ ]
261
+
262
+ [[package]]
263
+ name = "python3-dll-a"
264
+ version = "0.2.15"
265
+ source = "registry+https://github.com/rust-lang/crates.io-index"
266
+ checksum = "d80ba7540edb18890d444c5aa8e1f1f99b1bdf26fb26ae383135325f4a36042b"
267
+ dependencies = [
268
+ "cc",
269
+ ]
270
+
271
+ [[package]]
272
+ name = "quote"
273
+ version = "1.0.45"
274
+ source = "registry+https://github.com/rust-lang/crates.io-index"
275
+ checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
276
+ dependencies = [
277
+ "proc-macro2",
278
+ ]
279
+
280
+ [[package]]
281
+ name = "regex"
282
+ version = "1.12.3"
283
+ source = "registry+https://github.com/rust-lang/crates.io-index"
284
+ checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276"
285
+ dependencies = [
286
+ "aho-corasick",
287
+ "memchr",
288
+ "regex-automata",
289
+ "regex-syntax",
290
+ ]
291
+
292
+ [[package]]
293
+ name = "regex-automata"
294
+ version = "0.4.14"
295
+ source = "registry+https://github.com/rust-lang/crates.io-index"
296
+ checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f"
297
+ dependencies = [
298
+ "aho-corasick",
299
+ "memchr",
300
+ "regex-syntax",
301
+ ]
302
+
303
+ [[package]]
304
+ name = "regex-syntax"
305
+ version = "0.8.10"
306
+ source = "registry+https://github.com/rust-lang/crates.io-index"
307
+ checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a"
308
+
309
+ [[package]]
310
+ name = "rustc-hash"
311
+ version = "2.1.2"
312
+ source = "registry+https://github.com/rust-lang/crates.io-index"
313
+ checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe"
314
+
315
+ [[package]]
316
+ name = "shlex"
317
+ version = "1.3.0"
318
+ source = "registry+https://github.com/rust-lang/crates.io-index"
319
+ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
320
+
321
+ [[package]]
322
+ name = "syn"
323
+ version = "2.0.117"
324
+ source = "registry+https://github.com/rust-lang/crates.io-index"
325
+ checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
326
+ dependencies = [
327
+ "proc-macro2",
328
+ "quote",
329
+ "unicode-ident",
330
+ ]
331
+
332
+ [[package]]
333
+ name = "target-lexicon"
334
+ version = "0.13.5"
335
+ source = "registry+https://github.com/rust-lang/crates.io-index"
336
+ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
337
+
338
+ [[package]]
339
+ name = "thiserror"
340
+ version = "1.0.69"
341
+ source = "registry+https://github.com/rust-lang/crates.io-index"
342
+ checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
343
+ dependencies = [
344
+ "thiserror-impl",
345
+ ]
346
+
347
+ [[package]]
348
+ name = "thiserror-impl"
349
+ version = "1.0.69"
350
+ source = "registry+https://github.com/rust-lang/crates.io-index"
351
+ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
352
+ dependencies = [
353
+ "proc-macro2",
354
+ "quote",
355
+ "syn",
356
+ ]
357
+
358
+ [[package]]
359
+ name = "unicode-ident"
360
+ version = "1.0.24"
361
+ source = "registry+https://github.com/rust-lang/crates.io-index"
362
+ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
363
+
364
+ [[package]]
365
+ name = "utls-core"
366
+ version = "2026.5.29"
367
+ dependencies = [
368
+ "boring-sys",
369
+ "libc",
370
+ "thiserror",
371
+ ]
372
+
373
+ [[package]]
374
+ name = "utls-py"
375
+ version = "2026.5.29"
376
+ dependencies = [
377
+ "pyo3",
378
+ "utls-core",
379
+ ]
380
+
381
+ [[package]]
382
+ name = "winapi"
383
+ version = "0.3.9"
384
+ source = "registry+https://github.com/rust-lang/crates.io-index"
385
+ checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
386
+ dependencies = [
387
+ "winapi-i686-pc-windows-gnu",
388
+ "winapi-x86_64-pc-windows-gnu",
389
+ ]
390
+
391
+ [[package]]
392
+ name = "winapi-i686-pc-windows-gnu"
393
+ version = "0.4.0"
394
+ source = "registry+https://github.com/rust-lang/crates.io-index"
395
+ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
396
+
397
+ [[package]]
398
+ name = "winapi-x86_64-pc-windows-gnu"
399
+ version = "0.4.0"
400
+ source = "registry+https://github.com/rust-lang/crates.io-index"
401
+ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
402
+
403
+ [[package]]
404
+ name = "windows-link"
405
+ version = "0.2.1"
406
+ source = "registry+https://github.com/rust-lang/crates.io-index"
407
+ checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
@@ -0,0 +1,28 @@
1
+ [workspace]
2
+ resolver = "2"
3
+ members = ["crates/utls-core", "crates/utls-py"]
4
+
5
+ [workspace.package]
6
+ version = "2026.5.29"
7
+ edition = "2021"
8
+ rust-version = "1.75"
9
+ license = "MIT"
10
+ repository = "https://github.com/jawah/utls"
11
+ homepage = "https://github.com/jawah/utls"
12
+ authors = ["Ahmed TAHRI"]
13
+
14
+ [workspace.dependencies]
15
+ boring-sys = "5"
16
+ libc = "0.2"
17
+ thiserror = "1"
18
+ pyo3 = { version = "0.28", features = ["extension-module", "abi3-py37", "generate-import-lib"] }
19
+
20
+ [profile.release]
21
+ opt-level = 3
22
+ lto = "thin"
23
+ codegen-units = 1
24
+ strip = "symbols"
25
+ panic = "abort"
26
+
27
+ [profile.dev]
28
+ opt-level = 1
utls-2026.5.29/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Ahmed TAHRI
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
utls-2026.5.29/NOTICE ADDED
@@ -0,0 +1,50 @@
1
+ utls
2
+ Copyright (c) 2026 Ahmed TAHRI
3
+
4
+ This product is licensed under the MIT License. See LICENSE for the full text.
5
+
6
+ ------------------------------------------------------------------------------
7
+ Third-party components
8
+ ------------------------------------------------------------------------------
9
+
10
+ 1. BoringSSL (statically linked at build time via boring-sys)
11
+ Source: https://boringssl.googlesource.com/boringssl/
12
+ License: OpenSSL License, ISC License, and MIT License (per-file; see
13
+ the boring-sys crate's vendored LICENSE for the canonical
14
+ breakdown).
15
+ Notice: BoringSSL is a fork of OpenSSL by Google. Original OpenSSL
16
+ copyright notices are preserved in the boring-sys vendor tree.
17
+ utls does not vendor BoringSSL itself and applies no patches;
18
+ it depends on the upstream `boring-sys` crate (~> 5).
19
+
20
+ 2. boring-sys (Rust crate)
21
+ Source: https://github.com/cloudflare/boring
22
+ License: Apache-2.0
23
+
24
+ 3. uTLS-derived specification data (extension order tables, GREASE layout
25
+ conventions, ALPS extension number assignments, etc.)
26
+ Source: https://github.com/refraction-networking/utls
27
+ License: BSD-3-Clause
28
+ Notice: Portions of the per-browser fingerprint profiles under
29
+ python/utls/profiles/ are informed by uTLS's public spec data.
30
+ Where directly derived, the relevant module includes a header
31
+ comment attributing the source.
32
+
33
+ 4. JA4 fingerprint algorithm
34
+ Source: https://github.com/FoxIO-LLC/ja4
35
+ License: BSD-3-Clause
36
+ Notice: utls implements the JA4 algorithm pinned to spec revision
37
+ 0.18.8. See crates/utls-core/src/fingerprint/ja4.rs.
38
+
39
+ 5. JA3 fingerprint algorithm
40
+ Source: https://github.com/salesforce/ja3
41
+ License: BSD-3-Clause
42
+
43
+ ------------------------------------------------------------------------------
44
+ Trademarks
45
+ ------------------------------------------------------------------------------
46
+
47
+ "Chrome" is a trademark of Google LLC. Its use in profile names and
48
+ documentation refers solely to the observable network behaviour of the
49
+ Chrome browser and does not imply endorsement by, or affiliation with,
50
+ Google LLC.