
Reverse engineering de quelques APIs Leboncoin pour me faire une extension Chrome — retour d'XP
Salut r/developpeurs,
Je suis dev et je vends de temps en temps sur LBC. Au départ je voulais juste me faire un script pour republier mes annonces chaque semaine sans avoir à cliquer à la main. En reversant un peu l'API j'ai vu qu'y avait pas mal de choses sympa à exploiter (notamment une API privée derrière /mes-annonces qui renvoie la description, le prix, les photos et même les stats par annonce). De fil en aiguille c'est devenu une extension complète, je la partage ici.
Elle fait trois choses, en gros :
- veille auto sur des mots-clés — utile si t'attends qu'une annonce précise passe, ou si tu fais de la prospection en freelance
- republier ses annonces sans avoir à le faire à la main chaque semaine
- classer les messages reçus en scam / lead / question / spam, parce que la messagerie LBC est devenue un peu n'importe quoi côté arnaques
Ce que j'ai appris en reversant :
- L'API
/finder/search(recherche publique) est en POST avec uneapi_keyhardcodée dans leur JS bundle, accepte des filtres en JSON propre (ad_type, owner.user_id, prix min/max, keywords...). Largement utilisable. - L'API privée
/api/dashboard/v1/search(qui sert leur page Mes Annonces) tape avec unAuthorization: Bearer <JWT>. Le JWT est danslocalStorage.luat, payload contientaccount_id(UUID), c'est tout ce qu'il faut. Retourne description complète, prix, photos, vues, favoris, contacts — bien plus que ce qu'on voit dans le DOM. - La messagerie utilise l'API HAL
/messaging/proxy/api/v1/hal/{userId}/conversationsavec le même JWT. Pagination via_links.nextcomme un bon citoyen HAL. - DataDome bloque les appels directs depuis un service worker, mais laisse passer ceux faits depuis une vraie tab leboncoin via
chrome.scripting.executeScript. Donc le pattern c'est : ouvrir une tab leboncoin en background, exécuter lefetchdedans, récupérer le résultat. Ça paie 200 ms de latence mais c'est transparent.
Stack : Manifest V3 vanilla, ES modules natifs (aucun build step, aucune dep), 185 tests Node natif (unit + intégration popup avec un DOM stub maison parce que installer happy-dom pour 5 IDs c'était overkill). Tout est synchrone et lisible.
Repo : https://github.com/ohugonnot/leboncoin-bumper
Disclaimer obligatoire : les CGU de Leboncoin interdisent l'automatisation (article 8), donc à utiliser à ses risques. Perso compte secondaire, jamais eu de souci, mais zéro garantie.
Si vous testez et que vous voyez des bugs ou des trucs qui pourraient être mieux foutus, je prends tous les retours. C'est mon premier projet open source d'une certaine taille, je suis sûr qu'y a des choses à améliorer.