Muitas pessoas recomendam telnet para isso e funciona, mas eu prefiro usar netcat . A razão é que telnet foi projetado para funcionar com um protocolo em particular, o protocolo TELNET (que eu nem tenho certeza se alguém usa mais ...), então ele tem todos os tipos de sinos e assobios (ou seja, ele reconhece um todo grupo de opções, comandos e caracteres de escape) que são completamente irrelevantes para o HTTP. Por outro lado, netcat simplesmente pega sua entrada padrão e a envia, byte-by-byte, pela rede. Nada mais. Isso é exatamente o que você precisa para enviar uma solicitação HTTP bruta.
Existem várias versões de netcat , mas geralmente seu uso é igual a telnet :
netcat host port < my_http_request.txt
(no meu computador, o nome do programa é nc6 em vez de netcat , portanto, substitua conforme apropriado)