In order to handle sessions using curl, you will typically need to save cookies returned by the server and send them back in subsequent requests. This is how you can maintain a "session" with the server. Here's how you can do that:
Saving Cookies
To save cookies that are returned by the server, you can use the -c
or --cookie-jar
option followed by the name of the file to save the cookies to:
curl -c cookies.txt http://example.com
This will save all cookies from http://example.com
to the file cookies.txt
.
Sending Cookies
To send cookies back to the server, you use the -b
or --cookie
option followed by the name of the file containing the cookies:
curl -b cookies.txt http://example.com
This will send all cookies from the file cookies.txt
to http://example.com
.
Handling Sessions
To handle a session, you basically need to chain these two together. For example, let's say you have a login endpoint that returns a session cookie. You can do something like this:
# Login and save the session cookie
curl -c cookies.txt -d "username=user&password=pass" http://example.com/login
# Make another request, sending the session cookie
curl -b cookies.txt http://example.com/some-protected-page
In the first command, we're POSTing some login data (the -d
option) to the login page and saving the returned session cookie. In the second command, we're sending that session cookie along with our request to a protected page. The server should recognize us from our session cookie and show us the protected page.
Note: The -d
option tells curl that we're sending POST data, and the "username=user&password=pass"
is the actual data we're sending. This is just an example, and the actual data you need to send will depend on the server you're interacting with.