Os "logs" que você mostra são a solicitação e a resposta HTTP. Eu não usaria nc
, já que parece estar apenas adicionando mais complexidade.
Eu recomendaria usar tcpdump
. Isso basicamente captura os mesmos dados que o wireshark, e você pode até mesmo analisar os despejos com o Wireshark. Se estou tentando reunir as solicitações e respostas HTTP, gosto de usar a opção -A
.
Isso parece funcionar para mostrar esses cabeçalhos:
tcpdump -A -s 8000 '(port 80 or port 443) and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' | awk --re-interval 'match($0,/^.{8}((GET |HTTP\/|POST |HEAD ).*)/,a){print "\n"a[1];h=2}$0~/^.{0,1}$/&&h{h--}h&&/^[A-Za-z0-9-]+: /{print}' >> your_log_file
O comando acima deve ser executado como root. Se você estiver executando como outro usuário, se desejar capturar apenas usando uma única interface, adicione -i <your_device>
a tcpdump
. Por exemplo:
tcpdump -i eth0 -A -s 8000 '(port 80 or port 443) and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' | awk --re-interval 'match($0,/^.{8}((GET |HTTP\/|POST |HEAD ).*)/,a){print "\n"a[1];h=2}$0~/^.{0,1}$/&&h{h--}h&&/^[A-Za-z0-9-]+: /{print}' >> your_log_file