Un proxy web è un servizio che si trova tra il client e il sito Web e inoltra tutte le richieste e le risposte tra di loro. Ciò include i file caricati su un sito Web.
Un proxy con l'intento di ispezionare o modificare il traffico è chiamato proxy di intercettazione. ZAP e Burp sono esempi di proxy di intercettazione . Puoi provare uno di questi per mostrare il caricamento del tuo file.
Un proxy viene in genere utilizzato solo se è configurato nel browser. A volte è possibile utilizzare un proxy trasparente, in cui non è necessaria alcuna configurazione client.
Se un proxy può intercettare tutti i dati, inclusi i caricamenti di file, dipende dai dettagli della connessione SSL. Se il sito web utilizza HTTP in chiaro anziché HTTPS, tutto può essere intercettato. Se il sito web utilizza HTTPS, ci sono due opzioni:
- Il browser esegue una richiesta CONNECT al proxy. Il proxy imposta un tunnel tra il client e il sito Web e visualizza solo il traffico crittografato. In questo modo, il proxy non può intercettare alcun traffico, perché è crittografato.
- Il browser esegue una richiesta CONNECT, ma il proxy imposta connessioni separate al browser e al sito web. Ora il proxy è un aggressore man-in-the-middle che decrittografa e re-crittografa tutti i dati passati. Il proxy può intercettare tutti i dati.
Il problema con l'opzione 2 è che la connessione SSL è intercettata, quindi il tuo browser si lamenterà che non è connesso all'host giusto o che il certificato non è valido.
Se vuoi implementare un proxy in Python, penso che potresti iniziare con un TCPServer . Implementa uno che ascolta su una porta, configura il tuo browser per utilizzare quella porta come server proxy e osserva quale richiesta è stata eseguita.
Un altro progetto che può aiutarti è mitmproxy , un proxy di intercettazione scritto in Python.