Salta al contenuto

La guida completa per lo scraping dei dati dalle API delle app mobili

Nel nostro moderno mondo mobile-first, le app mobili stanno esplodendo in popolarità e stanno sostituendo i siti Web tradizionali per molti servizi. Ora ci sono oltre 5 milioni di app disponibili nei principali app store. L'utente medio di smartphone ha oltre 80 app installate. E le app mobili rappresentano il 90% del tempo trascorso online nelle app rispetto al Web mobile.

Cosa significa? Le app mobili stanno diventando una delle fonti di dati più preziose e abbondanti nel nostro mondo sempre più digitale. Dati sulla posizione, statistiche di utilizzo, profili, transazioni e altro ancora possono essere estratti dal traffico delle app mobili.

Ciò rappresenta un’enorme opportunità per aziende, ricercatori e sviluppatori. Ma per raccogliere questi dati è necessario intercettare la comunicazione tra le app e le relative API backend. Questo perché le app mobili utilizzano connessioni HTTPS crittografate per trasmettere i dati in modo sicuro.

Il semplice sniffing del traffico di rete non rivelerà il contenuto. Hai bisogno di un modo per decrittografare il traffico.

Inserisci i server proxy man-in-the-middle (MITM).

In questa guida completa di 4,000 parole imparerai:

  • Cos'è esattamente un proxy MITM e come funziona
  • Come configurare passo dopo passo il tuo proxy MITM per l'analisi del traffico delle app mobili
  • Come utilizzare il proxy per osservare e decodificare l'API di un'app mobile
  • Strumenti e tecniche per estrarre dati preziosi dalle API delle app mobili
  • Migliori pratiche proxy MITM per la raccolta responsabile dei dati

Se desideri un'esperienza pratica nell'estrazione di dati da app come Tinder, Airbnb, Yelp e altre, sei nel posto giusto. Iniziamo!

Che cos'è un proxy Man-in-the-Middle (MITM)?

Per capire come i proxy MITM consentono lo scraping dei dati delle app mobili, devi prima capire cosa fa la crittografia HTTPS.

