bash - curl 302 redirect no funciona(línea de comando)
scrape (1)
En el navegador, la navegación a esta URL inicia una solicitud 302 (movida temporalmente) que a su vez descarga un archivo.
http://www.targetsite.com/target.php/?event=download&task_id=123
Cuando veo lo que realmente está pasando a través de las herramientas de red de Chrome, veo que la redirección va a una ruta generada dinámicamente que se cancela inmediatamente después de la descarga. En otras palabras, incluso si conozco esa ruta completa, no tendré tiempo para llamarlo manualmente.
Entonces, ¿cómo al usar la línea de comandos puedo imitar las acciones del navegador?
Lo intenté
curl --cookies bin / cookies.txt -O -L " http://www.targetsite.com/target.php/?event=download&task_id=123 " --compressed
pero esto solo devuelve galimatías. El objetivo de esto es descargar este archivo mediante programación sin tener que navegar al sitio. Desafortunadamente, no puedo compartir el sitio aquí porque está detrás de un inicio de sesión.
--location
opción -L
o --location
para permitir que curl
siga los redireccionamientos HTTP.
Citando del 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.