Cattura il traffico di un'app Android
L'app Busymate DevTools per Android esegue un motore di cattura basato su VPN direttamente sul telefono. Nessun proxy desktop, nessuna Wi-Fi condivisa, nessuna impostazione proxy — e un resoconto onesto di quali app vengono davvero decifrate su un telefono senza root.
Su Android la via classica per leggere l'HTTPS di un'app è un proxy su un portatile più una voce proxy manuale nelle impostazioni Wi-Fi del telefono. Funziona finché non lasci quella rete. Busymate DevTools toglie il proxy di mezzo: l'app si registra come VPN del telefono, vede ogni connessione che il telefono apre, decifra gli host che scegli con un certificato che genera sul dispositivo e trasmette il risultato alla stessa dashboard usata dall'app iOS e dal proxy desktop.
C'è un fatto della piattaforma che questa guida non nasconderà. Da Android 7.0 un'app ignora i certificati installati dall'utente a meno che non lo consenta esplicitamente. Significa che il telefono può catturare il traffico di ogni app, ma può decifrare solo le app che si fidano dell'archivio certificati utente — in pratica le tue build di debug, più i browser di sistema e client simili. Il passaggio cinque mostra la modifica a un solo file che rende la tua app una di queste, e la guida sul pinning copre il resto.
Cosa ti
Un telefono, un account e — se vuoi i body decifrati della tua app — una build di debug che puoi ricompilare.
Un telefono con Android 7.0 o successivo. Per catturare non servono né root né computer.
Un account Busymate. Accedi con Google o con email e password; l'accesso associa il telefono alla tua dashboard.
I nomi host dell'API che vuoi leggere, per la lista SSL proxy. Vengono decifrati solo gli host in lista.
Per la tua app: la possibilità di ricompilare la build di debug con una configurazione di sicurezza di rete in un solo file, così che si fidi del certificato generato dal telefono.
Fallo
Sei passaggi. La configurazione guidata dell'app gestisce le richieste della piattaforma una schermata alla volta; l'unico lavoro fuori dall'app è la modifica alla build di debug del passaggio cinque.
- 01
Installa l'app e accetta il consenso alla cattura
Installa Busymate DevTools da Google Play, oppure installa manualmente l'APK di release firmato dalla pagina Android se la scheda non è ancora visibile nella tua regione. Al primo avvio l'app chiede il tuo consenso esplicito per catturare il traffico di rete. La cattura è facoltativa e resta spenta finché non la attivi: nulla gira in background prima che tu lo decida.


- 02
Accedi: il telefono si associa da solo
Accedi con Google o con email e password. Come su iOS, accedere è associare: l'app scambia la sessione con una credenziale del dispositivo a lunga durata salvata nell'archiviazione cifrata dell'app, e il telefono compare come Online nella scheda Devices della dashboard un istante dopo. La schermata iniziale mostra il nome del dispositivo, un badge account, la scheda con l'interruttore di cattura e una scheda di prontezza con un ingranaggio per le Impostazioni.


- 03
Aggiungi i domini che vuoi decifrare
Apri le Impostazioni dall'ingranaggio e vai su SSL Proxying. Elenca gli host di cui vuoi leggere i body HTTPS; tutto il resto resta cifrato end-to-end e compare come nome host con un contatore di richieste. Un asterisco e un punto iniziali coprono un dominio e tutti i suoi sottodomini. La stessa sezione contiene i controlli di decifratura e una lista Ignore Hosts per il rumore di fondo che non vuoi mai nel feed.
Non devi farlo per forza sul telefono. La dashboard modifica la stessa lista per dispositivo, e una modifica lì arriva sul telefono in tempo reale, così un collega può aggiungere un host mentre tu continui a testare.
- 04
Esegui la configurazione guidata
Tocca la scheda di prontezza. La configurazione guidata attraversa tre richieste della piattaforma, una schermata alla volta: consentire la notifica di cattura, installare nell'archivio certificati utente del telefono il certificato che l'app ha generato solo per te, e approvare la richiesta di connessione VPN di Android stesso. Ogni passaggio diventa completato man mano che lo concludi, e la scheda diventa pronta quando tutti e tre sono superati.
Quel certificato è personale del tuo dispositivo — viene creato sul telefono, mai scaricato da un server condiviso — ed è ciò che permette all'app di presentare un certificato attendibile per ogni host che hai scelto di decifrare.


