Dans le navigateur, la navigation vers cette URL lance une requête 302 (déplacée temporairement) qui à son tour télécharge un fichier.
http://www.targetsite.com/target.php/?event=download&task_id=12
Lorsque je vois ce qui se passe réellement via Chrome tools network, je vois que la redirection va vers un chemin généré dynamiquement qui s'annule immédiatement après le téléchargement. En d'autres termes, même si je connais ce chemin complet Je n'aurai pas le temps de l'appeler manuellement.
Alors, comment utiliser la ligne de commande pour imiter les actions du navigateur?
J'ai essayé
curl --cookies bin/cookies.txt -O -L " http://www.targetsite.com/target.php/?event=download&task_id=12 " --compressed
mais cela renvoie juste du charabia. L'objectif est de télécharger par programme ce fichier sans avoir à naviguer sur le site. Malheureusement, je ne peux pas partager le site ici car il est derrière une connexion.
Vous devez fournir le -L
ou --location
option pour permettre à curl
de suivre les redirections HTTP.
Citant de man 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 --loca‐
tion-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 unmodified method.