thomasync / leboncoin-api-search

Leboncoin API - Faire des recherches sur leboncoin
1 stars 1 forks source link

La réponse de l'api leboncoin est uniquement un captcha #3

Closed Nyrok closed 6 months ago

Nyrok commented 6 months ago

Code:

import * as leboncoin from 'leboncoin-api-search';

(async () => {
    console.log(await leboncoin.default.search({}));
})();

Response:

{
  url: 'https://geo.captcha-delivery.com/captcha/?initialCid=AHrlqAAAAAMALZjQp-hKbVYAAgSwuQ==&cid=Cs5zJ6thbGszoLzuNkVVj0AutkStMbOc80FCMKcRqsFWGUQePw13MSX21jJablk5oIRxmTr5VgD~ZRP0buMBSozAB2Lm~jzszeTUJiCQcdAGiN98_CaZLwbk7rwiqKVC&referer=http%3A%2F%2Fapi.leboncoin.fr%2Ffinder%2Fsearch&hash=05B30BD9055986BD2EE8F5A199D973&t=fe&s=332&e=6399f3f375a5065c073e7d461514a5f845218b4aedeb4b599120ff23c4ad49cf'
}

Peut-être que les headers mobile de l'api ont expiré ?

thomasync commented 6 months ago

oui j'ai l'impression que quelqu'un a tellement envoyé de requêtes que les headers ont étés bloqués. mais c'est assez facile de contourner ça.

  1. Mettre un proxy sur son téléphone et récupérer les headers avec charles / burp / proxyman.
  2. Copier dans le fichier constants.ts (HEADERS)

De mon côté dès que j'ai du temps, je vais mettre à jour la lib, pour que ça soit plus facile à update et aussi refresh les headers de base.

Nyrok commented 6 months ago

Perso j'ai remplacé mes headers par ça: (pris avec session Charles sur mon téléphone)

Host: api.leboncoin.fr
Content-Type: application/json
Accept-Encoding: gzip, deflate, br
Cookie: didomi_token=eyJ2ZW5kb3JzIjp7ImVuYWJsZWQiOltdLCJkaXNhYmxlZCI6W119LCJ1c2VyX2lkIjoiNTM5RTkxQTMtMkY3My00RjU1LUIxNUItQTJFRTI4NjRBODNEIiwicHVycG9zZXMiOnsiZW5hYmxlZCI6WyJuZWNlc3NhaXJlcyJdLCJkaXNhYmxlZCI6W119fQ==; datadome=nOTDt1I2Me2tkmpc5vNX0cpUWgbrslcOBj0GRn5Kljsar78Ck5DBrmEUNuDsF8J3BW3lxiaTtsgFO6f9UyKu24WofgUZQNsOYHwut6KpgWb6NMyG~eUgcToQERlFBg2T
Connection: keep-alive
Accept: application/json
User-Agent: LBC;iOS;17.4.1;iPhone;phone;E65E2C0C-7FE6-4825-B4E7-DB186FE542F1;wwan;6.111.0;24.95.1930
Content-Length: 485
api_key: ba0c2dad52b3ec
Accept-Language: en-GB,en;q=0.9
export const HEADERS = {
    Host: "api.leboncoin.fr",
    "Content-Type": "application/json",
    "Accept-Encoding": "gzip, deflate, br",
    Cookie: "didomi_token=eyJ2ZW5kb3JzIjp7ImVuYWJsZWQiOltdLCJkaXNhYmxlZCI6W119LCJ1c2VyX2lkIjoiNTM5RTkxQTMtMkY3My00RjU1LUIxNUItQTJFRTI4NjRBODNEIiwicHVycG9zZXMiOnsiZW5hYmxlZCI6WyJuZWNlc3NhaXJlcyJdLCJkaXNhYmxlZCI6W119fQ==; datadome=nOTDt1I2Me2tkmpc5vNX0cpUWgbrslcOBj0GRn5Kljsar78Ck5DBrmEUNuDsF8J3BW3lxiaTtsgFO6f9UyKu24WofgUZQNsOYHwut6KpgWb6NMyG~eUgcToQERlFBg2T",
    Connection: "keep-alive",
    Accept: "application/json",
    "User-Agent": "LBC;iOS;17.4.1;iPhone;phone;E65E2C0C-7FE6-4825-B4E7-DB186FE542F1;wwan;6.111.0;24.95.1930",
    "api_key": "ba0c2dad52b3ec",
    "Accept-Language": "en-GB,en;q=0.9"
};

Réponse toujours pareille, peut-être qu'ils ont renforcé la sécurité ?

thomasync commented 6 months ago

moi de mon côté ça marche toujours impeccablement, j'ai un script qui tourne 12h/24h.. sur un rasp maison. tu n'as pas brusqué l'api avec pleins de requêtes ou pu être flag IP par leur service ?

Nyrok commented 6 months ago

La première requête que j'ai pu tenté (sans ta lib) avait fail, y a peut-être moyen qu'ils m'aient flag à ce moment-là 🤔 Mais ce qui est bizarre c'est que sur mon téléphone ça marche encore et c'est censé être typiquement la même requête