Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Alertes LBC HS #39

Open
zozolapino opened this issue Aug 20, 2018 · 71 comments
Open

Alertes LBC HS #39

zozolapino opened this issue Aug 20, 2018 · 71 comments

Comments

@zozolapino
Copy link

Bonjour,
le script ne trouve plus de nouvelle annonce depuis le 19 août 2018 après midi...
Merci pour votre travail!

@squalatak
Copy link

Bonjour ,
Pareil pour moi ...ya plus rien.......Help !!!!!!!!

@maximelebreton
Copy link
Owner

Ce que je craignais le plus vient d'arriver (réf: https://github.com/maximelebreton/alertes-leboncoin#limitations)

leboncoin a mis une place une protection contre les "robots" (via https://datadome.co/), ce qui a pour effet direct de bloquer purement et simplement toutes les requêtes effectuées par un "non-humain", et donc alertes leboncoin, qui par essence en est un.

voilà.

reste à espérer qu'ils proposeront une api officielle,
sinon, cela signe la fin de tous les systèmes d'alertes basés sur le crawl des pages html,
et donc la fin d'alertes leboncoin.

@jfallot
Copy link

jfallot commented Aug 22, 2018

Voici quelques suggestions de contournement en modifiant le header http de la requête:
RSS-Bridge/rss-bridge#789
mais l'API Google URLFetchApp ne le permet pas: https://developers.google.com/apps-script/reference/url-fetch/
A-t-on une autre alternative que de demander une évolution de l'API Google ? (qui ne semble pas pressé: https://issuetracker.google.com/issues/36758197)

@maximelebreton
Copy link
Owner

merci @jfallot pour les pistes, mais datadome utilise une technologie très avancée (https://datadome.co/fr/detecter-bad-bots-datadome/), et malheureusement je ne pense pas que modifier le header http sera suffisant.

La détection en temps réel (en millisecondes), qui repose sur des critères techniques
La détection en streaming (en secondes), à l’aide de données statistiques
La détection comportementale (en minutes), qui tire parti du Big Data et du machine learning.

@Draky50110
Copy link

Apparemment réglé avec RSS-Bridge donc...

@jfallot
Copy link

jfallot commented Aug 22, 2018 via email

@squalatak
Copy link

squalatak commented Aug 23, 2018

ok et concrètement pour remettre ca en marche que doit ont faire ???

@maximelebreton
Copy link
Owner

J'ai mis en place les headers, et cela refonctionne effectivement (5.5.0).
Mais je suis tout de même assez peu optimiste.
On a passé le premier filtre (la détection technique), mais je ne suis pas sur qu'on tiendra longtemps sur la détection streaming et comportementale.
Grand merci à @jfallot qui m'a sacrément mâché le boulot !

@zozolapino
Copy link
Author

testé avec succès à l'instant, merci !

@maximelebreton
Copy link
Owner

Comme je le craignais (#39 (comment)), ce contournement n'a pas tenu longtemps.

Il existe des solutions, mais elles me semblent très précaires également, et je n'ai pas assez de disponibilités pour me lancer dans des modifications qui ne tiendront qu'une semaine.

Je réfléchis actuellement à une solution à long terme.

This was referenced Sep 3, 2018
@maximelebreton maximelebreton changed the title Alertes LBC HS depuis le 19/08 Alertes LBC HS Sep 3, 2018
@nick-stephen
Copy link

Maxime - Au cas ou que vous n'auriez pas vu ceci:

RSS-Bridge/rss-bridge#795

RSS-Bridge/rss-bridge@b0e33e4#diff-3a2b9dca8899f7f64a20ad1b309eac48

@maximelebreton
Copy link
Owner

maximelebreton commented Sep 3, 2018 via email

@nick-stephen
Copy link

Oui, c'est possible - ou peut etre pas trop vite. On ne sais pas. C'est possible mais peut etre un peu plus compliqué pour eux de changer cela, car pour le changer il faudrait mettre a jour les apps peut-etre avec https et un clef privé...

En tout cas ce script m'a été très utile de temps en temps pour guetter un achat prevu, merci!

@con6767
Copy link

con6767 commented Sep 4, 2018

idem, ce script me sert beaucoup............. m'enfin plus trop maintenant :'(

@squalatak
Copy link

jsuis dans la panade sans ces alertes !!! il me faut une solution de secours
help help Maxime !!!!!!

@remigentil
Copy link

remigentil commented Sep 7, 2018

La rançon du succès c'est quand les utilisateurs viennent à penser que le createur les abandonne.

Courage les gars ! (Et en attendant y'a les recherches auto sur l appli le boncoin, c est moins bien mais c est deja ca)

@con6767
Copy link

con6767 commented Sep 9, 2018

Hourra, ca remarche

@con6767
Copy link

con6767 commented Sep 10, 2018

ah ben ca na remarcher qu'une fois

@squalatak
Copy link

pareil ca a remarcher hier soir pis ce matin...black out..

@berniebernie
Copy link

Peut etre une piste mais quand je teste avec un rendu headless de chrome comme: https://github.com/GoogleChrome/rendertron Datadome me demande un captcha 2 fois et semble me whitelister ensuite.

C'etait bien pendant que ca marchait
Je compte pas sur leboncoin pour une alternative aussi efficace. Les alertes sur l'appli sont merdiques et 400% pub.

@lesmickeys
Copy link

Bonjour,
Je suppose qu'il n'est pas facile de trouver la solution mais peut-on espérer prochainement que les alertes refonctionnent ?
Quelle que soit la réponse merci pour le travail effectué depuis ces dernières années.

@francky06l
Copy link

francky06l commented Oct 11, 2018

J'ai une solution qui marche depuis 2 mois, mais sur mon propre script. C'est du Php/curl mais forcement transposable.

EDIT: Apres avoir vu le code js, je vois que c'est deja implemente ..

// Les headers (User-Agent can be anything .. I use Linux so ..)
    $headers = array('User-Agent: Mozilla/5.0 (X11; Linux x86_64…) Gecko/20100101 Firefox/60.0',
                     'Accept: */*',
                     'Accept-Encoding: gzip,deflate,br',
                     'Accept-Language: en-US');

La requete va retourner un contenu gzip (beaucoup plus rapide), On peut dire a Curl de "d gzip"

curl_setopt($Curl, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($Curl, CURLOPT_FOLLOWLOCATION, TRUE);
    curl_setopt($Curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($Curl, CURLOPT_ENCODING , "gzip");

Et enfin, ce qui est top dans cette version c'est le contenu en Json, il est entre 'FLUX_STATE = ' et le '</script>' suivant, voila la function que j'utilise pour l'extraire:

   function extractAdds($content)
    {
        static $startX = 'FLUX_STATE = ';
        $z = strpos($content, $startX);

        if($z === false)
        {
            echo  "Error startX not found\n";
            return false;
        }

        $end = strpos($content, '</script>', $z);

        if($end === false)
        {
            echo "Erro end not found\n";
            return false;
        }

        $data = substr($content, $z, ($end-$z));
        $data = substr($data, strlen($startX));
        return json_decode($data);
    }

Voila, j'espere avoir ete utile !!
F.

@lesmickeys
Copy link

Bonjour,
Super mais n'étant pas un as de l'informatique, comment faire concrètement pour obtenir la feuille d'alerte avec le bon script.
Bien cordialement.

@Roodypoo0123
Copy link

Bonjour,

Depuis quelque temps les requêtes automatisées semblent refonctionner mais le script actuel plante sur la nouvelle fonctionnalité de pub quand on arrive sur LBC depuis l'externe:

07/04/19 12:37 | alertesLeBonCoin | TypeError: Impossible de lire la propriété "ads" depuis undefined. (ligne 252, fichier "Code", projet "alertes_leboncoin") | time-based | 07/04/19 12:38
07/04/19 18:37 | alertesLeBonCoin | TypeError: Impossible de lire la propriété "ads" depuis undefined. (ligne 252, fichier "Code", projet "alertes_leboncoin") | time-based | 07/04/19 18:37
07/04/19 20:37 | alertesLeBonCoin | TypeError: Impossible de lire la propriété "ads" depuis undefined. (ligne 252, fichier "Code", projet "alertes_leboncoin") | time-based | 07/04/19 20:37

Est-ce qu'un fix pourrait être mis en place facilement ?

Le service AlertesLeBonCoin reste incomparablement meilleurs que le built-in LBC. (refresh 24h, résultats non cliquables en fonction du browser, pas de groupes etc...).

Merci,

@jfallot
Copy link

jfallot commented Apr 9, 2019 via email

@bbinet
Copy link

bbinet commented May 28, 2019

It seems RSS-Bridge have found a way to workaround datadome:
RSS-Bridge/rss-bridge#789 (comment)
RSS-Bridge/rss-bridge#795

@francky06l
Copy link

Ca marche toujours pour moi en utilisant ce script. Je ne fais pas des centaines de requetes par jour, environ 20 seulement
F.

` // Url contains the search
$url = 'https://www.leboncoin.fr/recherche/?category=2&locations=d_4&model=2cv&brand=Citroen&regdate=min-1960';

$Curl = curl_init();
$headers = array(
                 'Host: www.leboncoin.fr',
                 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0',
                 'Accept: text/html,application/xhtml+xm…plication/xml;q=0.9,*/*;q=0.8',
                 'Accept-Language: en-US,en;q=0.5',
                 'Accept-Encoding: gzip, deflate, br',
                 'Connection: keep-alive',
                 'Upgrade-Insecure-Requests: 1',
                 'Cache-Control: max-age=0',
                 );

curl_setopt($Curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($Curl, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($Curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($Curl, CURLOPT_ENCODING , 'gzip');
curl_setopt($Curl, CURLOPT_URL, $url);

$data = curl_exec($Curl);

if(!$data)
{
    echo "Error calling leboncoin\n";
    print_r(curl_getinfo($Curl));
    curl_close($Curl);
    exit(1);
}

$data = extractAdds($data);

if(!$data || @$data[4]->data->total < 1)
{
    $rcCode = curl_getinfo($Curl, CURLINFO_HTTP_CODE);
    if(!$data)
        echo "HTTP code {$rcCode} - Error extracting Json Data !!\n";
    else
        echo "HTTP code {$rcCode} - No add found\n";
    curl_close($Curl);
    // exit with 1 in case of http <> 200 (can be catch in bash)
    exit(($rcCode == 200 ? 0 : 1));
}

curl_close($Curl);

echo "We have {$data[4]->data->total} adds\n";

// loop over the adds -- Sample

foreach($data[4]->data->ads as &$add)
{
    print_r($add);
}

// Extract the adds

function extractAdds($content)
{
    static $startX = '__REDIAL_PROPS__ = ';
    $z = strpos($content, $startX);

    if($z === false)
    {
        echo  "Error __REDIAL_PROPS__ not found\n";
        return false;
    }

    $end = strpos($content, '</script>', $z);

    if($end === false)
    {
        echo "Error no </script> found\n";
        return false;
    }

    $data = substr($content, $z, ($end-$z));
    $data = substr($data, strlen($startX));
    return json_decode($data);
}

`

@mbakkali
Copy link

mbakkali commented Oct 3, 2019

Up up

@mightytyphoon

This comment has been minimized.

@lesmickeys

This comment has been minimized.

@joseluu

This comment has been minimized.

@mightytyphoon

This comment has been minimized.

@lesmickeys
Copy link

lesmickeys commented Mar 11, 2021 via email

@maximelebreton
Copy link
Owner

@mightytyphoon, nous sommes sur les issues d'un projet open source, pas sur un forum ou sur votre blog, merci de ne pas venir nous polluer avec votre pub, de surcroît aux antipodes des valeurs du libre

@lesmickeys
Copy link

lesmickeys commented Mar 11, 2021 via email

@Draky50110
Copy link

@lesmickeys faut apprendre à lire : le comm s'adressait à un autre utilisateur ;)

@lesmickeys
Copy link

lesmickeys commented Mar 11, 2021 via email

@maximelebreton
Copy link
Owner

maximelebreton commented Mar 11, 2021

@lesmickeys je m'adressais uniquement à mightytyphoon effectivement,
par contre je me suis permis de masquer votre réponse à son message publicitaire, de facto hors-sujet.

@cyprientertrais
Copy link

J'ai trouvé un moyen de contourner le problème

@jfallot
Copy link

jfallot commented Jun 9, 2021

@cyprientertrais, nous sommes bien sûr intéressés par connaitre les détails de ce moyen :)

@cyprientertrais
Copy link

Hello @jfallot j'ai créé une extension chrome qui permet de contourner datadome qui se lance directement depuis leboncoin.fr

@pointpaul
Copy link

bonjour,

j'ai un système stable qui premet de scraper leboncoin (je récuppère depuis quelques semaines 100% des nouvelles annonces + numéros de téléphone du site). Contactez moi si vosu en avez besoin !

@lesmickeys
Copy link

lesmickeys commented Aug 15, 2021 via email

@brunetton
Copy link

@pointpaul est ce que c'est une solution basée sur Puppeteer ou équivalent ?

@Gabsht
Copy link

Gabsht commented Jan 2, 2022

bonjour,

j'ai un système stable qui premet de scraper leboncoin (je récuppère depuis quelques semaines 100% des nouvelles annonces + numéros de téléphone du site). Contactez moi si vosu en avez besoin !

@pointpaul Effectivement votre système serait la bienvenue , pouvez vous nous en dire plus ?

Cordialement

@Julius76230
Copy link

@pointpaul Bonjour, et bien ma foi, au même titre que les autres, j'aurais apprécié que vous nous fassiez part de vos découvertes. Vous arrive-t-il toujours de passer voir cette discussion ?

Merci d'avance

@pointpaul
Copy link

Bonjour, si certains sont devs et veulent tester ma solution, envoyez moi un message. Contact dans ma bio. Idéalement je cherche quelqu'un pour relancer un service de notifications pour lbc.

@brunetton
Copy link

brunetton commented Feb 27, 2022

Bonjour, si certains sont devs et veulent tester ma solution, envoyez moi un message. Contact dans ma bio. Idéalement je cherche quelqu'un pour relancer un service de notifications pour lbc.

J'ai essayé de vous contacter par discord il y a plusieurs mois, sans succès. Mais je viens de voir que vous avez ajouté une adresse mail, je vous contacte !

@pointpaul
Copy link

Mes DMs sont souvent spammés (j'ai plusieurs services qui tournent sur discord), j'ai du passer a côté du message. Renvoyez moi un DM ou un mail !

@jfarcy28
Copy link

jfarcy28 commented Mar 6, 2022

Mes DMs sont souvent spammés (j'ai plusieurs services qui tournent sur discord), j'ai du passer a côté du message. Renvoyez moi un DM ou un mail !

Votre solution m'intéresse, je viens de vous contacter par le biais de Discord (Ju28), je ne trouve pas votre mail.

@Talonkarrde89
Copy link

Bonjour @maximelebreton, avez vous pu faire des progrès sur ces alertes ?

Bonjour @francky06l, question peut être idiote, mais comment tester votre script ?

Merci d'avance

@francky06l
Copy link

Pour tester (ce script est deja 'vieux' pas sur qu'il marche encore, je n'ai pas teste depuis 2 ans), il faut installer PHP, mettre ce script dans un fichier puis lancer >php nomdefichier.php.
Si vous utilisez windows, il faut utiliser cette commande dans une console (tapez 'cmd' dans le menu pour trouver l'application cmd). Je suis sur Linux, pas tres doue en windows.

@asabust88
Copy link

@francky06l @pointpaul Je ne sais pas comment vous envoyer des DM pour discuter de cela avec vous ... Ou par un autre moyen ? Discord, WhatsApp ...?
Belle journée à vous !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests