Preciso obter o URL final após um redirecionamento de página, de preferência com curl ou wget.
Por exemplo, http://google.com pode redirecionar para http://www.google.com .
O conteúdo é fácil de obter (ex. curl --max-redirs 10 http://google.com -L
), Mas estou interessado apenas no url final (no primeiro caso http://www.google.com ).
Existe alguma maneira de fazer isso usando apenas ferramentas integradas do Linux? (apenas linha de comando)
:-)
-I
caso contrário, ele realmente baixará o arquivo.curl -A ...
para redirecionar para o local esperado.Obrigado, isso me ajudou. Fiz algumas melhorias e envolvi isso em um script auxiliar "finalurl":
-o
saída para/dev/null
-I
não faça o download, apenas descubra o URL final-s
modo silencioso, sem barras de progressoIsso tornou possível chamar o comando de outros scripts como este:
fonte
finalurl() { curl --silent --location --head --output /dev/null --write-out '%{url_effective}' -- "$@"; }
como outra opção:
Mas não passa do primeiro.
fonte
Você pode fazer isso com wget normalmente.
wget --content-disposition
"url" adicionalmente, se você adicionar-O /dev/null
, não estará realmente salvando o arquivo.wget -O /dev/null --content-disposition example.com
fonte
-O /dev/null
apenas de para-O-
. Melhor:wget -O- --content-disposition example.com
Obrigado. Acabei implementando suas sugestões: curl -i + grep
Retorna em branco se o site não redirecionar, mas isso é bom o suficiente para mim, pois funciona em redirecionamentos consecutivos.
Pode ser um bug, mas à primeira vista funciona bem.
fonte
Isso funcionaria:
fonte
Os parâmetros
-L (--location)
e-I (--head)
ainda fazendo HEAD-request desnecessária para o location-url.Se você tem certeza de que não terá mais de um redirecionamento, é melhor desabilitar o local de seguimento e usar uma variável curl% {redirect_url}.
Este código faz apenas uma solicitação HEAD para o URL especificado e pega redirect_url do cabeçalho do local:
Teste rápido
all_videos_link.txt
- 50 links de goo.gl + bit.ly que redirecionam para o youtube1. Com seguir localização
Resultados:
2. Sem seguir localização
Resultados:
fonte
Não tenho certeza de como fazer isso com curl, mas libwww-perl instala o alias GET.
fonte
Você pode tentar com isso?
Nota: quando você executa o comando curl -I http://seu-domínio.com tem que usar aspas simples no comando, como
curl -I 'http://your-domain.com'
fonte
Você pode usar grep. não vamos dizer para onde ele está redirecionando também? Basta ver isso.
fonte