Bypass Datadome JS (lacentrale, lbc)

Bonjour, je cherche un moyen pour pouvoir scraper Lacentrale. J’ai d’abord commencé par du scrapy mais comme lacentrale repose sur du JS pour pas mal de vérifs, je suis donc passé sur Selenium. J’ai testé jusqu’à présent :

  • Rotation de proxy et VPN (cyberghostvpn)
  • Modification des headers sur sélénium (recompilation du chromedriver aussi)

Mais rien à faire, en arrivant sur la centrale, dès que je change de page mon scrapper se fait détecter. Je pense que le problème pourrait se situer au niveau des cookies (surtout le cookie datadome), et je voulais savoir si des gens avaient réussi à contourner datadome.

Hello :wave:

Si tu veux scraper les données: Piloterr avec l’API Website Crawler.
Si tu veux automatiser des actions avec un navigateur: Scrapingbee avec l’API JavaScript Scenario.

Merci beaucoup de l’aide apportée. Cependant j’aimerais bien trouver une méthode qui n’implique pas de passer par des API payantes, même si c’est bien sûr plus compliqué de le faire sois même c’est surtout pour la technique que je veux réaliser ce projet.

1 « J'aime »

Tu peux te documenter ici GitHub - post04/datadome-documentation: Documentation of the datadome payload and very rough example of the math stuff implemented in golang with a scuffed payload gen.

1 « J'aime »

Merci beaucoup pour la doc, ça me débloque sur pas mal de choses. J’arrive à bien manipuler la donnée envoyée à datadome mais quelque chose me perturbe c’est à propos du cookie « datadome » dans le domaine .lacentrale.fr, que ce soit sur linux ou windows avec des navigateurs différents, j’ai ce cookie. Cependant sur Selenium je ne l’obtient pas et je suspecte le fait que datadome s’en serve pour bloquer la session. De plus je remarque qu’à la 20-ième page, je dois résoudre un captcha (captcha de datadome), mais je ne suis pas bloqué et les données ne sont pas altérées (ce qui est souvent le cas quand datadome identifie un scraper). Est-ce que tu aurais d’éventuelles pistes dessus ?

Cela m’intéresse également, des news depuis ?

Bonjour, il détecte ton JA3 par TLS fingerprinting => tu peux essaye d’imiter un JA3 connu

Salut,

Je tombe sur ce thread parce que j’ai justement bossé sur la même problématique pour LBC (DataDome, Cloudflare-like, etc.), au final je suis parti sur une approche un peu différente qui pourrait débloquer.

Au lieu d’essayer d’imiter Chrome (JA3, fingerprint TLS, cookies, etc.) depuis Python/Go/Selenium — qui est un combat sans fin parce que DataDome update régulièrement —, j’ai fait une extension Chrome MV3 qui exécute le fetch à l’intérieur d’une tab Chrome déjà ouverte sur le site cible, via chrome.scripting.executeScript.

Concrètement :

  1. Le service worker de l’extension ouvre une tab leboncoin.fr en arrière-plan
  2. Il injecte un script dans cette tab qui fait le fetch(...) vers l’API LBC
  3. Le résultat est renvoyé au service worker

Comme c’est Chrome lui-même qui fait l’appel, tout est natif : JA3 réel, cookies de session, user-agent, headers, ordre des headers, TLS version, tout. DataDome n’a rien à détecter parce que c’est un vrai navigateur authentifié. Pas besoin de proxy ni d’imitation de fingerprint.

Limites de l’approche :

  • Il faut une extension Chrome installée chez l’utilisateur (pas du scraping anonyme depuis un serveur)
  • Il faut une session active (utilisateur connecté à LBC)
  • Tu paies ~200 ms par appel le temps que la tab tourne en background
  • Pas adapté à du scraping massif multi-comptes (c’est pour soi-même ou pour les utilisateurs qui installent l’extension)

Mais pour tout ce qui est « automatiser ce que je fais déjà sur LBC en tant qu’utilisateur » (veille, republier, lire ma messagerie), ça passe nickel et c’est zéro maintenance côté anti-bot