Sto cercando di giocare con netcat per saperne di più su come funziona HTTP. Mi piacerebbe scriverne un po 'in bash o in Perl, ma all'inizio ho sperimentato un ostacolo nei miei test.Script di una richiesta di intestazione HTTP con netcat
Se eseguo netcat direttamente dal prompt e digito una richiesta HEAD, funziona e ricevo le intestazioni per il server Web che sto sondando.
Questo funziona:
[[email protected] ~]$ nc 10.1.1.2 80 HEAD/HTTP/1.0 HTTP/1.1 200 OK MIME-Version: 1.0 Server: Edited out Content-length: 0 Cache-Control: public Expires: Sat, 01 Jan 2050 18:00:00 GMT [[email protected] ~]$
Ma quando ho messo le stesse informazioni in un file di testo e dei mangimi a netcat attraverso un tubo o tramite redirezione, in preparazione per lo scripting, non restituisce le intestazioni.
Il file di testo consiste nella richiesta HEAD e due ritorni a capo:
HEAD/HTTP/1.0
Invio le stesse informazioni via eco o printf non funziona neanche.
$ printf "HEAD/HTTP/1.0\r\n"; |nc -n 10.1.1.2 80 $ /bin/echo -ne 'HEAD/HTTP/1.0\n\n' |nc 10.1.1.2 80
Qualche idea su cosa sto facendo male? Non sono sicuro che si tratti di un problema di bash, un problema di eco o un problema di netcat.
Ho controllato il traffico tramite Wireshark e la richiesta riuscita (digitata manualmente) invia il newline finale in un secondo pacchetto, mentre i metodi echo, printf e text mantengono la newline nello stesso pacchetto, ma io sono non sono sicuro di cosa provoca questo comportamento.
Cordiali saluti, il \ r \ n nel printf è intenzionale; Sono passato tra \ r e \ n in varie combinazioni per vedere se ha cambiato qualcosa - senza alcun effetto. – romandas