mirror of
https://github.com/lwthiker/curl-impersonate.git
synced 2025-04-27 07:36:47 +00:00
Add new Chrome (116) and Firefox (117) versions
This commit is contained in:
parent
d48a572344
commit
fe90762831
12
README.md
12
README.md
@ -38,6 +38,7 @@ The following browsers can be impersonated.
|
||||
|  | 104 | 104.0.5112.81 | Windows 10 | `chrome104` | [curl_chrome104](chrome/curl_chrome104) |
|
||||
|  | 107 | 107.0.5304.107 | Windows 10 | `chrome107` | [curl_chrome107](chrome/curl_chrome107) |
|
||||
|  | 110 | 110.0.5481.177 | Windows 10 | `chrome110` | [curl_chrome110](chrome/curl_chrome110) |
|
||||
|  | 116 | 116.0.5845.180 | Windows 10 | `chrome116` | [curl_chrome116](chrome/curl_chrome116) |
|
||||
|  | 99 | 99.0.4844.73 | Android 12 | `chrome99_android` | [curl_chrome99_android](chrome/curl_chrome99_android) |
|
||||
|  | 99 | 99.0.1150.30 | Windows 10 | `edge99` | [curl_edge99](chrome/curl_edge99) |
|
||||
|  | 101 | 101.0.1210.47 | Windows 10 | `edge101` | [curl_edge101](chrome/curl_edge101) |
|
||||
@ -47,6 +48,7 @@ The following browsers can be impersonated.
|
||||
|  | 100 | 100.0 | Windows 10 | `ff100` | [curl_ff100](firefox/curl_ff100) |
|
||||
|  | 102 | 102.0 | Windows 10 | `ff102` | [curl_ff102](firefox/curl_ff102) |
|
||||
|  | 109 | 109.0 | Windows 10 | `ff109` | [curl_ff109](firefox/curl_ff109) |
|
||||
|  | 117 | 117.0.1 | Windows 10 | `ff117` | [curl_ff117](firefox/curl_ff117) |
|
||||
|  | 15.3 | 16612.4.9.1.8 | MacOS Big Sur | `safari15_3` | [curl_safari15_3](chrome/curl_safari15_3) |
|
||||
|  | 15.5 | 17613.2.7.1.8 | MacOS Monterey | `safari15_5` | [curl_safari15_5](chrome/curl_safari15_5) |
|
||||
|
||||
@ -56,7 +58,7 @@ This list is also available in the [browsers.json](browsers.json) file.
|
||||
|
||||
For each supported browser there is a wrapper script that launches `curl-impersonate` with all the needed headers and flags. For example:
|
||||
```
|
||||
curl_chrome110 https://www.wikipedia.org
|
||||
curl_chrome116 https://www.wikipedia.org
|
||||
```
|
||||
You can add command line flags and they will be passed on to curl. However, some flags change curl's TLS signature which may cause it to be detected.
|
||||
|
||||
@ -82,7 +84,7 @@ The pre-compiled binaries contain libcurl-impersonate and a statically compiled
|
||||
|
||||
The pre-compiled Linux binaries are built for Ubuntu systems. On other distributions if you have errors with certificate verification you may have to tell curl where to find the CA certificates. For example:
|
||||
```
|
||||
curl_chrome110 https://www.wikipedia.org --cacert /etc/ssl/certs/ca-bundle.crt
|
||||
curl_chrome116 https://www.wikipedia.org --cacert /etc/ssl/certs/ca-bundle.crt
|
||||
```
|
||||
|
||||
Also make sure to read [Notes on Dependencies](#notes-on-dependencies).
|
||||
@ -115,7 +117,7 @@ It has an additional API function:
|
||||
CURLcode curl_easy_impersonate(struct Curl_easy *data, const char *target,
|
||||
int default_headers);
|
||||
```
|
||||
You can call it with the target names, e.g. `chrome110`, and it will internally set all the options and headers that are otherwise set by the wrapper scripts.
|
||||
You can call it with the target names, e.g. `chrome116`, and it will internally set all the options and headers that are otherwise set by the wrapper scripts.
|
||||
If `default_headers` is set to 0, the built-in list of HTTP headers will not be set, and the user is expected to provide them instead using the regular [`CURLOPT_HTTPHEADER`](https://curl.se/libcurl/c/CURLOPT_HTTPHEADER.html) libcurl option.
|
||||
|
||||
Calling the above function sets the following libcurl options:
|
||||
@ -130,7 +132,7 @@ Note that if you call `curl_easy_setopt()` later with one of the above it will o
|
||||
### Using CURL_IMPERSONATE env var
|
||||
If your application uses `libcurl` already, you can replace the existing library at runtime with `LD_PRELOAD` (Linux only). You can then set the `CURL_IMPERSONATE` env var. For example:
|
||||
```bash
|
||||
LD_PRELOAD=/path/to/libcurl-impersonate.so CURL_IMPERSONATE=chrome110 my_app
|
||||
LD_PRELOAD=/path/to/libcurl-impersonate.so CURL_IMPERSONATE=chrome116 my_app
|
||||
```
|
||||
The `CURL_IMPERSONATE` env var has two effects:
|
||||
* `curl_easy_impersonate()` is called automatically for any new curl handle created by `curl_easy_init()`.
|
||||
@ -140,7 +142,7 @@ This means that all the options needed for impersonation will be automatically s
|
||||
|
||||
If you need precise control over the HTTP headers, set `CURL_IMPERSONATE_HEADERS=no` to disable the built-in list of HTTP headers, then set them yourself with `curl_easy_setopt()`. For example:
|
||||
```bash
|
||||
LD_PRELOAD=/path/to/libcurl-impersonate.so CURL_IMPERSONATE=chrome110 CURL_IMPERSONATE_HEADERS=no my_app
|
||||
LD_PRELOAD=/path/to/libcurl-impersonate.so CURL_IMPERSONATE=chrome116 CURL_IMPERSONATE_HEADERS=no my_app
|
||||
```
|
||||
|
||||
Note that the `LD_PRELOAD` method will NOT WORK for `curl` itself because the curl tool overrides the TLS settings. Use the wrapper scripts instead.
|
||||
|
@ -60,6 +60,16 @@
|
||||
"binary": "curl-impersonate-chrome",
|
||||
"wrapper_script": "curl_chrome110"
|
||||
},
|
||||
{
|
||||
"name": "chrome116",
|
||||
"browser": {
|
||||
"name": "chrome",
|
||||
"version": "116.0.5845.180",
|
||||
"os": "win10"
|
||||
},
|
||||
"binary": "curl-impersonate-chrome",
|
||||
"wrapper_script": "curl_chrome116"
|
||||
},
|
||||
{
|
||||
"name": "chrome99_android",
|
||||
"browser": {
|
||||
@ -151,6 +161,16 @@
|
||||
"binary": "curl-impersonate-ff",
|
||||
"wrapper_script": "curl_ff109"
|
||||
},
|
||||
{
|
||||
"name": "ff117",
|
||||
"browser": {
|
||||
"name": "firefox",
|
||||
"version": "117.0.1",
|
||||
"os": "win10"
|
||||
},
|
||||
"binary": "curl-impersonate-ff",
|
||||
"wrapper_script": "curl_ff117"
|
||||
},
|
||||
{
|
||||
"name": "safari15_3",
|
||||
"browser": {
|
||||
|
26
chrome/curl_chrome116
Executable file
26
chrome/curl_chrome116
Executable file
@ -0,0 +1,26 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Find the directory of this script
|
||||
dir=${0%/*}
|
||||
|
||||
# The list of ciphers can be obtained by looking at the Client Hello message in
|
||||
# Wireshark, then converting it using this reference
|
||||
# https://wiki.mozilla.org/Security/Cipher_Suites
|
||||
"$dir/curl-impersonate-chrome" \
|
||||
--ciphers TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256,ECDHE-ECDSA-AES128-GCM-SHA256,ECDHE-RSA-AES128-GCM-SHA256,ECDHE-ECDSA-AES256-GCM-SHA384,ECDHE-RSA-AES256-GCM-SHA384,ECDHE-ECDSA-CHACHA20-POLY1305,ECDHE-RSA-CHACHA20-POLY1305,ECDHE-RSA-AES128-SHA,ECDHE-RSA-AES256-SHA,AES128-GCM-SHA256,AES256-GCM-SHA384,AES128-SHA,AES256-SHA \
|
||||
-H 'sec-ch-ua: "Chromium";v="116", "Not)A;Brand";v="24", "Google Chrome";v="116"' \
|
||||
-H 'sec-ch-ua-mobile: ?0' \
|
||||
-H 'sec-ch-ua-platform: "Windows"' \
|
||||
-H 'Upgrade-Insecure-Requests: 1' \
|
||||
-H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36' \
|
||||
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7' \
|
||||
-H 'Sec-Fetch-Site: none' \
|
||||
-H 'Sec-Fetch-Mode: navigate' \
|
||||
-H 'Sec-Fetch-User: ?1' \
|
||||
-H 'Sec-Fetch-Dest: document' \
|
||||
-H 'Accept-Encoding: gzip, deflate, br' \
|
||||
-H 'Accept-Language: en-US,en;q=0.9' \
|
||||
--http2 --http2-no-server-push --false-start --compressed \
|
||||
--tlsv1.2 --alps --tls-permute-extensions \
|
||||
--cert-compression brotli \
|
||||
"$@"
|
@ -1036,10 +1036,10 @@ index 562c05c99..b99c085d5 100644
|
||||
* Store nghttp2 version info in this buffer.
|
||||
diff --git a/lib/impersonate.c b/lib/impersonate.c
|
||||
new file mode 100644
|
||||
index 000000000..4f5c24f5d
|
||||
index 000000000..a8ea0afa5
|
||||
--- /dev/null
|
||||
+++ b/lib/impersonate.c
|
||||
@@ -0,0 +1,482 @@
|
||||
@@ -0,0 +1,524 @@
|
||||
+#include "curl_setup.h"
|
||||
+
|
||||
+#include <curl/curl.h>
|
||||
@ -1291,6 +1291,48 @@ index 000000000..4f5c24f5d
|
||||
+ .http2_no_server_push = true
|
||||
+ },
|
||||
+ {
|
||||
+ .target = "chrome116",
|
||||
+ .httpversion = CURL_HTTP_VERSION_2_0,
|
||||
+ .ssl_version = CURL_SSLVERSION_TLSv1_2 | CURL_SSLVERSION_MAX_DEFAULT,
|
||||
+ .ciphers =
|
||||
+ "TLS_AES_128_GCM_SHA256,"
|
||||
+ "TLS_AES_256_GCM_SHA384,"
|
||||
+ "TLS_CHACHA20_POLY1305_SHA256,"
|
||||
+ "ECDHE-ECDSA-AES128-GCM-SHA256,"
|
||||
+ "ECDHE-RSA-AES128-GCM-SHA256,"
|
||||
+ "ECDHE-ECDSA-AES256-GCM-SHA384,"
|
||||
+ "ECDHE-RSA-AES256-GCM-SHA384,"
|
||||
+ "ECDHE-ECDSA-CHACHA20-POLY1305,"
|
||||
+ "ECDHE-RSA-CHACHA20-POLY1305,"
|
||||
+ "ECDHE-RSA-AES128-SHA,"
|
||||
+ "ECDHE-RSA-AES256-SHA,"
|
||||
+ "AES128-GCM-SHA256,"
|
||||
+ "AES256-GCM-SHA384,"
|
||||
+ "AES128-SHA,"
|
||||
+ "AES256-SHA",
|
||||
+ .npn = false,
|
||||
+ .alpn = true,
|
||||
+ .alps = true,
|
||||
+ .tls_permute_extensions = true,
|
||||
+ .tls_session_ticket = true,
|
||||
+ .cert_compression = "brotli",
|
||||
+ .http_headers = {
|
||||
+ "sec-ch-ua: \"Chromium\";v=\"116\", \"Not)A;Brand\";v=\"24\", \"Google Chrome\";v=\"116\"",
|
||||
+ "sec-ch-ua-mobile: ?0",
|
||||
+ "sec-ch-ua-platform: \"Windows\"",
|
||||
+ "Upgrade-Insecure-Requests: 1",
|
||||
+ "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36",
|
||||
+ "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
|
||||
+ "Sec-Fetch-Site: none",
|
||||
+ "Sec-Fetch-Mode: navigate",
|
||||
+ "Sec-Fetch-User: ?1",
|
||||
+ "Sec-Fetch-Dest: document",
|
||||
+ "Accept-Encoding: gzip, deflate, br",
|
||||
+ "Accept-Language: en-US,en;q=0.9"
|
||||
+ },
|
||||
+ .http2_no_server_push = true
|
||||
+ },
|
||||
+ {
|
||||
+ .target = "chrome99_android",
|
||||
+ .httpversion = CURL_HTTP_VERSION_2_0,
|
||||
+ .ssl_version = CURL_SSLVERSION_TLSv1_2 | CURL_SSLVERSION_MAX_DEFAULT,
|
||||
|
22
firefox/curl_ff117
Executable file
22
firefox/curl_ff117
Executable file
@ -0,0 +1,22 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Find the directory of this script
|
||||
dir=${0%/*}
|
||||
|
||||
# The list of ciphers can be obtained by looking at the Client Hello message in
|
||||
# Wireshark, then converting it using the cipherlist array at
|
||||
# https://github.com/curl/curl/blob/master/lib/vtls/nss.c
|
||||
"$dir/curl-impersonate-ff" \
|
||||
--ciphers aes_128_gcm_sha_256,chacha20_poly1305_sha_256,aes_256_gcm_sha_384,ecdhe_ecdsa_aes_128_gcm_sha_256,ecdhe_rsa_aes_128_gcm_sha_256,ecdhe_ecdsa_chacha20_poly1305_sha_256,ecdhe_rsa_chacha20_poly1305_sha_256,ecdhe_ecdsa_aes_256_gcm_sha_384,ecdhe_rsa_aes_256_gcm_sha_384,ecdhe_ecdsa_aes_256_sha,ecdhe_ecdsa_aes_128_sha,ecdhe_rsa_aes_128_sha,ecdhe_rsa_aes_256_sha,rsa_aes_128_gcm_sha_256,rsa_aes_256_gcm_sha_384,rsa_aes_128_sha,rsa_aes_256_sha \
|
||||
-H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/117.0' \
|
||||
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8' \
|
||||
-H 'Accept-Language: en-US,en;q=0.5' \
|
||||
-H 'Accept-Encoding: gzip, deflate, br' \
|
||||
-H 'Upgrade-Insecure-Requests: 1' \
|
||||
-H 'Sec-Fetch-Dest: document' \
|
||||
-H 'Sec-Fetch-Mode: navigate' \
|
||||
-H 'Sec-Fetch-Site: none' \
|
||||
-H 'Sec-Fetch-User: ?1' \
|
||||
-H 'TE: Trailers' \
|
||||
--http2 --false-start --compressed \
|
||||
"$@"
|
@ -856,10 +856,10 @@ index c666192fc..e926eb3f5 100644
|
||||
data->set.priority.exclusive);
|
||||
diff --git a/lib/impersonate.c b/lib/impersonate.c
|
||||
new file mode 100644
|
||||
index 000000000..de3d5a258
|
||||
index 000000000..e8ae6a722
|
||||
--- /dev/null
|
||||
+++ b/lib/impersonate.c
|
||||
@@ -0,0 +1,222 @@
|
||||
@@ -0,0 +1,257 @@
|
||||
+#include "curl_setup.h"
|
||||
+
|
||||
+#include <curl/curl.h>
|
||||
@ -1078,6 +1078,41 @@ index 000000000..de3d5a258
|
||||
+ }
|
||||
+ },
|
||||
+ {
|
||||
+ .target = "ff117",
|
||||
+ .httpversion = CURL_HTTP_VERSION_2_0,
|
||||
+ .ssl_version = CURL_SSLVERSION_TLSv1_2 | CURL_SSLVERSION_MAX_DEFAULT,
|
||||
+ .ciphers =
|
||||
+ "aes_128_gcm_sha_256,"
|
||||
+ "chacha20_poly1305_sha_256,"
|
||||
+ "aes_256_gcm_sha_384,"
|
||||
+ "ecdhe_ecdsa_aes_128_gcm_sha_256,"
|
||||
+ "ecdhe_rsa_aes_128_gcm_sha_256,"
|
||||
+ "ecdhe_ecdsa_chacha20_poly1305_sha_256,"
|
||||
+ "ecdhe_rsa_chacha20_poly1305_sha_256,"
|
||||
+ "ecdhe_ecdsa_aes_256_gcm_sha_384,"
|
||||
+ "ecdhe_rsa_aes_256_gcm_sha_384,"
|
||||
+ "ecdhe_ecdsa_aes_256_sha,"
|
||||
+ "ecdhe_ecdsa_aes_128_sha,"
|
||||
+ "ecdhe_rsa_aes_128_sha,"
|
||||
+ "ecdhe_rsa_aes_256_sha,"
|
||||
+ "rsa_aes_128_gcm_sha_256,"
|
||||
+ "rsa_aes_256_gcm_sha_384,"
|
||||
+ "rsa_aes_128_sha,"
|
||||
+ "rsa_aes_256_sha",
|
||||
+ .http_headers = {
|
||||
+ "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/117.0",
|
||||
+ "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
|
||||
+ "Accept-Language: en-US,en;q=0.5",
|
||||
+ "Accept-Encoding: gzip, deflate, br",
|
||||
+ "Upgrade-Insecure-Requests: 1",
|
||||
+ "Sec-Fetch-Dest: document",
|
||||
+ "Sec-Fetch-Mode: navigate",
|
||||
+ "Sec-Fetch-Site: none",
|
||||
+ "Sec-Fetch-User: ?1",
|
||||
+ "TE: Trailers"
|
||||
+ }
|
||||
+ },
|
||||
+ {
|
||||
+ /* Last one must be NULL. */
|
||||
+ .target = NULL
|
||||
+ }
|
||||
|
@ -674,6 +674,104 @@ signature:
|
||||
- 'accept-encoding: gzip, deflate, br'
|
||||
- 'accept-language: en-US,en;q=0.9'
|
||||
---
|
||||
name: chrome_116.0.5845.180_win10
|
||||
browser:
|
||||
name: chrome
|
||||
version: 116.0.5845.180
|
||||
os: win10
|
||||
mode: regular
|
||||
signature:
|
||||
options:
|
||||
tls_permute_extensions: true
|
||||
tls_client_hello:
|
||||
record_version: 'TLS_VERSION_1_0'
|
||||
handshake_version: 'TLS_VERSION_1_2'
|
||||
session_id_length: 32
|
||||
ciphersuites: [
|
||||
'GREASE',
|
||||
0x1301, 0x1302, 0x1303, 0xc02b, 0xc02f, 0xc02c, 0xc030,
|
||||
0xcca9, 0xcca8, 0xc013, 0xc014, 0x009c, 0x009d, 0x002f,
|
||||
0x0035
|
||||
]
|
||||
comp_methods: [0x00]
|
||||
extensions:
|
||||
- type: GREASE
|
||||
length: 0
|
||||
- type: server_name
|
||||
- type: extended_master_secret
|
||||
length: 0
|
||||
- type: renegotiation_info
|
||||
length: 1
|
||||
- type: supported_groups
|
||||
length: 10
|
||||
supported_groups: [
|
||||
'GREASE',
|
||||
0x001d, 0x0017, 0x0018
|
||||
]
|
||||
- type: ec_point_formats
|
||||
length: 2
|
||||
ec_point_formats: [0]
|
||||
- type: session_ticket
|
||||
length: 0
|
||||
- type: application_layer_protocol_negotiation
|
||||
length: 14
|
||||
alpn_list: ['h2', 'http/1.1']
|
||||
- type: status_request
|
||||
length: 5
|
||||
status_request_type: 0x01
|
||||
- type: signature_algorithms
|
||||
length: 18
|
||||
sig_hash_algs: [
|
||||
0x0403, 0x0804, 0x0401, 0x0503,
|
||||
0x0805, 0x0501, 0x0806, 0x0601
|
||||
]
|
||||
- type: signed_certificate_timestamp
|
||||
length: 0
|
||||
- type: keyshare
|
||||
length: 43
|
||||
key_shares:
|
||||
- group: GREASE
|
||||
length: 1
|
||||
- group: 29
|
||||
length: 32
|
||||
- type: psk_key_exchange_modes
|
||||
length: 2
|
||||
psk_ke_mode: 1
|
||||
- type: supported_versions
|
||||
length: 7
|
||||
supported_versions: [
|
||||
'GREASE', 'TLS_VERSION_1_3', 'TLS_VERSION_1_2'
|
||||
]
|
||||
- type: compress_certificate
|
||||
length: 3
|
||||
algorithms: [0x02]
|
||||
- type: application_settings
|
||||
length: 5
|
||||
alps_alpn_list: ['h2']
|
||||
- type: GREASE
|
||||
length: 1
|
||||
data: !!binary AA==
|
||||
- type: padding
|
||||
http2:
|
||||
pseudo_headers:
|
||||
- ':method'
|
||||
- ':authority'
|
||||
- ':scheme'
|
||||
- ':path'
|
||||
headers:
|
||||
- 'sec-ch-ua: "Chromium";v="116", "Not)A;Brand";v="24", "Google Chrome";v="116"'
|
||||
- 'sec-ch-ua-mobile: ?0'
|
||||
- 'sec-ch-ua-platform: "Windows"'
|
||||
- 'upgrade-insecure-requests: 1'
|
||||
- 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36'
|
||||
- 'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7'
|
||||
- 'sec-fetch-site: none'
|
||||
- 'sec-fetch-mode: navigate'
|
||||
- 'sec-fetch-user: ?1'
|
||||
- 'sec-fetch-dest: document'
|
||||
- 'accept-encoding: gzip, deflate, br'
|
||||
- 'accept-language: en-US,en;q=0.9'
|
||||
---
|
||||
name: chrome_99.0.4844.73_android12-pixel6
|
||||
browser:
|
||||
name: chrome
|
||||
|
@ -527,3 +527,91 @@ signature:
|
||||
- 'sec-fetch-site: none'
|
||||
- 'sec-fetch-user: ?1'
|
||||
- 'te: trailers'
|
||||
---
|
||||
name: firefox_117.0.1_win10
|
||||
browser:
|
||||
name: firefox
|
||||
version: 117.0.1
|
||||
os: win10
|
||||
mode: regular
|
||||
signature:
|
||||
tls_client_hello:
|
||||
record_version: 'TLS_VERSION_1_0'
|
||||
handshake_version: 'TLS_VERSION_1_2'
|
||||
session_id_length: 32
|
||||
ciphersuites: [
|
||||
0x1301, 0x1303, 0x1302, 0xc02b, 0xc02f, 0xcca9, 0xcca8, 0xc02c,
|
||||
0xc030, 0xc00a, 0xc009, 0xc013, 0xc014, 0x009c, 0x009d, 0x002f,
|
||||
0x0035
|
||||
]
|
||||
comp_methods: [0x00]
|
||||
extensions:
|
||||
- type: server_name
|
||||
- type: extended_master_secret
|
||||
length: 0
|
||||
- type: renegotiation_info
|
||||
length: 1
|
||||
- type: supported_groups
|
||||
length: 14
|
||||
supported_groups: [
|
||||
0x1d, 0x017, 0x18, 0x19, 0x0100, 0x0101
|
||||
]
|
||||
- type: ec_point_formats
|
||||
length: 2
|
||||
ec_point_formats: [0]
|
||||
- type: session_ticket
|
||||
length: 0
|
||||
- type: application_layer_protocol_negotiation
|
||||
length: 14
|
||||
alpn_list: ['h2', 'http/1.1']
|
||||
- type: status_request
|
||||
length: 5
|
||||
status_request_type: 0x01
|
||||
- type: delegated_credentials
|
||||
length: 10
|
||||
sig_hash_algs: [
|
||||
0x0403, 0x0503, 0x0603, 0x0203
|
||||
]
|
||||
- type: keyshare
|
||||
length: 107
|
||||
key_shares:
|
||||
- group: 29
|
||||
length: 32
|
||||
- group: 23
|
||||
length: 65
|
||||
- type: supported_versions
|
||||
length: 5
|
||||
supported_versions: [
|
||||
'TLS_VERSION_1_3', 'TLS_VERSION_1_2'
|
||||
]
|
||||
- type: signature_algorithms
|
||||
length: 24
|
||||
sig_hash_algs: [
|
||||
0x0403, 0x0503, 0x0603, 0x0804,
|
||||
0x0805, 0x0806, 0x0401, 0x0501,
|
||||
0x0601, 0x0203, 0x0201
|
||||
]
|
||||
- type: psk_key_exchange_modes
|
||||
length: 2
|
||||
psk_ke_mode: 1
|
||||
- type: record_size_limit
|
||||
length: 2
|
||||
record_size_limit: 16385
|
||||
- type: padding
|
||||
http2:
|
||||
pseudo_headers:
|
||||
- ':method'
|
||||
- ':path'
|
||||
- ':authority'
|
||||
- ':scheme'
|
||||
headers:
|
||||
- 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/117.0'
|
||||
- 'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8'
|
||||
- 'accept-language: en-US,en;q=0.5'
|
||||
- 'accept-encoding: gzip, deflate, br'
|
||||
- 'upgrade-insecure-requests: 1'
|
||||
- 'sec-fetch-dest: document'
|
||||
- 'sec-fetch-mode: navigate'
|
||||
- 'sec-fetch-site: none'
|
||||
- 'sec-fetch-user: ?1'
|
||||
- 'te: trailers'
|
||||
|
@ -149,6 +149,7 @@ class TestImpersonation:
|
||||
("curl_chrome104", None, None, "chrome_104.0.5112.81_win10"),
|
||||
("curl_chrome107", None, None, "chrome_107.0.5304.107_win10"),
|
||||
("curl_chrome110", None, None, "chrome_110.0.5481.177_win10"),
|
||||
("curl_chrome116", None, None, "chrome_116.0.5845.180_win10"),
|
||||
("curl_chrome99_android", None, None, "chrome_99.0.4844.73_android12-pixel6"),
|
||||
("curl_edge99", None, None, "edge_99.0.1150.30_win10"),
|
||||
("curl_edge101", None, None, "edge_101.0.1210.47_win10"),
|
||||
@ -160,6 +161,7 @@ class TestImpersonation:
|
||||
("curl_ff100", None, None, "firefox_100.0_win10"),
|
||||
("curl_ff102", None, None, "firefox_102.0_win10"),
|
||||
("curl_ff109", None, None, "firefox_109.0_win10"),
|
||||
("curl_ff117", None, None, "firefox_117.0.1_win10"),
|
||||
|
||||
# Test libcurl-impersonate by loading it with LD_PRELOAD to an app
|
||||
# linked against the regular libcurl and setting the
|
||||
@ -212,6 +214,14 @@ class TestImpersonation:
|
||||
"libcurl-impersonate-chrome",
|
||||
"chrome_110.0.5481.177_win10"
|
||||
),
|
||||
(
|
||||
"minicurl",
|
||||
{
|
||||
"CURL_IMPERSONATE": "chrome116"
|
||||
},
|
||||
"libcurl-impersonate-chrome",
|
||||
"chrome_116.0.5845.180_win10"
|
||||
),
|
||||
(
|
||||
"minicurl",
|
||||
{
|
||||
@ -299,6 +309,14 @@ class TestImpersonation:
|
||||
},
|
||||
"libcurl-impersonate-ff",
|
||||
"firefox_109.0_win10"
|
||||
),
|
||||
(
|
||||
"minicurl",
|
||||
{
|
||||
"CURL_IMPERSONATE": "ff117"
|
||||
},
|
||||
"libcurl-impersonate-ff",
|
||||
"firefox_117.0.1_win10"
|
||||
)
|
||||
]
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user