Plongée technique dans tgadsspy : classificateur et pipeline d'ingestion de données
Documentation technique du pipeline de données tgadsspy — collecte de données, architecture du classificateur de niches (regex + poids), pipeline géoclassificateur en 3 étapes, stockage adressé par contenu SHA256 et cache d'agrégation. Pour les développeurs, chercheurs et équipes de conformité.
Contents
- Objectif et audience
- 1. Source de données
- 2. Pool de canaux et niveaux
- 3. Déduplication des créatifs
- 4. Classification des niches
- 5. Classification géographique
- 6. Miroir média
- 7. Extraction d'annonceurs
- 8. Cache d'agrégation
- 9. Spider BFS discover-similar
- 10. Complétude des données et lacunes connues
- 11. Licence des données et citation
Objectif et audience#
Ce document est une plongée technique dans la façon dont Telegram Ads Spy collecte, classifie et sert les données publicitaires Telegram. Il complète la vue d'ensemble sur /about avec des détails au niveau de l'implémentation. Public principal : les développeurs qui construisent sur l'API publique, les chercheurs qui ont besoin de comprendre la provenance des données pour les citer, et les équipes de conformité qui évaluent la méthodologie OSINT du système.
1. Source de données#
Toutes les données publicitaires dans Telegram Ads Spy proviennent d'une seule source : notre pipeline de collecte automatisé. Notre couche de collecte fonctionne au-dessus de l'API de Telegram et renvoie des données structurées. Telegram Ads Spy s'appuie exclusivement sur ce pipeline unique — pas de scraping.
Ce que nous collectons#
- Messages sponsorisés dans les chaînes suivies — texte, bouton CTA et lien, média (liens temporaires valables 1 heure), cible de l'annonceur
- Métadonnées des chaînes — titre, nom d'utilisateur, description, nombre d'abonnés, avatar
- Recherche de chaînes — utilisée pour la découverte et lorsqu'un utilisateur soumet un lien t.me
- Chaînes similaires — les recommandations de chaînes similaires de Telegram, utilisées pour élargir le pool de chaînes
2. Pool de canaux et niveaux#
| Niveau | Nombre de membres | Intervalle d'ingestion |
|---|---|---|
| S (Super) | 1M+ | 30 minutes |
| A | 100k–1M | 2 heures |
| B | 10k–100k | 8 heures |
| C | 1k–10k | 72 heures |
| Placeholder | Inconnu | Pas d'ingestion |
3. Déduplication des créatifs#
empreinte du créatif = sha256(title + text + ctaUrl + ctaLabel + accentColor)
Un créatif est considéré comme nouveau uniquement si son empreinte n'a pas été vue auparavant. Cela signifie :
- Le même annonce dans 100 canaux produit un seul enregistrement
AdCreative - Chaque apparition dans un canal produit un enregistrement
SponsoredImpression
4. Classification des niches#
Étape 1 : Détection de marques Consultation d'un dictionnaire de ~400 marques d'annonceurs connues. Exemples :
binance→crypto1xbet→gamblingexness→forex
Étape 2 : Scoring par mots-clés Des patterns regex sont évalués pour chaque niche avec des règles de spécificité, de négation et des variantes multilingues.
Taxonomie des niches#
crypto, trading, forex, fintech, gambling, betting, vpn, dating, news, education, gaming, retail, tech, bots, adult, signals, remittance, ai, other
5. Classification géographique#
Étape 1 : Analyse du TLD de l'URL CTA
.ru → RU, .com.br → BR, .pk → PK, etc.
Étape 2 : Détection de la langue sur le texte du créatif Arabe → AR, cyrillique → RU/CIS, devanagari → HI, hangul → KR, hiragana/katakana → JP, thaï → TH.
Étape 3 : Agrégation géo au niveau du canal
Le canal dans lequel le créatif est apparu a son propre signal géo. Un créatif à domaine .com en anglais apparaissant principalement dans des canaux russophones est classifié RU.
6. Miroir média#
Le cron Telegram Ads Spy-media-mirror (toutes les 5 minutes) :
- Fetch : HTTP GET vers le lien média temporaire d'origine
- Hash : SHA-256 du contenu binaire brut
- Stockage : Écrit dans
/var/www/tgadsspy-media/<préfixe>/<sha256-hex>.<ext> - Mise à jour :
AdCreative.mediaUrlest mis à jour vers/m/<préfixe>/<sha256-hex>.<ext>
Le serveur nginx sert les chemins /m/ avec Cache-Control: public, immutable, max-age=31536000.
7. Extraction d'annonceurs#
- Annonceur de domaine : si
ctaUrlest une URL externe, le domaine enregistré devient un enregistrementAdvertiseravectype: domain - Annonceur Telegram : si
ctaUrlest une URLt.me/<username>, le nom d'utilisateur devient un enregistrementAdvertiseravectype: telegram
8. Cache d'agrégation#
Telegram Ads Spy:home:agg (TTL 120s) : nombre total de créatifs, annonceurs, canaux, niches principales, 20 créatifs récents, stats du jour.
Telegram Ads Spy:pool:stats (TTL 600s) : nombre de canaux par niveau, compte éligible aux sponsors, pays représentés.
9. Spider BFS discover-similar#
- Sélection d'ancre :
Channel.lastSimilarCheckAt IS NULL OR < NOW()-1h - Taille du lot : 30 canaux par tick (chaque minute en processus)
- Cooldown d'ancre : 1 heure pour éviter de re-spider le même canal
10. Complétude des données et lacunes connues#
Couverture estimée : Pour les messages sponsorisés du cabinet EUR, la couverture est estimée à 65–75% de tous les créatifs uniques de la période.
Lacunes connues : publicité dans les groupes, messages bot-à-utilisateur, résultats bot inline, canaux très récents, canaux avec < 1k abonnés.
11. Licence des données et citation#
Toutes les données sont sous CC-BY-4.0 :
Source : tgadsspy.com · tgadsspy.com/blog/tgadsspy-classifier-pipeline-technical-deep-dive · CC-BY-4.0
Also available in:
Cite this article
tgadsspy research (2026). Plongée technique dans tgadsspy : classificateur et pipeline d'ingestion de données. tgadsspy.com. Retrieved from https://tgadsspy.com/blog/fr-tgadsspy-plongee-technique-classificateur-pipeline-2026
Licensed CC-BY-4.0 — reuse allowed including commercial, attribution required.