O envio e a resposta a solicitações HTTP são tarefas muito diferentes. A maioria dos softwares manipula apenas um dos lados: cliente (enviando a solicitação e lendo a resposta) para navegadores da Web e ferramentas como wget, do lado do servidor (ouvindo solicitações e respondendo a elas) para servidores da Web.
Proxies como Charles ponte entre os dois lados. Capturar (ou seja, ouvir) solicitações de HTTP e transmitir solicitações modificadas e receber e reenviar respostas de retorno é a própria definição de um proxy. O Wget não é um proxy.
Linguagens de script comuns oferecem maneiras de construir proxies facilmente: HTTP :: Proxy em Perl, Proxpy ou handmade em Python, Net :: HTTP em Ruby, etc.