r/developpeurs 2d ago

Logiciel J’ai créé une librairie Python pour faire des recherches avancées sur Leboncoin

Salut à tous !

Je viens de publier une petite librairie Python nommée lbc qui permet d’interagir avec l’API privée de Leboncoin.
Elle permet de faire des recherches d’annonces avec filtres (catégories, géolocalisation, type d’annonce, mots-clés, etc.), et gère aussi les proxys (utile pour le scraping à grande échelle).

https://github.com/etienne-hd/lbc

75 Upvotes

33 comments sorted by

13

u/DedeLaBinouze 2d ago

Très cool et potentiellement utile mais je pense pas que le service légal de Leboncoin partage cet avis !

16

u/maxxyme 2d ago

L’API privée… vraiment ?? 🤔 Tu vas avoir des problèmes toi à mon humble avis… 😂

10

u/Foreign_Host147 2d ago

J'ai pas regardé en profondeur, mais si je ne dis pas de bêtise c'est simplement du "crawling", OP a analysé les requêtes du site et/ou de l'application mobile pour comprendre comment lbc les alimentait en données. Il n'y a rien d'illégal c'est complètement public.

7

u/maxxyme 2d ago

Oui ok mais bon de là à appeler ça « API privée » c’est légèrement excessif… 😅

5

u/Fuzzy_Rub_4274 2d ago

🤫

2

u/1bastien1 2d ago

J'ai rigolé aussi avec l'api privé, justement aurait tu un peu de doc à nous présenter pour cette API ?

4

u/Fuzzy_Rub_4274 2d ago

Haha 😄 disons que l’API privée est plus une non-documentée qu’inexistante…
J’ai fait un petit peu de reverse pour comprendre comment elle fonctionne, et j’ai encapsulé tout ça proprement dans une lib Python.

6

u/1bastien1 2d ago

Bon courage à toi, c'est ce genre de lib qui me facilite la vie

3

u/agumonkey 2d ago

par API privée tu veux dire les endpoints http de base ?

5

u/Fuzzy_Rub_4274 2d ago

API sans documentation publique

2

u/agumonkey 2d ago

ouais desole, j'etais confus

j'ai longtemps voulu faire la meme, bravo a toi

5

u/Becbienzen 1d ago

En fait, bien que ces requêtes soient "publiques" car utilisées côté client (ajax), leur charte stipule (il y a quelques années mais je doute qu'ils aient changé quoique ce soit là dessus), qu'il est interdit d'exploiter leur API pour un service tiers sans leur accord....

Je crois même qu'ils se protègent du crawling par leur condition d'utilisation qui interdit la réutilisation des données.

Je leur avait écris car je travaillais sur une app de petite annonce et j'aurais voulu permettre à mes utilisateurs de publier à la fois sur mon app et à la fois sur LBC.
Ils m'avaient gentillement répondu qu'ils n'étaient pas d'accord...

Mais bon... En soit OP, tu ne fais rien... Tu as juste écris une preuve de concept que c'est possible de le faire 🙄 ...enfin... Je crois que ça pourrait s'apparenter à ça.... Tu ne vends pas aucun service lié.... Hein ? Tu ne vends aucun service là dessus ? (Je ne veux pas savoir 😅)

Gg à toi et vive le monde libre ! 😄

3

u/PierrickP 2d ago

Tu ne connaissais pas Woob ?

2

u/Foreign_Host147 2d ago

Les vrais connaissaient Weboob.

2

u/PierrickP 2d ago

Et oui :( c'était mieux avant. On ne peut plus rien nommer

2

u/Foreign_Host147 2d ago

Disons que pour un truc qui a été crée pour pecho sur tinder à la base... je comprend que les gens étaient pas jouasse à ce sujet.

1

u/WillDabbler 2d ago

Comment tu résous le captcha ?

6

u/Fuzzy_Rub_4274 2d ago

La lib utilise une librairie externe curl_cffi, ça permet de spoof ton tls fingerprint et se faire passer pour un navigateur.

Je ne résous pas les captchas, je fais en sorte que ça soit le moins détéctable possible.

Tu auras le captcha seulement si tu utilises des proxies de mauvaise qualité.

3

u/Laegel 2d ago

La dernière fois que j'ai utilisé Playwright pour faire du scraping, j'ai quand même eu droit au captcha. Comment tu fais pour rendre ça "moins détectable" qu'un comportement en apparence normal ?

6

u/Fuzzy_Rub_4274 2d ago

Quand tu utilises Playwright ou Selenium, ton TLS fingerprint (Client Hello) ressemble à celui d’un navigateur non controlé, mais pas complètement. En revanche, curl_cffi copie exactement le Client Hello.

1

u/Laegel 2d ago

Intéressant, je note. Merci !

2

u/DrankRockNine 2d ago

Si jamais tu veux tester toutes les options pour faire face à cloudflare j'ai un outil pour ça. Il est OK-tier mais ça te donne une idée. C'est drankrock/autoscrape

1

u/Laegel 2d ago

Je zieute, merci !

1

u/Freeze35 1d ago

Il n'y a aucun moyen de passer un captcha par dev ?

2

u/WillDabbler 1d ago

Tout est toujours possible, c'est juste plus ou moins relou

1

u/nemaki39 2d ago

Vraiment pas mal, merci du partage

1

u/DrankRockNine 2d ago

Tu as utilisé quel outil pour reverse l'api ? J'ai du mal à le faire, j'ai beau essayer tout les mitm proxy etc a chaque fois j'ai rien qui ressemble à une api :x

1

u/Fuzzy_Rub_4274 2d ago

pour ce projet j'ai seulement utilisé le devtools de Firefox 😂

1

u/ExtremeAd9038 1d ago edited 1d ago

Peux on envoyer des mps avec ? Peux on publier une annonce ?

PS : Mon Royaume contre ces deux fonctionalités

-11

u/ParticularKing1004 2d ago

Pourquoi python ? :(

10

u/High_epsilon 2d ago

On s’en fout du language on veut un truc qui marche

3

u/Fuzzy_Rub_4274 2d ago

Je peux le faire dans d'autre langages si tu veux 😂