recursive curl -l to get end state of a webpage
Andrew Henderson
I desire to know if a certain webpage returns the 200/OK HTTP status code (HSC). Of course, I can the first HSC of a webpage by doing curl -l URL.
The problem is that many webpages has redirections, and curl doesn't naturally flow with these redirections, so it stops in he first HSC, not continuing to the last HSC and returns:
301: Moved permanently
This does not help me to know, if the last webpage that a user would be moved to is good or not, or just if it returns 200 or not.
How could I make sure curl keeps going with the URL and redirections (if there are any) till it reaches the last url to check it return 200 or not?
The purpose is to know if a user should reache a typical webpage in the end (200/OK), or not.
11 Answer
To follow redirects use the -L flag:
curl -L mywebpage.comManpage of curl:
-L, --location (HTTP/HTTPS) If the server reports that the requested page has moved to a different location (indicated with a Location: header and a 3XX response code), this option will make curl redo the request on the new place. If used together with -i, --include or -I, --head, headers from all requested pages will be shown. When authentication is used, curl only sends its credentials to the initial host. If a redirect takes curl to a different host, it won't be able to intercept the user+password. See also --location-trusted on how to change this. You can limit the amount of redirects to follow by using the --max-redirs option. When curl follows a redirect and the request is not a plain GET (for example POST or PUT), it will do the following request with a GET if the HTTP response was 301, 302, or 303. If the response code was any other 3xx code, curl will re-send the following request using the same unmodi‐ fied method. You can tell curl to not change the non-GET request method to GET after a 30x response by using the dedicated options for that: --post301, --post302 and -post303. 2