Filtra a saída do cabeçalho curl no modo detalhado

0

Usando curl -v ... , ou seja, o modo detalhado que imprime os cabeçalhos de entrada e saída. No entanto, esta informação não é canalizada e eu não posso encontrar linhas que eu não preciso.

Como você pode filtrar a saída do cabeçalho de curl?

    
por Igor Spasic 26.11.2015 / 13:40

2 respostas

1

A saída do cabeçalho de curl é impressa no erro padrão. Então você tem que usar o redirecionamento, por exemplo, grepping out Content-Length header:

curl -v google.com 2>&1 | grep -vi content-length
    
por 26.11.2015 / 14:41
1

Em vez de usar curl -v (modo detalhado), a melhor opção é informar curl para enviar os cabeçalhos para STDOUT sem todo o material de depuração extra e eliminar o corpo da resposta. Dessa forma, você pode percorrer exatamente os cabeçalhos de resposta, evitar a necessidade de redirecionamento de shell e saber que sua filtragem não precisará entender e analisar as mensagens de depuração internas de curl (que provavelmente não são consideradas parte de sua API ).

Você pode fazer isso combinando o -I (corpo da queda), -X«METHOD» (método de substituição) e -s (silêncio, barras de progresso de queda) parâmetros .

curl -sIXGET https://www.google.com/ | grep -vi content-length
  • -s instrui curl para ocultar as barras de progresso . Se omitido e curl detectar que está sendo executado em um terminal, ele ignorará o pipe e falará diretamente com o terminal para mostrar as barras de progresso, que geralmente são inúteis e atrapalham o terminal.
  • -I instrui curl a se desconectar do servidor depois de receber os cabeçalhos em vez de esperar por um corpo. Isso é útil se você, como declarado em sua pergunta, estiver interessado em passar através de somente os cabeçalhos de resposta HTTP . Ele também tem o efeito colateral de padronizar o método de solicitação para HEAD como se você tivesse especificado -XHEAD .
  • -X«method» (por exemplo, -XGET ) substitui o método. Em muitos casos, uma solicitação de HEAD é o que você deseja porque o padrão HTTP diz que HEAD deve retornar exatamente os mesmos cabeçalhos que a mesma solicitação GET . No entanto, ao depurar um servidor ou ao trabalhar com um que não esteja em conformidade com o padrão, pode ser útil instruir curl a fazer uma solicitação GET , mas desconectar antes de ler o corpo da resposta. Dessa forma, você pode ver os cabeçalhos real que o servidor enviaria em resposta a GET em vez de esperar que o servidor seja implementado corretamente.
por 15.08.2018 / 16:58

Tags