@@ -89,6 +89,8 @@ Also, you can use some new stuff that is not supported by curl.
89
89
* ` gocurl --tls-split-hello 5:50 https://httpbin.agrd.workers.dev/get` split
90
90
TLS ClientHello in two parts and make a 50ms delay after sending the first
91
91
part.
92
+ * ` gocurl --tls-random " gyufwmGYeIiq0B4nUjEYu3NcqVdlHbIXhx74fq4terc=" https://httpbin.agrd.workers.dev/get`
93
+ use a custom TLS ClientHello random value.
92
94
* ` gocurl -v --ech https://crypto.cloudflare.com/cdn-cgi/trace` enables support
93
95
for ECH (Encrypted Client Hello) for the request. More on this [below](# ech).
94
96
* ` gocurl --dns-servers " tls://dns.google" https://httpbin.agrd.workers.dev/get`
@@ -262,58 +264,41 @@ Usage:
262
264
gocurl [OPTIONS]
263
265
264
266
Application Options:
265
- --url=<URL> URL the request will be made to. Can be specified
266
- without any flags.
267
+ --url=<URL> URL the request will be made to. Can be specified without any flags.
267
268
-X, --request=<method> HTTP method. GET by default.
268
- -d, --data=<data> Sends the specified data to the HTTP server using
269
- content type application/x-www-form-urlencoded.
270
- -H, --header= Extra header to include in the request. Can be
271
- specified multiple times.
272
- -x, --proxy=[protocol://username:password@]host[:port] Use the specified proxy. The proxy string can be
273
- specified with a protocol:// prefix.
274
- --connect-to=<HOST1:PORT1:HOST2:PORT2> For a request to the given HOST1:PORT1 pair, connect
275
- to HOST2:PORT2 instead. Can be specified multiple
276
- times.
269
+ -d, --data=<data> Sends the specified data to the HTTP server using content type application/x-www-form-urlencoded.
270
+ -H, --header= Extra header to include in the request. Can be specified multiple times.
271
+ -x, --proxy=[protocol://username:password@]host[:port] Use the specified proxy. The proxy string can be specified with a protocol:// prefix.
272
+ --connect-to=<HOST1:PORT1:HOST2:PORT2> For a request to the given HOST1:PORT1 pair, connect to HOST2:PORT2 instead. Can be specified
273
+ multiple times.
277
274
-I, --head Fetch the headers only.
278
275
-k, --insecure Disables TLS verification of the connection.
279
276
--tlsv1.3 Forces gocurl to use TLS v1.3 or newer.
280
277
--tlsv1.2 Forces gocurl to use TLS v1.2 or newer.
281
- --tls-max=<VERSION> (TLS) VERSION defines maximum supported TLS version.
282
- Can be 1.2 or 1.3. The minimum acceptable version is
283
- set by tlsv1.2 or tlsv1.3.
278
+ --tls-max=<VERSION> (TLS) VERSION defines maximum supported TLS version. Can be 1.2 or 1.3. The minimum acceptable
279
+ version is set by tlsv1.2 or tlsv1.3.
284
280
--ciphers=<space-separated list of ciphers> Specifies which ciphers to use in the connection, see
285
- https://go.dev/src/crypto/tls/cipher_suites.go for the
286
- full list of available ciphers.
287
- --tls-servername=<HOSTNAME> Specifies the server name that will be sent in TLS
288
- ClientHello
281
+ https://go.dev/src/crypto/tls/cipher_suites.go for the full list of available ciphers.
282
+ --tls-servername=<HOSTNAME> Specifies the server name that will be sent in TLS ClientHello
289
283
--http1.1 Forces gocurl to use HTTP v1.1.
290
284
--http2 Forces gocurl to use HTTP v2.
291
285
--http3 Forces gocurl to use HTTP v3.
292
286
--ech Enables ECH support for the request.
293
- --echgrease Forces sending ECH grease in the ClientHello, but does
294
- not try to resolve the ECH configuration.
295
- --echconfig=<base64-encoded data> ECH configuration to use for this request. Implicitly
296
- enables --ech when specified.
297
- -4, --ipv4 This option tells gocurl to use IPv4 addresses only
298
- when resolving host names.
299
- -6, --ipv6 This option tells gocurl to use IPv6 addresses only
300
- when resolving host names.
301
- --dns-servers=<DNSADDR1,DNSADDR2> DNS servers to use when making the request. Supports
302
- encrypted DNS: tls://, https://, quic://, sdns://
303
- --resolve=<[+]host:port:addr[,addr]...> Provide a custom address for a specific host. port is
304
- ignored by gocurl. ' * ' can be used instead of the host
305
- name. Can be specified multiple times.
306
- --tls-split-hello=<CHUNKSIZE:DELAY> An option that allows splitting TLS ClientHello in two
307
- parts in order to avoid common DPI systems detecting
308
- TLS. CHUNKSIZE is the size of the first bytes before
309
- ClientHello is split, DELAY is delay in milliseconds
310
- before sending the second part.
311
- --json-output Makes gocurl write machine-readable output in JSON
312
- format.
313
- -o, --output=<file> Defines where to write the received data. If not set,
314
- gocurl will write everything to stdout.
315
- --experiment=<name[:value]> Allows enabling experimental options. See the
316
- documentation for available options. Can be specified
287
+ --echgrease Forces sending ECH grease in the ClientHello, but does not try to resolve the ECH configuration.
288
+ --echconfig=<base64-encoded data> ECH configuration to use for this request. Implicitly enables --ech when specified.
289
+ -4, --ipv4 This option tells gocurl to use IPv4 addresses only when resolving host names.
290
+ -6, --ipv6 This option tells gocurl to use IPv6 addresses only when resolving host names.
291
+ --dns-servers=<DNSADDR1,DNSADDR2> DNS servers to use when making the request. Supports encrypted DNS: tls://, https://, quic://,
292
+ sdns://
293
+ --resolve=<[+]host:port:addr[,addr]...> Provide a custom address for a specific host. port is ignored by gocurl. ' * ' can be used instead of
294
+ the host name. Can be specified multiple times.
295
+ --tls-split-hello=<CHUNKSIZE:DELAY> An option that allows splitting TLS ClientHello in two parts in order to avoid common DPI systems
296
+ detecting TLS. CHUNKSIZE is the size of the first bytes before ClientHello is split, DELAY is delay
297
+ in milliseconds before sending the second part.
298
+ --tls-random=<base64> Base64-encoded 32-byte TLS ClientHello random value.
299
+ --json-output Makes gocurl write machine-readable output in JSON format.
300
+ -o, --output=<file> Defines where to write the received data. If not set, gocurl will write everything to stdout.
301
+ --experiment=<name[:value]> Allows enabling experimental options. See the documentation for available options. Can be specified
317
302
multiple times.
318
303
-v, --verbose Verbose output (optional).
319
304
0 commit comments