- 05
Fai in modo che la tua app si fidi dell'archivio certificati utente
È il passaggio che nessuno strumento di cattura per Android può saltare. Da Android 7.0 un'app che punta a quel livello o superiore si fida per impostazione predefinita solo dell'archivio certificati di sistema, quindi la tua app chiuderà la connessione nel momento in cui il telefono presenta il certificato generato. La soluzione è una piccola configurazione di sicurezza di rete, limitata alle build di debug, che aggiunge l'archivio utente accanto a quello di sistema. Android rimuove del tutto il blocco di override di debug dalle build di release, quindi non può finire in produzione.
Crea il file qui sotto nella tua app, tieni l'ancora di sistema accanto a quella utente così l'HTTPS normale continua a funzionare, referenzialo dal tag application del manifest, poi ricompila e installa la build di debug. Reinstallare il vecchio binario non serve a nulla: la fiducia vive nell'app appena compilata.
La configurazione di sicurezza di rete solo per debug, poi il riferimento nel manifest xml<!-- app/src/main/res/xml/network_security_config.xml --> <network-security-config> <debug-overrides> <trust-anchors> <certificates src="user" /> <certificates src="system" /> </trust-anchors> </debug-overrides> </network-security-config> <!-- AndroidManifest.xml --> <application android:networkSecurityConfig="@xml/network_security_config" ... > - 06
Attiva la cattura e ispeziona
Attiva l'interruttore di cattura. Android mostra l'icona della chiave VPN nella barra di stato, e ogni richiesta del telefono inizia ad arrivare nel feed della dashboard e nella schermata Network dell'app — una riga di stato, badge statistici, chip di categoria e una lista raggruppata per host con la ricerca in basso. Tocca un host e poi una richiesta per il dettaglio completo: le schede General, Header, Summary, Timing e Body sia per la richiesta sia per la risposta.
Apri la tua app e genera una chiamata. Le sue voci HTTPS ora mostrano header leggibili e un body decifrato invece di un tunnel opaco. Quando hai finito, disattiva la cattura: la VPN cade, e certificato e app possono essere rimossi come qualsiasi altro.


Cosa può
La maggior parte dei problemi su Android è la piattaforma che è rigida sui certificati, e il feed ti dice in quale ti sei imbattuto.
Il traffico della tua app risulta ancora cifrato
La configurazione di sicurezza di rete non ha avuto effetto. Verifica di aver ricompilato e installato la build di debug dopo averla aggiunta, che il manifest punti al file e che il certificato sia nell'archivio utente. Se la configurazione vive in un source set solo di debug, l'attributo del manifest deve stare anche nel manifest di debug.
Un'app dello store che non hai compilato resta opaca
Previsto su un telefono senza root: quell'app non ha mai accettato i certificati utente, quindi il telefono registra la connessione solo come metadati. Decifrarla richiede un dispositivo con root dove il certificato possa andare nell'archivio di sistema — il livello usato dalla farm di telefoni — e nemmeno questo apre un'app che fissa il proprio certificato.
La richiesta VPN di Android continua a ripresentarsi
Un'altra app VPN è attiva, oppure l'approvazione precedente è stata revocata nelle impostazioni VPN di sistema. Può girare una sola VPN alla volta; disconnetti l'altra e approva di nuovo la richiesta dalla configurazione guidata.
La notifica di cattura non è mai comparsa
Il permesso per le notifiche è stato negato alla prima richiesta. Riattivalo per Busymate DevTools nelle impostazioni app di sistema; la configurazione guidata lo ricontrolla e segna il passaggio come completato.
Un host è in lista ma la regola sul percorso non scatta
Le regole che corrispondono su un percorso richiedono che l'host sia decifrato; su un host che passa cifrato è visibile solo il nome host. Aggiungi prima l'host alla lista SSL proxy, poi ricontrolla la regola.
Le domande
Mi serve il root?
Non per catturare, e non per decifrare le tue build di debug o i client che si fidano dell'archivio utente. Il root serve solo per spostare il certificato nell'archivio di sistema, così che le app che non hai compilato tu si fidino di esso.
Sotto il cofano è un proxy?
No. L'app è registrata come VPN del telefono, quindi vede il traffico di ogni app via Wi-Fi e dati mobili senza toccare alcuna impostazione proxy. Esiste un proxy desktop separato per browser e backend, ma questa guida non lo usa mai.
Cosa succede alle app che non sono nella mia lista?
Continuano a funzionare esattamente come prima. Le loro connessioni vengono registrate solo come host e tempi e non vengono mai decifrate, e Ignore Hosts può eliminare del tutto dal feed quelle più rumorose.
Il traffico della tua app,
Installa l'app, esegui la configurazione guidata, aggiungi la configurazione di debug in un solo file e guarda le richieste della tua app arrivare decifrate.