web-dev-qa-db-fra.com

Est-il possible de suivre les redirections avec la ligne de commande cURL?

Je sais que dans un script php:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

suivra les redirections. Est-il possible de suivre les redirections avec la ligne de commande cURL?

383
user61629

Utilisez l'indicateur d'en-tête d'emplacement:

curl -L <URL>

652
Nathan Kuchta

J'avais un problème similaire. Je publie ma solution ici parce que je pense que cela pourrait aider l’un des commentateurs.

Pour moi, l'obstacle était que la page nécessitait un identifiant, puis me donnait une nouvelle URL via javascript. Voici ce que je devais faire:

curl -c cookiejar -g -O -J -L -F "j_username=yourusename" -F "j_password=yourpassword" <URL>

Notez que j_username et j_password sont les noms des champs du formulaire de connexion de mon site Web. Vous devrez ouvrir la source de la page Web pour voir quel est le "nom" du champ nom d'utilisateur et le "nom" du champ mot de passe est dans votre cas. Après cela, je vais dans un fichier html avec un script Java dans lequel la nouvelle URL a été intégrée. Après analyse, il suffit de resoumettre avec la nouvelle URL:

curl -c cookiejar -g -O -J -L -F "j_username=yourusename" -F "j_password=yourpassword" <NEWURL>

23
user3817445

Comme dit, pour suivre les redirections vous pouvez utiliser le drapeau -L ou --location:

curl -L http://www.example.com

Mais si vous voulez limiter le nombre de redirections, ajoutez le paramètre --max-redirs

--max-redirs <num>

Définissez le nombre maximum de suivis de redirection autorisés. Si -L, --location est utilisé, cette option peut être utilisée pour empêcher curl de suivre les redirections "in absurdum". Par défaut, la limite est fixée à 50 redirections. Définissez cette option sur -1 pour la rendre illimitée. Si cette option est utilisée plusieurs fois, la dernière sera utilisée.

5
freedev