Faça Requisições HTTP Sem Curl

Você pode estar trabalhando em um servidor sem curl ou wget. Você precisa testar um endpoint, mas essas ferramentas estão ausentes. Você pode usar o Bash para enviar requisições HTTP diretamente.

O Bash possui um recurso oculto chamado /dev/tcp. Este não é um arquivo real. É um dispositivo especial que o Bash entende. Quando você escreve em /dev/tcp/hostname/port, o Bash abre uma conexão TCP para você.

Como funciona:

Você usa o comando exec para gerenciar descritores de arquivo. Por exemplo, você pode abrir o descritor de arquivo 3 para leitura e escrita.

A sintaxe é assim: exec 3<>/dev/tcp/example.com/80

Assim que esta conexão estiver aberta, você envia dados para ela. Você também lê dados dela. Este método mostra como o protocolo HTTP funciona em baixo nível.

Como fazer uma requisição GET:

Para obter dados, você deve enviar os cabeçalhos corretos. Você precisa de uma linha em branco ao final para sinalizar o término da sua requisição.

Siga estes passos:

Script de exemplo:

HOST="example.com"
PORT=80
REQUEST_PATH="/"
exec 3<>/dev/tcp/${HOST}/${PORT}
printf "GET ${REQUEST_PATH} HTTP/1.0\r\nHost: ${HOST}\r\n\r\n" >&3
cat <&3
exec 3>&-

Esta técnica ajuda você a entender como clientes e servidores se comunicam. É uma habilidade útil para depuração em sistemas minimalistas.

Fonte: https://dev.to/kelvin_kariuki_20f4bec616/developer-take-on-til-you-can-make-http-requests-without-curl-using-bash-devtcp-578k