Introduction
Le dépôt git du projet API-API-TAG-PACKAGER de Qwant constitue une source forensique précise sur le chemin Web de l'API et son routage vers Bing. Il documente le code versionné ; il ne suffit pas, sans artefacts et configurations, à établir le déploiement, le périmètre opérationnel ou le fonctionnement de backends absents du dépôt.
Dans les tags de décembre 2016 contrôlés, les résultats organiques Web non vides servis par le chemin analysé ont tous une origine Bing, directement ou depuis le cache alimenté par Bing. Cette dépendance du chemin est établie dans le code ; l'hypothèse d'une présentation destinée à masquer cette réalité doit être confrontée au dossier d'audit.
A. Contexte technique
Le code source de l'API principale de Qwant (api/qwant_v2, rebaptisée services/api) contenait un mécanisme de routage des requêtes web. Une variable appelée webBrainLocales définissait pour quelles locales/langues les requêtes parvenues à cette branche étaient envoyées vers un endpoint interne nommé WebBrain dans le code, plutôt que vers Bing. Le nom de l'endpoint n'identifie pas le programme backend.
Logique du routage :
- Si la locale de l'utilisateur était présente dans le tableau
webBrainLocales→ requête dirigée vers l'endpoint interne nommé WebBrain - Si la locale était absente du tableau → requête dirigée vers Bing (Microsoft)
Ce routage ne permet pas, à lui seul, de calculer un taux de trafic : il faut connaître les locales réellement demandées, le cache, le déploiement et le backend de l'endpoint.
B. La commande git révélatrice
La commande git log -GwebBrainLocales -p --reverse sur le dépôt de référence révèle 5 commits modifiant cette variable entre le 22 juin et le 8 juillet 2016 — soit exactement pendant la période de l'audit CDC/CardiWeb.
C. Le commit du 29 juin 2016 : la bascule vers Bing à 100%
Auteur : Pierre Vignaux Date : 29 juin 2016 Contenu : Vidage complet du tableau webBrainLocales
webBrainLocales = []webBrainLocales = []Dans cet état de code, aucune locale atteignant cette branche ne transite vers l'endpoint WebBrain ; les défauts de cache sont routés vers Bing. Le cache peut éviter un nouvel appel réseau, tout en resservant un résultat d'origine Bing dans les tags de décembre contrôlés.
Limite de déploiement : le commit apparaît dans des versions taguées, ce qui prouve son inclusion dans des versions de release, pas leur mise en production effective. Les manifestes CI/CD, configurations, artefacts et journaux restent nécessaires.

