Puedo usar fácilmente Netcat (o Socat) para capturar el tráfico entre mi navegador y un host específico: puerto.
Pero para Linux, ¿existe alguna contraparte de línea de comando de un proxy HTTP similar a Squid que pueda usar para capturar el tráfico entre mi cliente HTTP (ya sea navegador o programa de línea de comando) y cualquier host arbitrario: puerto?
command-line
proxy
http
squid
Harry
fuente
fuente
Respuestas:
Tanto Perl como Python (y probablemente también Ruby) tienen kits simples que puedes usar para construir rápidamente proxies HTTP simples.
En Perl, use HTTP :: Proxy . Aquí está el ejemplo de 3 líneas de la documentación. Agregue filtros para filtrar, registrar o reescribir solicitudes o respuestas; Consulte la documentación para ver ejemplos.
En Python, use SimpleHTTPServer . Aquí hay un código de muestra ligeramente adaptado de effbot . Adapte el
do_GET
método (u otros) para filtrar, registrar o reescribir solicitudes o respuestas.fuente
Puede que esta no sea la mejor solución, pero si usa algún proxy, tendrá una
host:port
solución específica para que la solución de netcat siga funcionando, aunque tendrá que separar los metadatos del proxy para darle sentido.La forma más fácil de hacer esto podría ser usar cualquier proxy de anonimato aleatorio y simplemente canalizar todo el tráfico
netcat
. (Es decir, configure el proxy de su navegadorlocalhost:port
y luego envíe los datos al proxy real).Si desea tener un proxy local, entonces un proxy SOCKS5
ssh -D <port> localhost
es probablemente su opción más fácil. Obviamente, debe decirle a su navegador que use un proxy "calcetines" en lugar de un proxy "http".Entonces, algo como esto (suponiendo que su máquina local acepte conexiones ssh entrantes):
Naturalmente, eso solo funcionará para un intento de conexión del navegador, y luego saldrá, y no he intentado reenviar los datos devueltos al navegador, por lo que necesitará su
netcat
solución completa .fuente
root
usuario, etc.ssh -fN -D ...
inicia un proxy SOCKS5 en ellocalhost
puerto8000
, pero ¿qué hacenc -l ...
? Y, ¿a qué puerto debo hacer que mi navegador señale:8000
o8080
?nc
comandos aceptan todo el tráfico desde el puerto 8080 y lo reenvían a 8000. No proporcioné unanetcat
solución completa porque su publicación sugirió que ya sabía cómo hacer esa parte.