Contexte technique

Le client Android de TikTok ne passe pas par les points d’accès web publics. Il interroge un API HTTP+JSON interne qui délivre davantage de champs et répond plus rapidement. En trois semaines, le système décrit a extrait 3,23 milliards de profils créateurs, 5,94 milliards de vidéos et 2,8 milliards de commentaires. Les métadonnées de ces vidéos – légendes, vues, likes, partages, son, pays et horodatage – ont été publiées sous forme de jeu de données de 4,5 milliards d’enregistrements sur Hugging Face.

Mécanisme d’enregistrement et signature

Chaque appel API requiert quatre éléments synchronisés : un device_id et un iid délivrés par TikTok, ainsi que les champs cdid et openudid générés par le client. L’enregistrement s’effectue via /service/2/device_register/ avec un corps JSON chiffré par TTEncrypt, un transformateur byte‑level à clé fixe. Le corps contient plus de trente‑huit paramètres décrivant le modèle, la marque, la version Android, la résolution, le carrier et le fuseau horaire. La signature calcule le hachage du query string exactement tel qu’il est envoyé ; toute modification d’ordre (par exemple l’utilisation de url.Values.Encode() en Go, qui trie les clés) invalide la signature.

{
  "magic_tag": "ss_app_log",
  "header": {
    "aid": 473824,
    "package": "com.ss.android.ugc.tiktok.lite",
    "app_version": "32.8.2",
    "device_model": "SM-A136U",
    "device_brand": "Samsung",
    "cdid": "",
    "openudid": "<16 hex>",
    "region": "SG",
    "carrier": "Singtel"
  }
}

Si la signature est erronée, le serveur renvoie un HTTP 200 vide sans code d’erreur, rendant le diagnostic difficile.

Gestion du TLS et des hôtes régionaux

Le client doit également choisir le hôte régional correspondant à la localisation du device et reproduire un handshake TLS dont le profil JA3 correspond à celui d’un téléphone Android. Un cipher suite ou une version TLS inadaptée entraîne le même corps vide que les erreurs de signature. Ainsi, quatre facteurs – activation du device, signature, hôte, TLS – doivent être corrects simultanément pour obtenir une réponse valide.

Limites et considérations de sécurité

Le modèle d’accès est strictement anonyme : aucune authentification utilisateur, aucun cookie de session et aucune capacité à atteindre les contenus protégés (messages privés, vidéos privées, listes de likes). Cette absence de boucle de rétroaction empêche tout ajustement dynamique ; chaque tentative infructueuse génère un 200 vide, obligeant les développeurs à mesurer chaque facteur séparément. Le chiffrement TTEncrypt, bien que simple, repose sur une clé fixe connue du public, ce qui rend le corps du registre réversible mais ne protège pas contre l’usage non autorisé de l’API. Enfin, la collecte massive de données soulève des questions de conformité aux politiques de confidentialité et aux législations locales, car aucune permission explicite de l’utilisateur n’est requise pour extraire ces métadonnées publiques.