← Back to Home

mimic: Intercept Any App and Call Its API from Python Like a Library

mimic: Intercept Any App and Call Its API from Python Like a Library 🐍

What is it? mimic is an open-source tool that captures HTTP traffic from any app (mobile or web), extracts authentication tokens automatically, and optionally generates a Python client library so you can call the app's API like a regular Python module — no manual reverse-engineering, no packet inspection.

Why it's trending: mimic hit 900+ GitHub stars in its first week because it solves a pain point every developer has faced. You find a great mobile or web app and wish you could automate a workflow — batch an action, extract your data, build an integration. Normally this means hours of proxying traffic, manually extracting tokens, and reverse-engineering endpoints. mimic does the first 90% of that work in three commands. It's MIT licensed, uses mitmproxy under the hood, and is built by Divy Srivastava (Deno core team) — so the engineering quality is solid.

How It Works

Architecture

The concept is elegantly simple. Most mobile and web apps authenticate every API request with a stable bundle of values: a bearer token, device identifiers, cookies, a session ID. Capture these values once from a real request, and you can replay them on any new request to the same API. mimic automates this entire pipeline:

  1. Capture traffic via mitmproxy (iPhone) or import a cURL/HAR export (browser)
  2. Extract auth — bearer tokens, cookies, device IDs, all session context
  3. Generate a Python client — using Claude (or your preferred LLM), it reads your captured endpoints and produces a clean Python module with named methods, body templates, and multi-step call chaining

The resulting client is plain Python on top of mimic.App, and you edit it like any other file.

Prerequisites

  • macOS (for iPhone capture) or any OS (for web capture via cURL/HAR)
  • Python 3.10+ with uv (installed automatically by the setup script)
  • An iPhone (optional — only needed for mobile app capture)
  • Claude API key or another LLM provider (optional — only needed for code generation)
  • ~/1GB free disk for mitmproxy artifacts

Installation

Installation is a single command:

sh -c "$(curl -fsSL https://raw.githubusercontent.com/littledivy/mimic/main/install.sh)"

This installs uv (the fast Python package manager) if you don't have it, then installs mimic in an isolated tool environment. mitmproxy isn't a separate install — mimic launches it via uvx on first use.

Verify the setup:

mimic doctor

This confirms the proxy is ready and Claude can be reached (if you configured an API key).

Quick Start: Capture an iPhone App

Step 1: Start the proxy

mimic record

This starts mitmproxy and prints the configuration steps for your iPhone.

Step 2: Configure your iPhone

  1. Open Settings → Wi-Fi → tap your network → Configure Proxy → Manual
  2. Enter your Mac's LAN IP address and port 8080
  3. Open Safari and visit http://mitm.it
  4. Install the Apple profile
  5. Go to Settings → General → About → Certificate Trust Settings → enable full trust for the mitmproxy certificate

⚠️ Step 5 is easy to miss — nothing works without it.

Step 3: Use the app normally

Open the app you want to capture, browse around, perform actions. The proxy records all HTTP traffic silently.

Step 4: Inspect and generate

# List captured hosts
mimic hosts

# See the endpoints mimic discovered
mimic learn prod-api.yourapp.com

# Generate a Python client
mimic gen prod-api.yourapp.com

This creates yourapp_client.py in your current directory.

Step 5: Use the client

from yourapp_client import YourApp

api = YourApp()  # reuses your captured session
data = api.get_feed()
api.like(post_id="abc123")

That's it. You now have a programmatic Python interface to any mobile app.

Alternative: Web App Capture (No iPhone Needed)

If you're targeting a web app, you don't need a proxy or an iPhone:

Option A: Copy as cURL

  1. Open Chrome/Firefox DevTools → Network tab
  2. Right-click a request → Copy as cURL
  3. Paste into a file or directly into Python:
from mimic import Session

session = Session.from_curl(open("copied.txt").read())
response = session.get("/api/profile")