HTTPS utilizza i certificati SSL/TLS per crittografare la comunicazione tra un client (ad esempio un'app mobile) e un server (ad esempio il backend API). Ciò impedisce a chiunque spii la rete di visualizzare o manomettere il traffico.

E se potessi intercettare quel traffico posizionandoti nel mezzo, tra il client e il server di destinazione?

Questo è esattamente ciò che fa un proxy MITM. Il proxy funge da intermediario attraverso il quale passa tutto il traffico:

Client <—-> Proxy MITM <—-> Server di destinazione

Il proxy stabilisce connessioni SSL separate con il client e il server per decrittografare il loro traffico. Può quindi ispezionare, analizzare e persino modificare le richieste di testo in chiaro prima di crittografarle nuovamente e inviarle.

Installando il certificato radice del proxy come autorità attendibile, può effettivamente rappresentare qualsiasi dominio. Ciò consente un'intercettazione continua senza attivare avvisi di sicurezza del browser.

Alcuni proxy MITM popolari includono:

delegaPiattaformaNote
mimproxyMac, Windows, LinuxPotente strumento basato su console
Carlo ProxyMac, Windows, LinuxGUI, supporto per la configurazione del dispositivo
violinistaWindowsPuò eseguire il debug del traffico dalle app Windows

In questa guida dimostreremo l'utilizzo mimproxy poiché è gratuito, open source e veloce da configurare.

Ora diamo un'occhiata a come configurare un dispositivo mobile per instradare il traffico attraverso il proxy MITM.

Passaggio 1: installa mitmproxy sul tuo computer

Il primo passo è installare e avviare il server proxy mitmproxy sul tuo computer desktop o portatile. Intercetterà le richieste provenienti dai dispositivi configurati per instradarlo attraverso.

Installa su macOS

Se utilizzi un Mac, il modo più semplice per installare mitmproxy è tramite Homebrew:

$ brew install mitmproxy

Installa su Linux

Su Linux, usa il gestore pacchetti della tua distribuzione, ad esempio:

$ sudo apt install mitmproxy # Debian/Ubuntu
$ sudo dnf install mitmproxy # Fedora

Installa su Windows

Gli utenti Windows possono scaricare la versione binaria ufficiale da mitmproxy.org. Assicurati di scegliere l'ultima versione di mitmproxy, non l'utilità mitmdump.

Avvia il proxy

Una volta installato, avvia mitmproxy sulla porta predefinita 8080:

$ mitmproxy

Dovresti vedere le richieste intercettate apparire nella console mitmproxy:

console mitmproxy

Lascialo in esecuzione in background mentre configuri il tuo dispositivo mobile per utilizzare il proxy.

Passaggio 2: configurare il dispositivo mobile per l'instradamento tramite mitmproxy

Ora dobbiamo configurare il dispositivo mobile per instradare il traffico attraverso il proxy mitmproxy per l'intercettazione.

Ecco i passaggi per i comuni sistemi operativi mobili:

Su iPhone/iOS

  1. Collega il tuo iPhone alla stessa rete Wi-Fi del tuo computer che esegue mitmproxy.

  2. Vai su Impostazioni > Wi-Fi e seleziona la tua rete attuale.

  3. Scorri verso il basso e tocca Configura proxy.

  4. Seleziona Manuale per impostare i dettagli del tuo proxy:

    • Server: L'indirizzo IP del tuo computer in rete (es. 192.168.1.10)

    • Porto: 8080

Questo instrada tutto il traffico del dispositivo attraverso il tuo computer e mitmproxy!

Su Android

  1. Collega il tuo dispositivo Android alla stessa rete Wi-Fi del proxy.

  2. Vai su Impostazioni > Wi-Fi > Opzioni avanzate > Proxy e seleziona Manuale.

  3. Inserisci l'indirizzo IP del tuo computer nel campo Nome host e 8080 per la Porta.

  4. Tocca Salva per applicare la configurazione del proxy.

Su Windows Phone

  1. Dalla schermata iniziale, scorri verso sinistra fino all'Elenco app e tocca Impostazioni profilo.

  2. Rubinetto WiFi e premi a lungo la tua rete connessa. Selezionare Modifica.

  3. Rubinetto Mostra le opzioni avanzate poi Imposta proxy al Manuale.

  4. Inserisci l'indirizzo IP del tuo computer e 8080 per la porta.

  5. Rubinetto Risparmi per connettersi tramite il proxy.

E questo è tutto! Il tuo dispositivo mobile dovrebbe ora instradare tutto il traffico attraverso mitmproxy per l'intercettazione.

Passaggio 3: installa il certificato mitmproxy sul dispositivo mobile

A questo punto vedrai il traffico nella console mitmproxy dal tuo dispositivo mobile. Tuttavia, la maggior parte delle app utilizza HTTPS, quindi non sarai in grado di visualizzare il contenuto.

Per decrittografare il traffico HTTPS, devi installare il certificato mitmproxy come autorità di certificazione radice attendibile sul tuo dispositivo mobile.

Mitmproxy fornisce un sito utile all'indirizzo http://mitm.it che genererà il certificato per la piattaforma del tuo dispositivo specifico.

Basta andare http://mitm.it sul browser del tuo dispositivo mobile e fai clic sul collegamento relativo al tuo sistema operativo:

sito mitm.it

Installa quindi il certificato scaricato sul tuo dispositivo:

Su iOS

  1. Vai su Impostazioni > Generali > Informazioni > Impostazioni attendibilità certificato

  2. Attivare la mimproxy a livello internazionale

Su Android

  1. Salvare l' mitmproxy-ca-cert.pem archiviare da qualche parte nella memoria del dispositivo

  2. Vai su Impostazioni > Sicurezza > Installa dalla memoria

  3. Seleziona il mitmproxy-ca-cert.pem filetto

Su Windows Phone

  1. Vai su Sistema > Crittografia > Importa certificato

  2. Scegli quello scaricato mitmproxy-ca-cert.crt

Potrebbe essere necessario impostare il certificato mitmproxy come attendibile per VPN o app. Ora mitmproxy può intercettare anche il traffico crittografato HTTPS dal dispositivo.

Abilita il certificato solo quando è necessario eseguire il debug del traffico e disabilitalo una volta terminato! Non esporre inutilmente altri dati dell'app.

Ok, è ora della parte divertente... diamo un'occhiata a come osservare il traffico per eseguire il reverse engineering e lo scraping delle API delle app mobili!

Passaggio 4: osservazione e inversione dell'API di un'app mobile

Apri l'app mobile che desideri studiare sul dispositivo configurato per utilizzare il proxy. Ad esempio, utilizzerò l'app Swiggy per la consegna di cibo.

Nella console mitmproxy sul tuo computer, dovresti vedere le richieste provenienti dall'indirizzo IP del tuo dispositivo mobile.

Filtra la visualizzazione in base al dominio dell'API che desideri analizzare. Per Swiggy, questo è prod-api.swiggy.com:

Traffico API Swiggy in mitmproxy

Mentre interagisci con l'app mobile, cerca i modelli nelle richieste API. È possibile espandere una richiesta per visualizzare i dettagli completi:

Richiesta API estesa

Il test di diversi flussi di app rivela quali endpoint esistono sull'API back-end e quali dati restituiscono. Per il raschiamento, siamo interessati GET richieste che restituiscono dati JSON.

Osservando il traffico da Swiggy, possiamo vedere:

  • /restaurants/list/v5 restituisce un elenco di ristoranti per una posizione
  • /menu/v4 ottiene il menu per un ristorante specifico
  • /geocode/v1 converte gli indirizzi in coordinate lat/lng

E così via. Questo ci consente di comprendere e mappare gli endpoint API.

Ora possiamo replicare le richieste API per estrarre i dati. Ad esempio, chiamare /restaurants/list/v5 con la lat ed lng parametri restituisce un elenco JSON di ristoranti:

import requests

api_url = ‘https://prod-api.swiggy.com/restaurants/list/v5‘

params = {
  ‘lat‘: 12.972442, 
  ‘lng‘: 77.580643 
}

response = requests.get(api_url, params=params)
data = response.json() 

for restaurant in data:
  print(restaurant[‘name‘], restaurant[‘area‘])

Questo stampa i nomi e le aree dei ristoranti Swiggy vicino a una determinata località. Il proxy ci consente di vedere come funziona l'app e di decodificare l'API per lo scraping.

Strategie di scraping per API di app mobili

Dopo aver ispezionato il traffico API di un'app per comprendere endpoint e parametri, puoi iniziare a raccogliere dati in modo programmatico.

Ecco alcune best practice:

  • Usa i proxy – Ruota diversi IP residenziali per evitare blocchi dovuti alla limitazione della velocità.

  • Randomizza gli input – Varia coordinate geografiche, ID utente, ecc. per apparire più umano.

  • Richieste di accelerazione – Aggiungi ritardi tra le richieste per limitare il volume.

  • Dati nella cache – Memorizza le risposte per evitare richieste duplicate.

  • Gestire gli errori – Riprovare le richieste non riuscite e gestire con garbo gli errori HTTP.

  • Impaginare i dati – Segui i collegamenti di impaginazione nelle risposte per estrarre tutti i dati.

  • Usa POST quando necessario – Alcune azioni come effettuare un ordine richiedono richieste POST.

  • Analizza rapidamente – Estrai solo i dati che ti servono invece di analizzare tutto.

  • Scrub metadati – Rimuovere ID univoci, timestamp, ecc. che potrebbero identificare i record.

  • Rimani aggiornato – Controlla le modifiche API dopo gli aggiornamenti dell'app.

Con un po' di creatività, puoi creare scraper per estrarre tutti i tipi di dati preziosi dalle API delle app mobili. Assicurati solo di seguire attentamente i Termini di servizio e di utilizzare i dati in modo responsabile!

Scraping API mobile responsabile

Come ogni forma di web scraping, la raccolta di dati dalle API mobili comporta alcune considerazioni etiche:

  • Non sovraccaricare i server – Limitare il volume delle richieste per ridurre al minimo l'impatto.

  • Limita l'utilizzo – Raccogli solo i dati di cui puoi giustificare la necessità.

  • Rispettare i ToS – Evitare di violare i termini di servizio o gli NDA.

  • Proteggi i dati – Archiviare i dati in modo sicuro e ridurre al minimo i periodi di conservazione.

  • Anonimizzare i dati – Rimuovere le informazioni personali non necessarie per il tuo scopo.

  • Controlla le leggi – Alcune località regolamentano le tipologie di raccolta dei dati.

  • Usa saggiamente – I dati dovrebbero fornire valore, non essere raccolti solo perché è possibile.

La trasparenza e l’etica sono fondamentali. Da grandi dati derivano grandi responsabilità!

Conclusione

Spero che questa guida ti abbia fornito uno sguardo completo sull'intercettazione dei dati delle app mobili con proxy man-in-the-middle. I punti salienti:

  • I proxy MITM ti consentono di intercettare il traffico HTTPS dalle app mobili installando il certificato proxy.

  • Strumenti come mitmproxy semplificano l'ispezione di questo traffico per comprendere come un'app comunica con i backend API.

  • Il reverse engineering degli endpoint API consente di replicare le richieste per recuperare i dati delle app mobili.

  • È possibile utilizzare proxy, limitazioni e altre tecniche per raccogliere in modo efficiente i dati delle app mobili su larga scala.

  • Assicurati di acquisire le API mobili in modo etico e legale.

Le applicazioni mobili forniscono una grande quantità di dati che aspettano solo di essere sfruttati. Ora che sai come utilizzare i proxy MITM per accedervi, le possibilità sono infinite!

Da quali fantastiche app inizierai a raccogliere dati? Fammi sapere se hai altre domande sullo scraping del proxy mobile!

Partecipa alla conversazione

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *