mirror of
https://github.com/lwthiker/curl-impersonate.git
synced 2026-10-11 03:46:33 +00:00
* Enable TLS extension 35 (session_ticket) which Curl turned off. * Set the signature algorithms to match Chrome's. * Fix the headers to exactly match Chrome. It seems that the Client Hello message is now identical to Chrome. However, it is still getting rejected.
42 lines
1.8 KiB
Bash
Executable File
42 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Find the directory of this script
|
|
dir=`echo "$0" | sed 's%/[^/]*$%%'`
|
|
|
|
PIPE=/tmp/curl-pipe
|
|
|
|
rm -f "$PIPE" && mkfifo "$PIPE"
|
|
exec 5<>"$PIPE" 3>"$PIPE" 4<"$PIPE" 5>&-
|
|
|
|
# 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-ch" \
|
|
--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 'Connection: keep-alive' \
|
|
-H 'sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="98", "Google Chrome";v="98"' \
|
|
-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/98.0.4758.102 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.9' \
|
|
-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 --false-start --tlsv1.2 \
|
|
$@ >&3
|
|
|
|
exec 3>&-
|
|
|
|
IFS= read -d '' -r -n 2 -u 4 header
|
|
|
|
# Due to the "Accept-Encoding: gzip" header, we may receive a gzipped file.
|
|
if [ "$(echo -n $header | xxd -l 2 -p)" == "1f8b" ]; then
|
|
(printf "%s" "$header"; cat <&4) | gzip -cd;
|
|
else
|
|
printf "%s" "$header"; cat <&4;
|
|
fi
|