Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to duplicate a request using wget (or curl) with raw headers?

I was deubgging some http requests and found that I can grab request headers in this type of format:

GET /download?123456:75b3c682a7c4db4cea19641b33bec446/document.docx HTTP/1.1
Host: www.site.com
User-Agent: Mozilla/5.0 Gecko/2010 Firefox/5
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Referer: http://www.site.com/dc/517870b8cc7
Cookie: lang=us; reg=1787081http%3A%2F%2Fwww.site.com%2Fdc%2F517870b8cc7

Is it possible or is there an easy way to reconstruct that request using wget or curl (or another CLI tool?)

From reading the wget manual page I know I can set several of these things individually, but is there an easier way to send a request with all these variables from the command line?

like image 788
cwd Avatar asked Oct 01 '11 04:10

cwd


People also ask

How do you add multiple headers to curl request?

To pass multiple headers in a curl request you simply add additional -H or --header to your curl command.

How do you pass headers in curl command?

To send an HTTP header with a Curl request, you can use the -H command-line option and pass the header name and value in "Key: Value" format. If you do not provide a value for the header, this will remove the standard header that Curl would otherwise send. The number of HTTP headers is unlimited.

How do I pass a header in wget?

wget allows you to send an HTTP request with custom HTTP headers. To supply custom HTTP headers, use "--header" option. You can use "--header" option as many time as you want in a single run. If you would like to permanently set the default HTTP request header you want to use with wget, you can use ~/.

How do I get response headers in curl?

In default mode, curl doesn't display request or response headers, only displaying the HTML contents. To display both request and response headers, we can use the verbose mode curl -v or curl -verbose . In the resulting output: The lines beginning with > indicate request headers.


1 Answers

Yes, you just need to combine all the headers using --header

wget --header="User-Agent: Mozilla/5.0 Gecko/2010 Firefox/5" \
--header="Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" \
--header="Accept-Language: en-us,en;q=0.5" \
--header="Accept-Encoding: gzip, deflate"
--header="Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" \
--header="Cookie: lang=us; reg=1787081http%3A%2F%2Fwww.site.com%2Fdc%2F517870b8cc7" \
--referer=http://www.site.com/dc/517870b8cc7
http://www.site.com/download?123456:75b3c682a7c4db4cea19641b33bec446/document.docx

If you are trying to do some illegal download,
it might fail,
is depends on how hosting URL being programmed

like image 148
ajreal Avatar answered Sep 22 '22 15:09

ajreal