Curl não pode seguir "Esta página deve redirecionar automaticamente"

0

Estou tentando automatizar um login para a página da Web de um curso que tenho que verificar neste semestre. Eu sei que a solicitação POST que estou fazendo está sendo feita corretamente porque chego à página de redirecionamento intermediário que você obtém apenas com um login bem-sucedido.

Basicamente, estou atingindo uma dessas This page should automatically redirect. If nothing is happening please use the continue link below. páginas. Infelizmente, porque o curl não está seguindo este redirecionamento final, não parece estar definindo os últimos cookies para manter minha sessão.

Eu tenho lido o man para o curl, mas não consigo encontrar a maneira correta de fazer isso ( --max-time e --max-redirs são o que eu tentei e não estou trabalhando) .

Alguém pode me dizer o que eu preciso fazer para resolver isso?

Veja o que "estou trabalhando com

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, o link fornecido na página de redirecionamento intermediário é o mesmo link que o URL COURSEURL, portanto, o curling manual manual não funciona.

    
por Paul Nelson Baker 29.08.2014 / 23:56

1 resposta

0

Eu me sinto absolutamente bobo. A opção -L era tudo de que eu precisava. Na página do 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.
    
por 30.08.2014 / 00:19