Gostaria de verificar para onde um único URL redireciona. Um exemplo disso pode ser um link da página de resultados de pesquisa do Google (onde um clique sempre passa pelo servidor do Google).
Posso fazer isso com curl
?
Tente o seguinte:
$ LOCATION=`curl -I http://raspberrypi.stackexchange.com/a/1521/86 | perl -n -e '/^Location: (.*)$/ && print "$1\n"'`
$ echo "$LOCATION"
/questions/1508/how-do-i-access-the-distributions-name-on-the-command-line/1521#1521
Os URLs de redirecionamento do Google são um pouco diferentes. Eles retornam um redirecionamento Javascript, que poderia ser facilmente processado, mas por que não processar o URL original e se enrolar juntos?
$ URL="http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CFAQFjAA&url=http%3A%2F%2Fwww.raspberrypi.org%2F&ei=rv8oUODIIMvKswa4xoHQAg&usg=AFQjCNEBMoebclm0Gk0LCZIStJbF04U1cQ"
$ LOCATION=`echo "$URL" | perl -n -e '/url=([a-zA-Z0-9%\.]*)/ && print "$1\n"'`
$ echo "$LOCATION"
http%3A%2F%2Fwww.raspberrypi.org%2F
$ echo "$LOCATION" | perl -pe 's/%([0-9a-f]{2})/sprintf("%s", pack("H2",$1))/eig'
http://www.raspberrypi.org/
Existe uma maneira ainda mais fácil
iria imprimir
para URL
fonte
curl pode ser configurado para seguir redirecionamentos e imprimir variáveis após a conclusão. Portanto, o que você pede pode ser alcançado com o seguinte comando:
A página do manual explica os parâmetros necessários assim:
fonte
ou tente isso
fonte
curl -s -I 'http://yoururl'
e o conteúdo da respostacurl -s 'http://yoururl'
(você verá que o Google usa um javascript simples para o redirecionamento).Os parâmetros
-L (--location)
e-I (--head)
ainda fazendo solicitação HEAD desnecessária para o local-url.Se você tiver certeza de que não terá mais de um redirecionamento, é melhor desativar o local de acompanhamento e usar uma variável de curvatura% {redirect_url}.
Este código faz apenas uma solicitação HEAD para o URL especificado e leva redirect_url do cabeçalho do local:
fonte