Un proxy web es un servicio que se encuentra entre el cliente y el sitio web y reenvía todas las solicitudes y respuestas entre ellos. Esto incluye los archivos subidos a un sitio web.
Un proxy con la intención de inspeccionar o modificar el tráfico se denomina proxy de intercepción. ZAP y Burp son ejemplos de proxies de interceptación . Puedes probar uno de ellos para mostrar la carga de tu archivo.
Un proxy normalmente solo se usa si está configurado en el navegador. A veces es posible usar un proxy transparente, donde no se necesita la configuración del cliente.
Si un proxy puede interceptar todos los datos, incluidas las cargas de archivos, depende de los detalles de la conexión SSL. Si el sitio web utiliza HTTP de texto simple en lugar de HTTPS, todo puede ser interceptado. Si el sitio web utiliza HTTPS, hay dos opciones:
- El navegador realiza una solicitud CONECTAR al proxy. El proxy configura un túnel entre el cliente y el sitio web y solo ve el tráfico cifrado. De esta manera, el proxy no puede interceptar ningún tráfico, porque está cifrado.
- El navegador realiza una solicitud CONECTAR, pero el proxy establece conexiones separadas para el navegador y el sitio web. Ahora el proxy es un atacante de tipo "hombre en el medio" que descifra y vuelve a cifrar los datos que se pasan. El proxy puede interceptar todos los datos.
El problema con la opción 2 es que la conexión SSL está interceptada, por lo que su navegador se quejará de que no está conectado al host correcto o que el certificado no es válido.
Si deseas implementar un proxy en Python, creo que comenzarías con un TCPServer . Implemente uno que escuche en un puerto, configure su navegador para usar ese puerto como servidor proxy y observe qué solicitud se realiza.
Otro proyecto que puede ayudarte es mitmproxy , un proxy de interceptación escrito en Python.