Stage de BUT2 : automatisations et sécurité réseau

Stage de BUT2 : fiabiliser une collecte Python, bâtir un module Go d’automatisation et analyser les échanges réseau.

Année
BUT2, 2026
Type
Stage
Domaine
Sécurité
Période
mai – juillet 2026
Stack
Go, Python, Charles Proxy, HAR, TLS, Git

En bref

Problème
Un service de veille billetterie par abonnement repose sur une collecte automatisée fragile et sur des échanges réseau qui échouent selon un contexte peu lisible.
Ce que j’ai réalisé
J’ai maintenu et fiabilisé la chaîne de collecte Python, et produit de zéro, avec l’assistant de programmation, sous ma direction, un module Go menant un workflow d’authentification puis de réservation, guidé par l’analyse du trafic réseau.
Résultat
La collecte a tenu malgré l’évolution des sources et le module Go a atteint un état fonctionnel.
Rôle
Développeur stagiaire : maintenance Python, module Go de bout en bout, analyse réseau.
Équipe
4 personnes
Statut
Terminé
Sommaire8 sections

Contexte

Mon stage de deuxième année de BUT Informatique s’est déroulé sur onze semaines, 392 heures, au sein d’une très petite entreprise lyonnaise du secteur de la veille billetterie événementielle. Le service fonctionne par abonnement : des programmes surveillent en continu une soixantaine de sources, détectent l’information utile sur la disponibilité de billets, la diffusent aux membres, puis les assistent dans l’acquisition. Les comptes utilisés pendant le stage étaient ceux des abonnés de ce service de veille, avec leur consentement.

J’étais encadré par un tuteur en entreprise et une référente à l’IUT, et je travaillais avec deux collaborateurs à distance, dans d’autres pays. Par confidentialité, je ne nomme ni les sources ni les plateformes concernées : ces détails n’ajoutent rien à la compréhension de mon travail.

Le problème

Ma mission avait deux volets liés. Le premier était de maintenir et fiabiliser l’existant : une chaîne de collecte écrite en Python, qui doit rester opérationnelle en permanence malgré l’évolution constante des sources. Le second était de construire de nouveaux modules d’automatisation en Go, le langage retenu par l’entreprise pour ces composants.

Derrière les deux se cachait une même difficulté : les échanges réseau entre mes programmes et les services distants réussissent ou échouent selon un contexte peu lisible, où une requête dépend de celles qui l’ont précédée.

Déroulé du stage

Le stage s’est déroulé en cinq phases, de mai à juillet 2026, de l’analyse à la maintenance. Elles se chevauchent en partie.

Déroulé du stage — cinq phases Mai 2026 Juillet 2026 Phase 1 Prise en main et analyse réseau Phase 2 Rétro-ingénierie et spécification protocole Phase 3 Développement du module Go Phase 4 Fiabilisation, debug et orchestration IA Phase 5 Maintenance de la collecte Python
Fig. 1 — Déroulé du stage en cinq phases, de mai à juillet 2026.

Démarche et décisions

J’ai travaillé par itérations courtes : analyser, capturer et observer le réseau, architecturer, coder, tester pas à pas, isoler la cause d’un blocage, comparer à une référence, corriger, recommencer. Chaque dépôt Git garde la trace de cette progression.

Vue d’ensemble, la chaîne technique allait de la capture du trafic jusqu’à la supervision du module. Chaque rejet réseau observé renvoyait à l’étape d’analyse : le diagnostic était permanent.

Chaîne technique du stage — vue d’ensemble Analyse réseau → rétro-ingénierie → développement d’un client bas niveau → supervision 1 Capture du trafic proxy de débogage réseau 2 Analyse HTTP/TLS et rétro-ingénierie 3 Spécification du protocole : en-têtes, TLS, séquence 4 Client Go en-têtes et TLS conformes à la référence 5 Supervision et orchestration assistée par IA boucle de diagnostic et debug réseau
Fig. 2 — Chaîne technique du stage, de la capture du trafic à la supervision du module.

Sur la collecte Python, la première tâche a été de corriger le point d’entrée dont un défaut perturbait la diffusion vers la communauté. Le reste du stage, j’ai diagnostiqué les défaillances source par source et mis à jour l’analyse syntaxique quand un site changeait sa structure. La collecte a tenu malgré l’évolution des sources.

Le premier gros module, en Go et parti de zéro, réalisait un workflow d’authentification puis de réservation sur un service tiers. Je l’ai pris de bout en bout : analyse du service, capture du trafic réseau comme référence, conception, implémentation, puis tests incrémentaux jusqu’à lever chaque blocage. Il a atteint un état fonctionnel.

Analyse réseau et sécurité

