Respostas:
Use o sinalizador de cabeçalho do local:
curl -L <URL>
man curl
: "Quando a autenticação é usada, o curl envia apenas suas credenciais para o host inicial. <...> Veja também --location-trust sobre como alterar isso."
Eu tive um problema parecido. Estou postando minha solução aqui porque acredito que ela possa ajudar um dos comentaristas.
Para mim, o obstáculo era que a página exigia um login e depois me forneceu uma nova URL por javascript. Aqui está o que eu tinha que fazer:
curl -c cookiejar -g -O -J -L -F "j_username=yourusename" -F "j_password=yourpassword" <URL>
Observe que j_username e j_password é o nome dos campos do formulário de login do meu site. Você precisará abrir a fonte da página da Web para ver qual é o seu nome no campo "nome" do nome de usuário e "nome" no campo da senha. Depois disso, vou para um arquivo html com script java no qual a nova URL foi incorporada. Depois de analisar isso, basta reenviar com o novo URL:
curl -c cookiejar -g -O -J -L -F "j_username=yourusename" -F "j_password=yourpassword" <NEWURL>
Como dito, para seguir os redirecionamentos, você pode usar a bandeira -L
ou --location
:
curl -L http://www.example.com
Mas, se você quiser limitar o número de redirecionamentos , adicione o parâmetro--max-redirs
--max-redirs <num>
Defina o número máximo permitido de seguimentos de redirecionamento. Se
-L
,--location
for usado, essa opção poderá ser usada para impedir que os cachos sigam os redirecionamentos "in absurdum". Por padrão, o limite é definido para 50 redirecionamentos. Defina esta opção como -1 para torná-la ilimitada. Se esta opção for usada várias vezes, a última será usada.