How do you print received cookie info to stdout with curl?

How do you print received cookie info to stdout with curl?

According to the man pages if you use '-' as the file name for the -c --cookie-jar option it should print the cookie to stdout. The problem is I get an error:

curl: option -: is unknown

an example of the command I am running:

curl -c --cookie-jar - 'http://google.com'

You get that error because you use in the wrong way that option. When you see in a man page an option like:

-c, --cookie-jar <file name>

this mean that if you want to use that option, you must to use -c OR --cookie-jar, never both! These two are equivalent and, in fact, -c is the abbreviated form for --cookie-jar. There are many, many options in man pages which are designed in the same way.

In your case:

curl -c - 'http://google.com'

--cookie-jar is given as argument for -c option, so, it's interpreted as a file name, not like an option (as you may think), and - remains alone which leads to error because curl, indeed, doesn't have such an option.


Remove the "-c"

curl --cookie-jar - 'http://google.com'

Also you try verbose mode and see the cookie headers:

curl -v 'http://google.com'

You can save the cookies received and send them back to the server using the following commands:

1) To get/save the cookies to file "/tmp/cookies.txt":

curl -c /tmp/cookies.txt http://the.site.with.cookies/

2) To send the cookies back to the server (again using file "/tmp/cookies.txt"):

curl -b /tmp/cookies.txt http://the.site.with.cookies/

I hope it was useful.

[]s Ronaldo


You need to use two options to get only the cookie text on stdout:

--cookie-jar <file name> from the man page:

If you set the file name to a single dash, '-', the cookies will be written to stdout.

--output <file> from the man page:

Write output to instead of stdout.

Set it to /dev/null to throw it away.

--silent is also helpful.

Putting it all together:

curl --silent --output /dev/null --cookie-jar - 'http://www.google.com/'

Output:

# Netscape HTTP Cookie File
# https://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

#HttpOnly_.google.com   TRUE    /   FALSE   1512524163  NID 105=DownH33BKZnCsWJeGvsIC5cKRi7CPT3K3QjfUB-4js5xGw6P_6svMqU1yKlKOEu4XwL_TdddZlcMITefFGOtCCyzJNhO_7E9UMNpbQHja40IAerYP5Bwj-FhY1m35mZdvkVSmrg1pZPvH96IkVVVVVVVV

My use case: Test that your website uses the HttpOnly cookie setting, per the OWASP recommendation:

curl --silent --output /dev/null --cookie-jar - 'http://www.google.com/' | grep HttpOnly