Existe uma maneira de seguir redirecionamentos com a linha de comando cURL?

456

Eu sei que em um script php:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

seguirá redirecionamentos. Existe uma maneira de seguir redirecionamentos com a linha de comando cURL?

LDN
fonte

Respostas:

763

Use o sinalizador de cabeçalho do local:

curl -L <URL>

Nathan Kuchta
fonte
1
Isso também não funciona com a autenticação no Google para acessar as planilhas. : /
fatuhoku 16/05
13
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."
hudolejev
25

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>

user3817445
fonte
15

Como dito, para seguir os redirecionamentos, você pode usar a bandeira -Lou --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, --locationfor 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.

freedev
fonte