Php CURL : se connecter à Leboncoin

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par sff, 22 Août 2018.

  1. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    535
    J'aime reçus:
    0
    Bonjour,

    je souhaite récupérer le code html du site Leboncoin afin de le traiter et récuperer ce qui m'interesse.

    Le problème c'est que je n'arrive meme pas à me connecter à Leboncoin. Ce me marque "You have been blocker". J'ai utilisé l'user agent de Google mais cela ne change rien. Avez-vous une astuce ? Merci d'avance

    Voici le code :

    PHP:
    <?php

    $url 
    'https://www.leboncoin.fr';
    $timeout 10;

    $ch curl_init($url);

    curl_setopt($chCURLOPT_FRESH_CONNECTtrue);
    curl_setopt($chCURLOPT_TIMEOUT$timeout);
    curl_setopt($chCURLOPT_CONNECTTIMEOUT$timeout);

    if (
    preg_match('`^https://`i'$url))
    {
    curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
    curl_setopt($chCURLOPT_SSL_VERIFYHOST0);
    }

    curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue);
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue);

    // Définition du header "User-Agent:"
    // Simulation d'un Firefox 3.6.13
    curl_setopt($chCURLOPT_USERAGENT'Googlebot/2.1 (+http://www.google.com/bot.html)');

    $page_content curl_exec($ch);

    curl_close($ch);

    echo 
    $page_content;

    ?>
     
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 176
    J'aime reçus:
    327
    Teste avec wget ou file_get_contents pour voir si c'est ton IP qui est bloquée.
     
  3. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    535
    J'aime reçus:
    0
    Avec cela ca me donne :


    ( ! ) Warning: file_get_contents(https://www.leboncoin.fr): failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in C:\UwAmp\www\test.php on line 4
     
  4. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    535
    J'aime reçus:
    0
    Tu as une idée Spout ? car la je sais pas comment faire
     
  5. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 176
    J'aime reçus:
    327
    Fait encore un essai en changeant le UA de file_get_contents: https://stackoverflow.com/questions/2107759/php-file-get-contents-and-setting-request-headers
    Ne met pas le UA de Google bot mais par exemple Chrome:
    Code:
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
    Si ça marche pas c'est ton IP bloquée ou autre astuce pour empêcher le scrap. Il faut tester en changeant d'IP avec un Proxy/VPN.

    Edit: je viens de tester avec requests (Python):
    Code:
    <!--
    Need permission to access data? Contact: DataAccess@datadome.co
    -->
    <html><head><title>You have been blocked</title><style>#cmsg{animation: A 1.5s;}@keyframes A{0%{opacity:0;}99%{opacity:0;}100%{opacity:1;}}</style></head><body style="margin:0"><p id="cmsg">Please enable JS and disable any ad blocker</p><script>var dd={'cid':'AHrlqAAAAAMAnSrqgIgbLNwAo6wcEw==','hsh':'05B30BD9055986BD2EE8F5A199D973'}</script><script src="https://ct.datadome.co/c.js"></script></body></html>
    Ils utilisent https://datadome.co/ comme protection.
    Apparemment la protection en JS, donc il faut utiliser Puppeteer / Proxy / VPN ou un plugin / bookmarklet pour ton browser.
     
    #5 spout, 22 Août 2018
    Dernière édition: 22 Août 2018
  6. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    535
    J'aime reçus:
    0
    Le VPN est obligatoire ou un proxy fera l'affaire ?
     
  7. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 176
    J'aime reçus:
    327
    Le proxy devrait aller, s'il n'est pas détecté aussi.
     
  8. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 176
    J'aime reçus:
    327
    Même avec Puppeteer ça marche pas (enfin il faut creuser plus) :

    [​IMG]
     
  9. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    535
    J'aime reçus:
    0
    PhantomJS ne serait pas mieux ?
     
  10. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 176
    J'aime reçus:
    327
  11. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    535
    J'aime reçus:
    0
  12. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    535
    J'aime reçus:
    0
    Puppeteer est en mesure de cliquer sur des élements il me semble. Pourquoi ne pas positionner la souris sur la checkbox du Captcha et ensuite cliquer dessus ? Ca te semble viable comme solution Spout ?
     
  13. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 176
    J'aime reçus:
    327
    Oui, il faut tester.
     
  14. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    535
    J'aime reçus:
    0
    Peut-on récupérer le code html d'une page avec Puppeteer ?
     
  15. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 176
    J'aime reçus:
    327
  16. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    535
    J'aime reçus:
    0
    Je suis en train de tenter d'installer Puppeteer sous Ubuntu 16.04 mais j'ai une erreur d'installation que je n'arrive pas à régler :


    npm WARN saveError ENOENT: no such file or directory, open '/root/puppeteertest/package.json'
    npm notice created a lockfile as package-lock.json. You should commit this file.
    npm WARN enoent ENOENT: no such file or directory, open '/root/puppeteertest/package.json'
    npm WARN puppeteertest No description
    npm WARN puppeteertest No repository field.
    npm WARN puppeteertest No README data
    npm WARN puppeteertest No license field.

    Merci d'avance de votre aide
     
  17. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 176
    J'aime reçus:
    327
    Code:
    npm init
    pour créer le package.json
     
  18. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    535
    J'aime reçus:
    0
    merci beaucoup
     
  19. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    535
    J'aime reçus:
    0
    Encore un problème visiblement :

    (node:4711) UnhandledPromiseRejectionWarning: Error: Failed to launch chrome!
    [0909/181224.284711:ERROR:zygote_host_impl_linux.cc(89)] Running as root without --no-sandbox is not supported. See http s://crbug.com/638180.


    TROUBLESHOOTING: https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md

    at onClose (/root/puppeteertest/node_modules/puppeteer/lib/Launcher.js:333:14)
    at Interface.helper.addEventListener (/root/puppeteertest/node_modules/puppeteer/lib/Launcher.js:322:50)
    at emitNone (events.js:111:20)
    at Interface.emit (events.js:208:7)
    at Interface.close (readline.js:368:8)
    at Socket.onend (readline.js:147:10)
    at emitNone (events.js:111:20)
    at Socket.emit (events.js:208:7)
    at endReadableNT (_stream_readable.js:1064:12)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    (node:4711) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing insi de of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
    (node:4711) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
     
  20. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    535
    J'aime reçus:
    0
    La solution :

    remplacer

    const browser = await puppeteer.launch()

    par

    const browser = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox']})
     
  21. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    535
    J'aime reçus:
    0
    En utilisant toujours Puppeteer, comment puis-je écrire du texte dans un input sans en connaitre son nom ?

    J'ai cliqué avec la souris dessus, mais je ne sais pas comment le remplir. Etant donné que Leboncoin utilise une frame pour ce formulaire on ne connait pas les détails du code source.

    HTML:
    <iframe src="https://c.datadome.co/captcha/?initialCid=AHrlqAAAAAMAgCgqN8wsYEUAuQ0mEg%3D%3D&amp;hash=05B30BD9055986BD2EE8F5A199D973&amp;cid=xPWRn2aSDhK55qhYzwh8N1HGFa1PpS_8R4PHCQifd_" width="100%" height="100%" style="height:10      0vh;" frameborder="0" border="0" scrolling="yes"></iframe>
    
    Merci d'avance
     
  22. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    535
    J'aime reçus:
    0
    Avec un peu de recherche :

    page.keyboard.type('mon texte')
     
Chargement...
Similar Threads - Php CURL connecter Forum Date
Problème de modication du code html d'un site en CURL et DOM PHP Développement d'un site Web ou d'une appli mobile 11 Avril 2014
Actualiser un script php toutes les 10 secondes Développement d'un site Web ou d'une appli mobile 6 Septembre 2021
PHP : problème de comparaison égalité dans boucle FOR avec incrément décimal de 0.1 Développement d'un site Web ou d'une appli mobile 26 Août 2021
Cache Etag nginx et PHP ? Administration d'un site Web 7 Août 2021
Fichier avec ou sans extension php pour le référencement Crawl et indexation Google, sitemaps 3 Août 2021
mon code ne fonctionne pas pour masquer les .php URL Rewriting et .htaccess 31 Juillet 2021
Malware S.Susp.PHP.gen... Administration d'un site Web 15 Juillet 2021
La fonction mail (PHP) ne passe pas ! Demandes d'avis et de conseils sur vos sites 28 Juin 2021
Fonction récursive PHP. Développement d'un site Web ou d'une appli mobile 24 Avril 2021
Redirections .htm en .php URL Rewriting et .htaccess 16 Mars 2021