A ferramenta que você está procurando é socat
. Como você está testando um único servidor da Web, pode solicitá-lo para estabelecer uma conexão permanente com esse servidor (desde que não escolha fechá-lo - ajuste seus tempos de espera de acordo) e, quando isso for feito, você poderá usar o servidor. conexão como um túnel. Abaixo estão duas maneiras de conseguir isso.
Consultando através de um socket Unix
curl
tem uma opção --unix-socket
que permite enviar solicitações HTTP e receber respostas HTTP através de um soquete Unix (obrigado, thrig, pelo seu comentário esclarecedor)
Você usaria assim:
socat TCP:10.5.1.1:80 UNIX-LISTEN:/tmp/curl.sock,fork
Então, em outro terminal:
curl --unix-socket /tmp/curl.sock http://10.5.1.1/message1.txt
curl --unix-socket /tmp/curl.sock http://10.5.1.1/message2.txt
...
Consultando por meio de um proxy HTTP pseudo
Você também pode disponibilizar seu encapsulamento como um pseudo-proxy através do qual wget
, curl
, ... se conectaria. Esta solução tem a vantagem de não se limitar a curl
.
Desta vez, socat
ouve uma porta TCP local (digamos 3128):
socat TCP:10.5.1.1:80 TCP-LISTEN:3128,fork,reuseaddr
Então, em outro terminal:
export http_proxy='http://localhost:3128'
curl http://10.5.1.1/message.txt
wget http://10.5.1.1/message.txt
....
Observe que, como o cliente HTTP está usando um proxy, a solicitação HTTP será levemente alterada e isso pode não ser desejável.
É claro que nenhuma dessas duas soluções se destina a ser usada com vários servidores HTTP, já que este é o seu servidor web no final do canal que recebe todas as solicitações.