Se você colocar este link em um navegador:
https://unix.stackexchange.com/q/453740#453743
ele retorna isso:
https://unix.stackexchange.com/questions/453740/installing-busybox-for-ubuntu#453743
No entanto, o cURL descarta o Hash:
$ curl -I https://unix.stackexchange.com/q/453740#453743
HTTP/2 302
cache-control: no-cache, no-store, must-revalidate
content-type: text/html; charset=utf-8
location: /questions/453740/installing-busybox-for-ubuntu
O cURL tem uma opção para manter o Hash com o URL resultante? Essencialmente, estou tentando escrever um script que resolva URLs como um navegador - é o que tenho até agora, mas é interrompido se o URL contiver um Hash:
$ set https://unix.stackexchange.com/q/453740#453743
$ curl -L -s -o /dev/null -w %{url_effective} "$1"
https://unix.stackexchange.com/questions/453740/installing-busybox-for-ubuntu
De acordo com este tópico no
curl
site intitulado: Re: Como enviar parte de fragmento de URL? a marca de hash destina-se ao navegador e não ao servidor, portanto, por quecurl
está truncada.Olhando, não vi nenhum método para
curl
persistir além de codificá-lo como%23
, o que acho que não é o que você deseja.Solução
Como é o cliente que está mantendo a string após o hashmark, eu "inclinaria para ele" e simplesmente o analisaria e depois o anexaria novamente ao URL retornado
curl
como um verdadeiro cliente de navegador faria:Referências
Curl baixar páginas inteiras .
A
#
aponta para um fragmento .Ambos não são compatíveis.
cerquilha
O símbolo
#
é usado no final de um link de página da web para marcar uma posição dentro de uma página inteira.URLs de fragmentos
O que é quando um link tem um sinal de libra "#" nele
Wikipedia: Localizador uniforme de recursos (URL)
Seu principal uso é mover a "camada de apresentação" (o que é visualizado) para o início de um item.
ondulação
Não há "camada de apresentação" no curl, seu objetivo é baixar páginas inteiras, não partes ou fragmentos de páginas. Portanto, não há uso de um marcador de "fragmento" no curl. Ele é simplesmente ignorado pelo curl.
Gambiarra
Reanexar a tag ao link (redirecionado):
Irá imprimir:
Uma solução bem mais rápida é não baixar a página. Ele está sendo redirecionado para de
/dev/null
qualquer maneira. Removendo a-L
opção e perguntando qual seria o link se o (primeiro) redirecionamento fosse seguido. O primeiro redirecionamento funciona neste caso e na maioria dos outros.