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.
- utls-2026.5.29/Cargo.lock +407 -0
- utls-2026.5.29/Cargo.toml +28 -0
- utls-2026.5.29/LICENSE +21 -0
- utls-2026.5.29/NOTICE +50 -0
- utls-2026.5.29/PKG-INFO +378 -0
- utls-2026.5.29/README.md +337 -0
- utls-2026.5.29/crates/utls-core/Cargo.toml +23 -0
- utls-2026.5.29/crates/utls-core/build.rs +74 -0
- utls-2026.5.29/crates/utls-core/src/bio.rs +195 -0
- utls-2026.5.29/crates/utls-core/src/context.rs +1898 -0
- utls-2026.5.29/crates/utls-core/src/error.rs +118 -0
- utls-2026.5.29/crates/utls-core/src/fingerprint/apply.rs +468 -0
- utls-2026.5.29/crates/utls-core/src/fingerprint/capture.rs +279 -0
- utls-2026.5.29/crates/utls-core/src/fingerprint/ja3.rs +157 -0
- utls-2026.5.29/crates/utls-core/src/fingerprint/ja4.rs +258 -0
- utls-2026.5.29/crates/utls-core/src/fingerprint/mod.rs +21 -0
- utls-2026.5.29/crates/utls-core/src/fingerprint/spec.rs +265 -0
- utls-2026.5.29/crates/utls-core/src/lib.rs +103 -0
- utls-2026.5.29/crates/utls-core/src/peer_cert.rs +337 -0
- utls-2026.5.29/crates/utls-core/src/server_fp.rs +188 -0
- utls-2026.5.29/crates/utls-core/src/session.rs +108 -0
- utls-2026.5.29/crates/utls-core/src/trust_store/mod.rs +21 -0
- utls-2026.5.29/crates/utls-core/src/verify.rs +117 -0
- utls-2026.5.29/crates/utls-core/tests/extension_order.rs +180 -0
- utls-2026.5.29/crates/utls-core/tests/smoke.rs +47 -0
- utls-2026.5.29/crates/utls-py/Cargo.toml +24 -0
- utls-2026.5.29/crates/utls-py/build.rs +19 -0
- utls-2026.5.29/crates/utls-py/src/lib.rs +831 -0
- utls-2026.5.29/pyproject.toml +86 -0
- utls-2026.5.29/python/utls/__init__.py +156 -0
- utls-2026.5.29/python/utls/_facade.py +1368 -0
- utls-2026.5.29/python/utls/_fingerprint.py +186 -0
- utls-2026.5.29/python/utls/_socket.py +414 -0
- utls-2026.5.29/python/utls/_utils.py +25 -0
- utls-2026.5.29/python/utls/_utls.pyi +166 -0
- utls-2026.5.29/python/utls/constants.py +122 -0
- utls-2026.5.29/python/utls/exceptions.py +44 -0
- utls-2026.5.29/python/utls/profiles/__init__.py +28 -0
- utls-2026.5.29/python/utls/profiles/_base.py +73 -0
- utls-2026.5.29/python/utls/profiles/chrome_131.py +118 -0
- utls-2026.5.29/python/utls/profiles/chrome_142.py +106 -0
- utls-2026.5.29/python/utls/profiles/chrome_146.py +96 -0
- utls-2026.5.29/python/utls/profiles/chrome_148.py +40 -0
- utls-2026.5.29/python/utls/profiles/chrome_stable.py +16 -0
- 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.
|