Curl no puede seguir "Esta página debería redirigirse automáticamente"


0

Estoy intentando automatizar un inicio de sesión para la página web de un curso. Tengo que consultar este semestre. Sé que la solicitud POST que estoy haciendo se está haciendo correctamente porque llego a la página de redireccionamiento intermedio que solo obtienes con un inicio de sesión exitoso.

Básicamente estoy golpeando una de esas This page should automatically redirect. If nothing is happening please use the continue link below.páginas. Desafortunadamente, debido a que curl no sigue esta redirección final, no parece estar configurando las últimas cookies para mantener mi sesión.

He estado leyendo manfor curl, pero parece que no puedo encontrar la forma correcta de hacerlo ( --max-timey --max-redirses lo que he intentado y no estoy trabajando).

¿Alguien puede decirme qué debo hacer para resolver esto?

Esto es con lo que estoy trabajando

LOGINURL="http://www.[redacted].edu/login/index.php" # This is not https because they don't support it.
COURSEURL="http://www.[redacted].edu/course/[redacted]"
USERAGENT="Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0"
COOKIEJAR="${HOME}/edu.cookies"
POSTDATA="[redacted]"
curl -o "index.html" --referer "${LOGINURL}" --user-agent "${USERAGENT}" --cookie-jar "${COOKIEJAR}" --data "${POSTDATA}" "${LOGINURL}"
curl -o "course.html" --referer "${LOGINURL}" --user-agent "${USERAGENT}" --cookie "${COOKIEJAR}" "${COURSEURL}"

PS, el enlace que se proporciona en la página de redireccionamiento intermedio es el mismo enlace que la URL de COURSEURL, por lo que el curvado manual no funciona.


¿Sabes qué tipo de redirección están usando? Javascript? ¿Lado del servidor? META actualizar?
ernie

1
@ernie Apenas vi tu comentario, es una redirección del lado del servidor. La fuente de la página no tiene Javascript ni tiene una meta-actualización. Resulta que todos los rizos necesarios eran -L.
Paul Nelson Baker

Respuestas:


0

Me siento absolutamente tonta. La -Lopción era todo lo que necesitaba. Desde la página del manual:

-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 unmodified method.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.