Option B: HAR File Import

  1. In DevTools, right-click any request → Save all as HAR
  2. Use mimic with the HAR file:
mimic hosts --har traffic.har
mimic gen api.example.com --har traffic.har

Or in Python:

from mimic import Session
session = Session.from_har("traffic.har", "api.example.com")

Advanced Usage

Direct API Without Code Generation

If you don't want AI-generated code, mimic provides a Session class for direct control:

from mimic import Session

# From mitmweb capture
session = Session.from_mitm("api.example.com")

# From cURL paste
session = Session.from_curl("curl 'https://api.xxx' -H 'Authorization: Bearer ...'")

# Explicit
session = Session(base_url="https://api.example.com", headers={"Authorization": "Bearer xxx"})

# Standard HTTP methods
session.get("/users/me")
session.post("/posts", json={"title": "Hello"})

Auto Token Refresh

If your session token rotates, mimic handles it automatically. A 401 on an idempotent request triggers one re-pull from mitmweb and a retry:

# Non-idempotent requests can opt in
session.post("/orders", json={...}, refresh=True)

Bypassing Certificate Pinning

Some apps (banking, Instagram) reject the mitmproxy certificate. mimic includes a Frida-based bypass:

mimic unpin com.example.app.ipa

HAR Import from CLI

mimic hosts --har traffic.har

Architecture

mimic's architecture is a clean pipeline with three capture backends converging into a unified session abstraction:

Component Role
mitmproxy Intercepts HTTPS traffic from iOS/macOS apps via system proxy
cURL Import Parses "Copy as cURL" strings from browser DevTools
HAR Import Reads standard HAR (HTTP Archive) files exported from browsers
Session Core abstraction — stores auth context, auto-refreshes tokens
Code Generator Optional AI step that reads endpoints and generates a Python module

The system supports three capture backends — mitmproxy for mobile apps, cURL for quick web captures, and HAR for full browser sessions — all feeding into the same Session object.

Limitations

  • Certificate pinning blocks capture on some apps (banking, Instagram). The mimic unpin command with Frida can bypass this.
  • DPoP / sender-constrained tokens cannot be replayed — each request requires a fresh cryptographic proof from the device. There's no workaround.
  • Rate limiting is your responsibility — replaying hundreds of requests too fast may get your account flagged.
  • Terms of Service — use mimic only on your own accounts and data.

Resources

Comparison with Alternatives

  • mitmproxy / Charles Proxy — manual tools that capture traffic but require you to manually extract tokens and build clients. mimic automates the extraction and code generation steps.
  • Browser DevTools — let you inspect requests individually but offer no programmatic replay or Python integration.
  • Reverse-engineering — decompiling app binaries to find API endpoints is fragile, time-consuming, and may violate licenses. mimic works entirely at the network level.

mimic doesn't replace these tools — it automates the tedious parts so you can focus on building integrations with the captured API.

← Retour à l'Accueil

mimic : Interceptez n'importe quelle application et appelez son API depuis Python comme une bibliothèque

mimic : Interceptez n'importe quelle application et appelez son API depuis Python comme une bibliothèque 🐍

Qu'est-ce que c'est ? mimic est un outil open-source qui capture le trafic HTTP de n'importe quelle application (mobile ou web), extrait automatiquement les jetons d'authentification, et génère optionnellement une bibliothèque client Python pour appeler l'API de l'application comme un module Python classique — sans reverse-engineering manuel ni inspection de paquets.

Pourquoi ça cartonne : mimic a atteint 900+ étoiles GitHub en une semaine parce qu'il résout un problème que tout développeur a rencontré. Vous trouvez une super application mobile ou web et vous souhaiteriez automatiser un workflow — traiter des actions par lots, extraire vos données, construire une intégration. Normalement, cela signifie des heures à intercepter le trafic, extraire manuellement les jetons, et faire du reverse-engineering des endpoints. mimic fait les 90% du travail en trois commandes. Il est sous licence MIT, utilise mitmproxy en interne, et est développé par Divy Srivastava (équipe Deno) — la qualité d'ingénierie est solide.