Le module devait respecter le protocole observé dans le trafic capturé. L’ordre, les valeurs et la complétude des en-têtes comptaient, et les paramètres TLS devaient rester constants d’un bout à l’autre de la session. Mon outil principal de diagnostic était la comparaison à une capture de référence : repérer, octet après octet, où ma requête divergeait de l’échange observé.

Le comparateur ci-dessous rejoue cette méthode sur une requête fictive : décochez un choix d’implémentation, les octets qui s’écartent de la référence passent en rouge et le serveur cesse d’accepter la requête.

Choix d’implémentation

Ligne Référence Ma requête
TLS paramètres 0x0a paramètres 0x0aparamètres 0x0b1 octet — paramètres TLS différents de la référence
1 GET /example GET /example
2 user-agent: Mozilla/5.0 (exemple) user-agent: Mozilla/5.0 (exemple)
3 accept-encoding: br accept-encoding: braccept-language: fr9 octets — ordre des en-têtes différent
4 accept-language: fr accept-language: fraccept-encoding: br9 octets — ordre des en-têtes différent
5 cookie: session=0x00 cookie: session=0x00cookie: session=0x011 octet — cookie d’une session inconnue du serveur
6 x-client-version: 2 x-client-version: 2x-client-version: 11 octet — version différente de la référence

Réponse du serveur

200 acceptéLa requête ressemble à la référence. 403 refuséLa requête ne ressemble pas à la référence.

Octets divergents :

Fig. 3 — Comparateur à la capture de référence : paramètres TLS et en-têtes HTTP d’une requête fictive.

J’ai consacré une semaine à lire un script côté client pour en comprendre la logique.

Piloter un assistant de programmation par IA

L’entreprise m’a confié un assistant de programmation par IA. Au début, je l’utilisais mal : je lui envoyais tout, sans cadrer le problème, en attendant qu’il décide à ma place. J’ai avancé ainsi jusqu’à environ 60 % du premier module, puis un blocage net, impossible à dépasser de cette manière.

Quand je négligeais le contexte, l’assistant inventait ; quand je formulais mal le problème, il esquivait la vraie difficulté. J’ai alors pris le temps de comprendre moi-même les mécanismes du domaine, puis j’ai reformulé les problèmes. Dès lors, je décidais et je vérifiais ce que l’assistant produisait, jusqu’à terminer le module.

Sur la durée du stage, j’ai repris et maintenu une chaîne de collecte Python d’environ 26 000 lignes. J’ai produit de zéro un module Go d’environ 3 200 lignes.

Volume de code du stage Deux langages sur la durée du stage (4 mai → 24 juillet 2026) PYTHON ≈ 26 000 lignes — chaîne de collecte existante reprise et maintenue 91 fichiers GO ≈ 3 200 lignes — module d’automatisation produit avec l’assistant de zéro
Fig. 4 — Volume de code du stage, compté sur les dépôts.

Ce que j’ai appris, ce que je referais

J’ai mené un module complet en partant de zéro, sur un langage et un domaine que je ne connaissais pas. Ma principale limite, dont j’ai pris conscience pendant le stage, a été d’avancer plus vite que ma compréhension réelle ; j’ai appris à consolider, à m’assurer d’avoir compris une étape avant d’en empiler une autre. J’ai aussi découvert le travail en équipe distribuée : communication asynchrone, autonomie, traçabilité.

Ce stage a donné un sens concret à des notions parfois abstraites en cours — réseau, analyse de protocole, sécurité appliquée — et m’a confirmé mon intérêt pour la sécurité et le développement bas niveau. Pour la suite, je veillerai à consolider au fur et à mesure.

Compétences BUT mobilisées

Compétences du référentiel BUT Informatique démontrées dans ce projet : niveau, ce que le projet montre et preuve.
CompétenceNiveauCe que le projet montre, et preuve
RéaliserRéaliser un développement d’applicationNiveau 2Développer de bout en bout un module logiciel.Preuve : Module Go produit de zéro, avec l’assistant de programmation, sous ma direction, réalisant un workflow authentification → réservation.
AdministrerFaire évoluer et maintenir un système informatique communicant en conditions opérationnellesNiveau 2Analyser les échanges réseau d’une application.Preuve : Capture et analyse du trafic (HAR, Charles Proxy), fidélité protocolaire et cohérence de session TLS.
OptimiserOptimiser des applicationsNiveau 2Fiabiliser et maintenir un système en production.Preuve : Maintenance d’une chaîne de collecte Python rendue tolérante à l’évolution des sources.
CollaborerTravailler dans une équipe informatiqueNiveau 2Travailler en équipe distribuée à distance.Preuve : Projet mené à distance avec un tuteur et deux collaborateurs, suivi par dépôts Git.