A. Ce qui est établi et ce qui relève du témoignage
Le courriel Cassar et le dépôt documentent qu'une branche de démonstration retire l'appel direct à Bing de l'API et le remplace par un call fake à l'endpoint interne :
- Fait documenté : Jonathan Cassar modifie l'API pour appeler l'endpoint nommé WebBrain ;
- Témoignage direct de Stéphane Erard : Thomas Massière lui aurait montré que le programme exécuté était en réalité Mozart, modifié pour relayer Bing. WebBrain n'aurait jamais été un logiciel distinct en production.
Une capture Jenkins du projet DATA-MOZART-TAG-PACKAGER corrobore l'existence et le conditionnement de Mozart, pas le mapping de l'endpoint, le code Bing ou son déploiement. Le dépôt/JAR Mozart, le job Jenkins exporté et les configurations sont nécessaires.
B. La branche 'demo' de Cassar
Pour l'audit technique commandé par la CDC en mai 2016, Jonathan Cassar a créé une branche nommée demo. Cette branche remplaçait l'appel direct à Bing par un « fake call » au Brain. Cette modification est compatible avec une présentation où Bing n'est plus visible dans le dépôt API ; le code réellement montré et les explications données à l'auditeur restent à établir.
Email de Cassar (pièce d'audit) :
« Comme demandé ce code est juste un fake »
Cette phrase établit le caractère factice du nouvel appel dans la branche et sa destination de présentation. Elle ne suffit pas à qualifier juridiquement un faux ni à prouver ce qui a effectivement été montré.

C. Le déploiement hors CI (Continuous Integration)
Stéphane Erard déclare que Thomas Massière déployait certains JAR hors de l'infrastructure CI qu'il gérait, ce qui aurait réduit la traçabilité. Cette déclaration doit être corroborée par les jobs, accès, procédures et journaux de déploiement.
D. Implication des cadres dirigeants
Chemin (Responsable RH/Général) : C'est lui qui avait demandé aux employés de remonter les éléments « sensibles » avant l'audit, et qui avait envoyé l'email de préparation de l'audit.
Corbi (plus tard Délégué du Personnel) : en copie du courriel Cassar. La seule réception d'un message ne prouve ni lecture, ni compréhension, ni participation à une fraude.
A. Le fichier search_ads.php : analyse détaillée
Le fichier search_ads.php est le composant qui gère l'affichage des publicités Bing Ads dans les résultats de recherche Qwant. L'analyse de ce fichier revèle l'envoi systématique de trois éléments à bingapis.com :
1. L'adresse IPv4 tronquée au /24
- Variable :
$ipAddressAnonimized - Fonction appelée :
anonymizeIP()(ligne 137) - Opération : Remplace simplement le dernier octet par zéro
- Exemple :
82.65.234.124→82.65.234.0
- Exemple :
- Intégration : L'adresse résultante est ajoutée à la requête envoyée à Bing Ads (ligne 156)
// Extraction du code source
$ipAddressAnonimized = anonymizeIP($userIP); // line 137
// ...
$bingAdsRequest = $apiClient->buildRequest([
'ip' => $ipAddressAnonimized,
'ua' => $userAgent,
'q' => $searchQuery
]); // line 156// Extraction du code source
$ipAddressAnonimized = anonymizeIP($userIP); // line 137
// ...
$bingAdsRequest = $apiClient->buildRequest([
'ip' => $ipAddressAnonimized,
'ua' => $userAgent,
'q' => $searchQuery
]); // line 1562. Le User-Agent (navigateur, système d'exploitation, version)
Transmis en clair à Microsoft, cet élément combiné à l'IP/24 constitue un identifiant quasi-unique (technique du « browser fingerprinting »).
3. Les mots-clés de recherche (requête utilisateur)
Transmis en clair pour obtenir des publicités contextuelles.
B. Pourquoi l'IPv4/24 n'est PAS une anonymisation
L'IPv4/24 conserve les 3 premiers octets de l'adresse IP complète. Cela représente un sous-réseau de 254 adresses (.1 à .254).
Technique de ré-identification : En interrogeant un service de géolocalisation sur chacune de ces 254 adresses, il est possible de géolocaliser l'utilisateur au niveau du quartier.
Conclusion : Il s'agit d'une pseudonymisation, non d'une anonymisation. La qualification retenue publiquement par la CNIL le 11 février 2025 est celle d'un jeu de données transmis à Microsoft pseudonymisé et non anonymisé.
C. Le DataHub de traçabilité publicitaire
Le code source révèle également l'existence d'un DataHub qui envoie un message pour chaque publicité Bing Ads affichée. Ce système de traçabilité interne n'est mentionné nulle part dans la politique de confidentialité de Qwant.
Implication : Les utilisateurs ignorent que chaque requête générant une publicité est enregistrée avec les données associées :
- IPv4/24
- User-Agent
- Mots-clés de recherche
Ce système s'ajoute à l'envoi direct à Microsoft, créant une double traçabilité des activités utilisateurs.



A. Contexte socio-professionnel
Le 9 mars 2016 : Jour de grève nationale. Stéphane Erard, le seul à faire grève chez Qwant, en informe son employeur dans les règles.
Le 10 mars 2016 : La femme d'Erard accouche de leur premier enfant. Erard est mis en congé paternité.
Le 30 mars 2016 : Chemin convoque Erard dans son bureau et lui tient des propos discriminatoires selon le statut d'affilié syndical :
« Ici on travaille, on ne fait pas grève, on n'est pas la SNCF ou La Poste »
Ces propos, que Chemin n'a jamais démentis, même aux prud'hommes, constituent une violation de la protection du droit de grève.
B. L'incident du 31 mars 2016 : recit détaillé
Le 31 mars, Erard envoie un email à Chemin pour :
- Formaliser les propos tenus la veille
- Prévenir qu'il fera grève l'après-midi
La réaction de Chemin est immédiate et disproportionnée :
Phase 1 - Agression verbale dans l'open-space :
- Chemin se lève violemment en hurlant : « Mais qu'est-ce qu'il me cherche celui-là »
- Il ouvre la porte et exige qu'Erard vienne dans son bureau
- Il se tourne vers l'équipe en criant : « GRATTE-PAPIER CEGETISTE »
- Ton humiliant, haut et devant tous les collègues en open-space
Phase 2 - Intimidation dans le bureau :
- Chemin continue à hurler pendant « des minutes interminables »
- Erard, se sentant menacé, quitte la pièce
Phase 3 - Agression physique :
- Alors qu'Erard rejoint son poste de travail, Chemin rouvre la porte en hurlant :
- « PUTAIN J'VAIS M'LE FAIRE C'LUI LA »
- Le menace de licenciement
- Le saisit physiquement et le retourne pour le faire partir des locaux
- Crie : « TU PRENDS TES CLICS ET TES CLACS ET TU TE TIRES »
Phase 4 - Refus de quitter et retrait du harceleur :
- Erard, effrayé, refuse de quitter les locaux pour ne pas être accusé d'abandon de poste
- Chemin finit par retourner dans son bureau en claquant violemment la porte
Implication pour le dossier : Cette agression crée un contexte de danger, d'intimidation et de violation de la liberté syndicale. Elle intervient exactement au moment où Erard commence à avoir conscience des problèmes techniques qu'il implémente pour Qwant.
A. Origine Bing dans les tags de décembre contrôlés
Le commit du 29 juin vide webBrainLocales. Le 8 juillet, 7354507 ajoute fr et de sur develop, puis 0754dad les commente trois heures plus tard ; les deux états sont intégrés ensemble avant le tag suivant. Aucun tag master contrôlé ne porte WebBrain actif. Dans les tags des 2, 9 et 22 décembre, 100 % des résultats organiques Web non vides servis par le chemin analysé ont une origine Bing, directement ou depuis le cache alimenté par Bing. Le déploiement et le périmètre restent à corroborer.
B. Indices d'une présentation technique distincte
La branche demo, le call fake et les courriels de préparation constituent des indices sérieux d'une présentation technique distincte. Ils ne démontrent pas seuls une fraude : il faut le dossier Cardiweb/CDC, le code montré, les déclarations faites, la compréhension de l'auditeur et l'intention des personnes.
C. Preuve de la transmission de données personnelles
Le code source de search_ads.php prouve que Qwant transmettait systématiquement à Microsoft :
- L'IP/24 (obtenue par traitement de l'IP complète)
- L'User-Agent
- Les mots-clés de recherche
Ces éléments combinés présentent un risque de réidentification et relèvent de données pseudonymes. En février 2025, la CNIL a retenu cette qualification et des insuffisances d'information, tout en retenant la bonne foi de Qwant et sans prononcer de sanction.
D. Convergence avec les preuves administratives
Ces éléments techniques convergeront avec :
- L'audit DINUM de 2019 (confirmant la dépendance à Bing)
- La décision CNIL de février 2025 (confirmant les violations de données)
- Les déclarations publiques de Guillaume Champeau sur l'usage de Bing, sans les qualifier à elles seules d'aveux de mensonge
VI. Conclusion de Layer 3
L'analyse forensique du dépôt git du projet API-API-TAG-PACKAGER permet de soutenir que :
- le chemin Web des tags de décembre contrôlés dépendait entièrement de résultats d'origine Bing ;
- une branche
demoa masqué l'appel Bing direct derrière uncall fakeà un endpoint interne, sans que Git établisse seul le backend ou ce qui a été montré ; - le code publicitaire transmettait des données pseudonymes à Microsoft dans les conditions prévues par le chemin analysé ;
- les courriels établissent la préparation collective de l'audit, sans suffire à attribuer une intention frauduleuse à chaque destinataire.
Le code source fixe des faits techniques précis. Leur déploiement, leur contexte d'audit et leur qualification juridique exigent des pièces supplémentaires.
Document compilé par Stéphane Erard — Mars 2026 — Contact : stephane.erard@proton.me