Aller au contenu
Alex ALAVO.

Étude de cas 04 · Python · Automatisation · Bot

InstaBot

Tableau de bord multi-comptes pour collecter, filtrer et contacter des profils Instagram, avec suivi en temps réel.

Rôle
Conception et développement complet : moteur, interface et outils de diagnostic
Catégorie
Python · Automatisation · Bot
Stack
Python · Flask · Socket.IO
Qualité
58 tests
Historique des contacts envoyés par le bot
Gestion des comptes Instagram du bot

01 — Contexte

Pour des professionnels qui gèrent plusieurs comptes Instagram, InstaBot centralise la collecte de profils et l'automatisation des interactions dans un tableau de bord web.

02 — Problème

Constituer des listes de profils, passer d'un compte à l'autre et éviter de recontacter les mêmes personnes : des heures de manipulations.

03 — Solution

L'utilisateur prépare ses comptes, importe une liste ou lance une collecte depuis des comptes et des publications. Il configure les critères de sélection, les modèles de messages et le rythme. Le moteur répartit les profils entre les comptes actifs et choisit l'action selon le contenu disponible ; les traitements tournent en arrière-plan avec un suivi en direct.

04 — Fonctionnalités

  • Comptes centralisés

    Ajout, import, détection des doublons et rôles par compte.

  • Collecte d'audiences

    Abonnés, abonnements et interactions de publications, avec relais entre comptes.

  • Filtrage

    Compte public, photo, biographie, story et seuils d'abonnés.

  • Interactions

    Réponses aux stories, stories à la une et messages directs.

  • Rythme et recontact

    Délais, plages de sommeil, plafonds par compte et délais de recontact.

  • Supervision

    Démarrage, arrêt, journaux en direct et historique exportable.

06 — Architecture

  1. Interface webJinja2 · JavaScript
  2. Flaskpages · API · auth
  3. Orchestrationthreads · asyncio
  4. Services Playwrightcollecte · interactions
  5. SQLite · Socket.IOhistorique · temps réel

Flask reçoit les commandes et lance les traitements dans des threads disposant de leur propre boucle asynchrone.

La collecte relie un producteur et des consommateurs par une file : les profils sont enrichis au fil de l'eau, sans attendre la fin de la liste.

07 — Défis techniques

  • Défi

    Collecter et enrichir simultanément.

    Solution

    Pipeline producteur / consommateurs alimenté par une file asyncio.

  • Défi

    Gérer plusieurs états de connexion.

    Solution

    Profils navigateur persistants, détection des états, TOTP et reconnexion.

  • Défi

    Éviter les recontacts trop rapprochés.

    Solution

    Historique SQLite par compte et profil, avec délais individuels et globaux.

  • Défi

    Composer avec une interface externe qui change.

    Solution

    Sélecteurs externalisés avec alternatives, statuts d'erreur et pauses progressives.

08 — Mon intervention

  • Architecture modulaire et scénarios d'automatisation
  • Backend Flask et interfaces de gestion
  • Collecteurs, filtres et traitements asynchrones
  • Persistance SQLite et journal CSV
  • Sessions navigateur, double authentification et proxys
  • Tests, outils de diagnostic et documentation

09 — Stack

Backend
Python, Flask, Flask-SocketIO, Eventlet
Automatisation
Playwright, Firefox, asyncio, multiprocessing
Stockage
SQLite (WAL), CSV, JSON
Interface
Jinja2, HTML, CSS, JavaScript, Socket.IO
Qualité
pytest, outils de diagnostic Playwright

10 — Résultats

  • 58

    tests unitaires réussis

  • 4

    types d'interaction : réponse ou réaction à une story, story à la une, message direct

Étude de cas suivanteÉnergiePayTransforme les SMS de paiement Mobile Money en recharges d'électricité, automatiquement et avec traçabilité.