Comment ça fonctionne

Architecture

Le concept est élégamment simple. La plupart des applications mobiles et web authentifient chaque requête API avec un ensemble stable de valeurs : un jeton bearer, des identifiants d'appareil, des cookies, un ID de session. Capturez ces valeurs une seule fois depuis une requête réelle, et vous pouvez les rejouer sur n'importe quelle nouvelle requête vers la même API. mimic automatise tout ce pipeline :

  1. Capture du trafic via mitmproxy (iPhone) ou import d'un export cURL/HAR (navigateur)
  2. Extraction de l'authentification — jetons bearer, cookies, IDs d'appareil, tout le contexte de session
  3. Génération d'un client Python — via Claude (ou votre LLM préféré), il lit vos endpoints capturés et produit un module Python propre avec des méthodes nommées, des modèles de corps, et un enchaînement d'appels en plusieurs étapes

Le client résultant est du Python pur basé sur mimic.App, et vous l'éditez comme n'importe quel fichier.

Prérequis

  • macOS (pour la capture iPhone) ou n'importe quel OS (pour la capture web via cURL/HAR)
  • Python 3.10+ avec uv (installé automatiquement par le script d'installation)
  • Un iPhone (optionnel — nécessaire uniquement pour la capture d'applications mobiles)
  • Clé API Claude ou autre fournisseur LLM (optionnel — nécessaire uniquement pour la génération de code)
  • ~1 Go d'espace disque libre pour les artefacts mitmproxy

Installation

L'installation se fait en une seule commande :

sh -c "$(curl -fsSL https://raw.githubusercontent.com/littledivy/mimic/main/install.sh)"

Cette commande installe uv (le gestionnaire de paquets Python rapide) si vous ne l'avez pas, puis installe mimic dans un environnement d'outils isolé. mitmproxy n'est pas une installation séparée — mimic le lance via uvx lors de la première utilisation.

Vérifiez l'installation :

mimic doctor

Ceci confirme que le proxy est prêt et que Claude est accessible (si vous avez configuré une clé API).

Démarrage rapide : Capture d'une application iPhone

Étape 1 : Démarrer le proxy

mimic record

Ceci démarre mitmproxy et affiche les étapes de configuration pour votre iPhone.

Étape 2 : Configurer votre iPhone

  1. Ouvrez Réglages → Wi-Fi → appuyez sur votre réseau → Configurer le proxy → Manuel
  2. Entrez l'adresse IP LAN de votre Mac et le port 8080
  3. Ouvrez Safari et visitez http://mitm.it
  4. Installez le profil Apple
  5. Allez dans Réglages → Général → À propos → Réglages de confiance des certificats → activez la confiance totale pour le certificat mitmproxy

⚠️ L'étape 5 est facile à oublier — rien ne fonctionne sans elle.

Étape 3 : Utiliser l'application normalement

Ouvrez l'application que vous souhaitez capturer, naviguez, effectuez des actions. Le proxy enregistre tout le trafic HTTP silencieusement.

Étape 4 : Inspecter et générer

# Lister les hôtes capturés
mimic hosts

# Voir les endpoints découverts par mimic
mimic learn prod-api.votreapp.com

# Générer un client Python
mimic gen prod-api.votreapp.com

Ceci crée votreapp_client.py dans votre répertoire courant.

Étape 5 : Utiliser le client

from votreapp_client import VotreApp

api = VotreApp()  # réutilise votre session capturée
donnees = api.get_feed()
api.liker(post_id="abc123")

C'est tout. Vous avez maintenant une interface Python programmable pour n'importe quelle application mobile.

Alternative : Capture d'application web (sans iPhone)

Si vous ciblez une application web, vous n'avez besoin ni de proxy ni d'iPhone :

Option A : Copier au format cURL

  1. Ouvrez les outils développeur Chrome/Firefox → onglet Network
  2. Clic droit sur une requête → Copy as cURL
  3. Collez dans un fichier ou directement dans Python :
from mimic import Session

session = Session.from_curl(open("copied.txt").read())
reponse = session.get("/api/profile")

Option B : Import de fichier HAR

  1. Dans les outils développeur, clic droit sur une requête → Save all as HAR
  2. Utilisez mimic avec le fichier HAR :
mimic hosts --har traffic.har
mimic gen api.exemple.com --har traffic.har

Ou en Python :

from mimic import Session
session = Session.from_har("traffic.har", "api.exemple.com")

Utilisation avancée

API directe sans génération de code

Si vous ne voulez pas de code généré par IA, mimic fournit une classe Session pour un contrôle direct :

from mimic import Session

# Depuis une capture mitmweb
session = Session.from_mitm("api.exemple.com")

# Depuis un collage cURL
session = Session.from_curl("curl 'https://api.xxx' -H 'Authorization: Bearer ...'")

# Explicitement
session = Session(base_url="https://api.exemple.com", headers={"Authorization": "Bearer xxx"})

# Méthodes HTTP standard
session.get("/users/me")
session.post("/posts", json={"title": "Bonjour"})

Rafraîchissement automatique des jetons

Si votre jeton de session tourne, mimic le gère automatiquement. Un code 401 sur une requête idempotente déclenche une relecture depuis mitmweb et une nouvelle tentative :

# Les requêtes non-idempotentes peuvent s'inscrire
session.post("/commandes", json={...}, refresh=True)

Contournement du certificate pinning

Certaines applications (banque, Instagram) rejettent le certificat mitmproxy. mimic inclut un contournement basé sur Frida :

mimic unpin com.exemple.app.ipa

Import HAR depuis la CLI

mimic hosts --har traffic.har

Architecture

L'architecture de mimic est un pipeline propre avec trois backends de capture convergeant vers une abstraction de session unifiée :

Composant Rôle
mitmproxy Intercepte le trafic HTTPS des applications iOS/macOS via proxy système
Import cURL Analyse les chaînes "Copy as cURL" depuis les outils développeur
Import HAR Lit les fichiers HAR (HTTP Archive) exportés des navigateurs
Session Abstraction centrale — stocke le contexte d'authentification, rafraîchit les jetons
Générateur de code Étape IA optionnelle qui lit les endpoints et génère un module Python

Le système supporte trois backends de capture — mitmproxy pour les applications mobiles, cURL pour les captures web rapides, et HAR pour les sessions navigateur complètes — tous alimentant le même objet Session.

Limitations

  • Le certificate pinning bloque la capture sur certaines applications (banque, Instagram). La commande mimic unpin avec Frida peut contourner ce problème.
  • Les jetons DPoP / sender-constrained ne peuvent pas être rejoués — chaque requête nécessite une preuve cryptographique fraîche depuis l'appareil. Il n'y a pas de contournement.
  • Le rate limiting est votre responsabilité — rejouer des centaines de requêtes trop rapidement peut faire flaguer votre compte.
  • Les conditions d'utilisation — utilisez mimic uniquement sur vos propres comptes et données.

Ressources

Comparaison avec les alternatives

  • mitmproxy / Charles Proxy — outils manuels qui capturent le trafic mais nécessitent d'extraire manuellement les jetons et de construire les clients. mimic automatise l'extraction et la génération de code.
  • Outils développeur du navigateur — permettent d'inspecter les requêtes individuellement mais n'offrent pas de rejeu programmatique ni d'intégration Python.
  • Reverse-engineering — désassembler les binaires d'application pour trouver les endpoints API est fragile, chronophage, et peut violer les licences. mimic fonctionne entièrement au niveau réseau.

mimic ne remplace pas ces outils — il automatise les parties fastidieuses pour que vous puissiez vous concentrer sur la construction d'intégrations avec l'API capturée.