¿Hay alguna manera de seguir los redireccionamientos con la línea de comando cURL?

456

Sé que en un script php:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

seguirá las redirecciones. ¿Hay alguna manera de seguir los redireccionamientos con la línea de comando cURL?

LDN
fuente

Respuestas:

763

Use la bandera del encabezado de ubicación:

curl -L <URL>

Nathan Kuchta
fuente
1
Esto tampoco funciona con la autenticación con Google para acceder a las hojas de cálculo. : /
fatuhoku
13
man curl: "Cuando se usa la autenticación, curl solo envía sus credenciales al host inicial. <...> Vea también --location-Trusted sobre cómo cambiar esto".
hudolejev
25

Tuve un problema similar. Estoy publicando mi solución aquí porque creo que podría ayudar a uno de los comentaristas.

Para mí, el obstáculo era que la página requería un inicio de sesión y luego me daba una nueva URL a través de JavaScript. Esto es lo que tuve que hacer:

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

Tenga en cuenta que j_username y j_password es el nombre de los campos para el formulario de inicio de sesión de mi sitio web. Tendrá que abrir la fuente de la página web para ver cuál es el 'nombre' del campo de nombre de usuario y el 'nombre' del campo de contraseña en su caso. Después de eso, voy a un archivo html con script java en el que se insertó la nueva URL. Después de analizar esto, vuelva a enviarlo con la nueva URL:

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

usuario3817445
fuente
15

Como se dijo, para seguir los redireccionamientos puede usar la bandera -Lo --location:

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

Pero, si desea limitar el número de redireccionamientos , agregue el parámetro--max-redirs

--max-redirs <num>

Establezca el número máximo de redireccionamientos seguidos permitidos. Si -L, --locationse utiliza, esta opción se puede utilizar para evitar la torsión de las siguientes redirecciones "en el absurdo". Por defecto, el límite se establece en 50 redirecciones. Establezca esta opción en -1 para que sea ilimitada. Si esta opción se usa varias veces, se usará la última.

freedev
fuente