IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

CURL Chercher et Clicker


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 89
    Points : 85
    Points
    85
    Par défaut CURL Chercher et Clicker
    Bonjour les gars ,

    je travailles sur un script qui fais des rendez vous auto ,

    j au réuissi a me connecter sur mon compte voila le code source

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    <?php
     
        $ch = curl_init();
     
     
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_URL, 'https://example.com/login/login.php');
        curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
        curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
     
     
        $co = curl_exec($ch);
     
     
    $doc = new DOMDocument();
    libxml_use_internal_errors(true);
    $doc->loadHTML($co);
    # Parse the HTML
    # The @ before the method call suppresses any warnings that
    # loadHTML might throw because of invalid HTML in the page.
    $xpath = new DOMXPath($doc);
     
    $val1 = $xpath->query('//input[@name="_sid"]/@value')->item(0)->nodeValue;
     
     
    echo $val1;
     
     
          $field['process'] = 'login';
        $field['_sid'] = $val1;
        $field['email'] = 'email@email.com';
        $field['pwd'] = '123456';
     
        $datafield = http_build_query($field);
     
    	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    	curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
        curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $datafield);
    	curl_setopt($ch, CURLOPT_VERBOSE, true);
     
    	curl_exec($ch);
     
    	curl_setopt($ch, CURLOPT_URL, 'https://example.com/login/myapp.php?id=5454654');
    	$cur = curl_exec($ch);
     
    	echo $cur;
     
     
        curl_close($ch);
     
     
    ?>

    maintenant je dois Chercher sur le calendrier si il ya des dates en Bleu , donc il clique sur la date apres il clique sur le pop up pour confirmer .

    Voila le calendrier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <li class="overable initialised">2018-09-14 <a class="full" type="button">08<i>:30</i></a> <a class="full" type="button">08<i>:45</i></a> <a class="full" type="button">09<i>:00</i></a> <a class="full" type="button">09<i>:15</i></a> <a class="full" type="button">09<i>:30</i></a> <a class="full" type="button">09<i>:45</i></a> <a class="full" type="button">10<i>:00</i></a> <a class="full" type="button">10<i>:15</i></a> <a class="full" type="button">10<i>:30</i></a> <a class="full" type="button">10<i>:45</i></a> <a class="full" type="button">11<i>:00</i></a> <a class="full" type="button">11<i>:15</i></a> <a class="full" type="button">11<i>:30</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.5094&amp;skey=90f7a8877d1accee20e413dd209ea029&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-14+11%3A45&amp;issuer_view=tnTUN2fr&quot;)">11<i>:45</i></a> <a class="full" type="button">12<i>:00</i></a> <a class="full" type="button">12<i>:15</i></a> <a class="full" type="button">12<i>:30</i></a> <a class="full" type="button">13<i>:00</i></a> <a class="full" type="button">13<i>:15</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.5096&amp;skey=3ab72b245127e591ba1d0db8afd08fb1&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-14+13%3A30&amp;issuer_view=tnTUN2fr&quot;)">13<i>:30</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.5098&amp;skey=dcd416fa984f755cf9e55e503942220d&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-14+13%3A45&amp;issuer_view=tnTUN2fr&quot;)">13<i>:45</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.51&amp;skey=8f41ad6700c58d4308fb836cc474c6f1&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-14+14%3A00&amp;issuer_view=tnTUN2fr&quot;)">14<i>:00</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.5102&amp;skey=9ff4540d8cdf1fc8f0b22e9786d059dd&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-14+14%3A15&amp;issuer_view=tnTUN2fr&quot;)">14<i>:15</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.5104&amp;skey=3e58332ea1a132cbe2e00a17017ba5d8&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-14+14%3A30&amp;issuer_view=tnTUN2fr&quot;)">14<i>:30</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.5106&amp;skey=c02c797479820694f40edd05dbc98a99&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-14+14%3A45&amp;issuer_view=tnTUN2fr&quot;)">14<i>:45</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.5108&amp;skey=d6d652cbcde371221550cd466d227259&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-14+15%3A00&amp;issuer_view=tnTUN2fr&quot;)">15<i>:00</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.511&amp;skey=02670bb010e3f9503dcd3df6a5f914a6&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-14+15%3A15&amp;issuer_view=tnTUN2fr&quot;)">15<i>:15</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.5112&amp;skey=b9fd49cfe1dee68f84cad7b941358cb8&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-14+15%3A30&amp;issuer_view=tnTUN2fr&quot;)">15<i>:30</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.5114&amp;skey=c98b90cd33f13068217484b7af669a8e&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-14+15%3A45&amp;issuer_view=tnTUN2fr&quot;)">15<i>:45</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.5116&amp;skey=8c38d3c3353d46958f09734ed1306820&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-14+16%3A00&amp;issuer_view=tnTUN2fr&quot;)">16<i>:00</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.5118&amp;skey=3e6ecdf78f138930b7dd286cb852aade&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-14+16%3A15&amp;issuer_view=tnTUN2fr&quot;)">16<i>:15</i></a></li>
     
    <li class="overable initialised">2018-09-18 <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.5155&amp;skey=c51070edf5580d9f244ee811ab3890d8&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-18+08%3A30&amp;issuer_view=tnTUN2fr&quot;)">08<i>:30</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.5157&amp;skey=4e6280594e0bbc1fd7ebd3846b00a402&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-18+08%3A45&amp;issuer_view=tnTUN2fr&quot;)">08<i>:45</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.5159&amp;skey=a3ac286f660419bde0d5497dff870d08&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-18+09%3A00&amp;issuer_view=tnTUN2fr&quot;)">09<i>:00</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.5161&amp;skey=3a98013195270239840c2b7c96d8bddb&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-18+09%3A15&amp;issuer_view=tnTUN2fr&quot;)">09<i>:15</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.5163&amp;skey=0a69e8bd3f14934ebdfad2a79cda6279&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-18+09%3A30&amp;issuer_view=tnTUN2fr&quot;)">09<i>:30</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.5165&amp;skey=28279f7d5eb41876ce5922614ece5102&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-18+09%3A45&amp;issuer_view=tnTUN2fr&quot;)">09<i>:45</i></a> <a class="full" type="button">10<i>:00</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.5167&amp;skey=582949472d848939abd3f5daf70a842d&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-18+10%3A15&amp;issuer_view=tnTUN2fr&quot;)">10<i>:15</i></a> <a class="full" type="button">10<i>:30</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.5169&amp;skey=1be74ff440de3dc2cf4f98e9efcb0ccb&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-18+10%3A45&amp;issuer_view=tnTUN2fr&quot;)">10<i>:45</i></a> <a class="full" type="button">11<i>:00</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.5171&amp;skey=b06010a23ef395fc075c82a993efe1b3&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-18+11%3A15&amp;issuer_view=tnTUN2fr&quot;)">11<i>:15</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.5177&amp;skey=0def1fdbf4418d89f83298cfc0ee9df6&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-18+11%3A30&amp;issuer_view=tnTUN2fr&quot;)">11<i>:30</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.5179&amp;skey=51fed4a1251f1303a42290a40ee8557e&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-18+11%3A45&amp;issuer_view=tnTUN2fr&quot;)">11<i>:45</i></a> <a class="full" type="button">12<i>:00</i></a> <a class="full" type="button">12<i>:15</i></a> <a class="full" type="button">12<i>:30</i></a> <a class="full" type="button">13<i>:00</i></a> <a class="full" type="button">13<i>:15</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.5261&amp;skey=38c8c666a7a99fb377f9a9900cf364ea&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-18+13%3A30&amp;issuer_view=tnTUN2fr&quot;)">13<i>:30</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.5264&amp;skey=a61e09630ac8d07c8a607247040dddbb&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-18+13%3A45&amp;issuer_view=tnTUN2fr&quot;)">13<i>:45</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.5266&amp;skey=2e5974636a956622307e66b8f6fec1d0&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-18+14%3A00&amp;issuer_view=tnTUN2fr&quot;)">14<i>:00</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.5268&amp;skey=54ff29d71e741144e1c0632356a9bd1c&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-18+14%3A15&amp;issuer_view=tnTUN2fr&quot;)">14<i>:15</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.527&amp;skey=70063d5fa468aa1e9af47c746272df2c&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-18+14%3A30&amp;issuer_view=tnTUN2fr&quot;)">14<i>:30</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.5272&amp;skey=8c425a67c30e2957611ae4858c13ec0c&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-18+14%3A45&amp;issuer_view=tnTUN2fr&quot;)">14<i>:45</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.5274&amp;skey=f8b1cdf0380893303be540f59b3917d5&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-18+15%3A00&amp;issuer_view=tnTUN2fr&quot;)">15<i>:00</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.5277&amp;skey=9f7b53570b0f7a61dcbde5350367592e&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-18+15%3A15&amp;issuer_view=tnTUN2fr&quot;)">15<i>:15</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.5278&amp;skey=18f3e5bd117c355f5d18048d88d439b1&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-18+15%3A30&amp;issuer_view=tnTUN2fr&quot;)">15<i>:30</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.528&amp;skey=5855f68730c4cbeb603bfe4598d3d770&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-18+15%3A45&amp;issuer_view=tnTUN2fr&quot;)">15<i>:45</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.5282&amp;skey=374a164f1359d5f421f5811a9d7b9e54&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-18+16%3A00&amp;issuer_view=tnTUN2fr&quot;)">16<i>:00</i></a> <a class="dispo" type="button" href="javascript:void(0)" onclick="ajaxCall(&quot;ajax_form_status&quot;, &quot;https://example.com/login/action.php?timestamp=1536452615.5285&amp;skey=f7f7bfabe5c772e74dd94d69a9a9de6e&amp;process=multiconfirm&amp;what=take_appointment&amp;fg_id=5274725&amp;result=2018-09-18+16%3A15&amp;issuer_view=tnTUN2fr&quot;)">16<i>:15</i></a></li>
    Merci de m orienter les Gars

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Les notions de "bleu", de "click" , de "popup" n'existent pas avec Curl.
    La seule chose qu'il connait et sais faire ce sont des requêtes (http dans ton cas). Il faut donc que tu réalise manuellement les actions que tu souhaites et que tu regarde quelles sont les requêtes envoyée pour pouvoir les rejouer et les analyser.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 89
    Points : 85
    Points
    85
    Par défaut
    Merciii , vous voules dire que je dois prendre a chaque fois "bleu", de "click" , de "popup" comme variable et les rejouer commes des requetes HTTP , ??

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2015
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 75
    Points : 190
    Points
    190
    Par défaut
    Avec curl tu vas récupérer le code html de la page. Il faut que tu analyse ce code pour savoir à quoi correspond ce que tu nommes "bleu". Il y a de fortes chances que cela soit une class CSS qui définit la couleur de ta case bleue. Ensuite il faut simuler le click sur cette case bleue et déclencher les actions correspondantes.
    C'est loin d'être simple ce que tu cherches à faire surtout avec curl.
    Personnellement j'essayerais plutôt de faire ça en pilotant un navigateur en mode textuel avec un script https://fr.wikipedia.org/wiki/Liste_...teurs_textuels

  5. #5
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Bah déjà en regardant le code html on peut voir qu'il y a des balises a dont la classe est full et d'autres dont la classe est dispo, donc c'est pas nécessaire de s'embêter avec des couleurs, les créneaux disponibles sont clairement indiqués. À noter aussi, le fait que toutes les ancres munies de la classe dispo lorsque l'on clique dessus déclenchent la fonction javascript ajaxCall qui, comme son nom l'indique, procède à un appel ajax. Cette fonction prend deux paramètres. Le second est assez parlant vu qu'il s'agit d'une url vers un script PHP avec des paramètres GET, par exemple (en clair avec des indications probables):
    Code url : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    https://example.com/login/action.php?
    timestamp=1536452615.5106              & // 
    skey=c02c797479820694f40edd05dbc98a99  & // pour identifier la session
    process=multiconfirm                   & // manière dont la réservation est confirmée
    what=take_appointment                  & // type d'action qui doit probablement aiguiller vers le contrôleur adéquate
    fg_id=5274725                          & // identifiant de je ne sais quoi (fg)
    result=2018-09-14+14%3A45              & // date + créneau horaire
    issuer_view=tnTUN2fr

    Quant au premier paramètre qui est toujours ajax_form_status, vu son nom, il doit servir à transmettre à la fonction l'état du formulaire (peut être permet-il de savoir si on en est à choisir le créneau horaire ou à le confirmer.).

    Quoi qu'il en soit, tu dois trouver et analyser le code de la fonction javascript ajaxCall pour savoir exactement quels sont les appels à des scripts PHP (comme il y a confirmation, il y en a probablement au moins deux). Une fois que tu auras fait ce travail, il ne restera plus qu'à reproduire ces appels avec cURL dans le bon ordre.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 89
    Points : 85
    Points
    85
    Par défaut
    Merci , beaucoup vous m avez bien détaillé je suis entrain d'essayer de récupérer ces variables a l aide de DOM HTML

    j ai rajouté ce code a mon script .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    include 'simple_html_dom.php';
     
    	$html = new simple_html_dom();
    	$html->load($cur);
     
    echo $val2 = $html->find('a[class=dispo],0');  // echo juste pour tester si j ai bien récupéré la variable
    pouvez vous m aider a récupérer ces variables ?


    Merciii

  7. #7
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Je ne vois pas l'intérêt d'utiliser simple_html_dom alors que tu as commencé à écrire ton script en utilisant DOMDocument et DOMXPath qui font très bien l'affaire, exemples:
    Ensuite il est facile d'extraire le deuxième paramètre (l'URL) avec des manipulations de chaînes, puis d'extraire les paramètres GET avec parse_url() et parse_str().

    Maintenant ce qu'il faut retenir de mon précédent message est surtout de chercher dans le code de la page (ou dans un script externe) la fonction javascript ajaxCall pour voir exactement ce qu'elle fait et pour pouvoir ensuite reproduire le ou les appels à des scripts serveur avec cURL dans ton script.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  8. #8
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 89
    Points : 85
    Points
    85
    Par défaut
    Merciiiiiii , je vais essayer , je vous tiens au courant

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 89
    Points : 85
    Points
    85
    Par défaut
    Merciiiii Beacoup beacoup beacoup , j ai tous fais graçe a votre explication

    maintenant j ai eu les parametres il me reste qu a faire un POST DATA , mais je ne veux pas faire sa pas encore

    je vais vous expliquer autre chose que je veux faire.

    Voila le Code source

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    <?php
     
    	set_time_limit(0);// to infinity for example
     
        $ch = curl_init();
     
     
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_URL, 'https://example.com/login/login.php');
        curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
        curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
     
     
        $co = curl_exec($ch);     
     
     
    $doc = new DOMDocument();
    libxml_use_internal_errors(true);
    $doc->loadHTML($co);
    # Parse the HTML
    # The @ before the method call suppresses any warnings that
    # loadHTML might throw because of invalid HTML in the page.
    $xpath = new DOMXPath($doc);
     
    $val1 = $xpath->query('//input[@name="_sid"]/@value')->item(0)->nodeValue;
     
     
    echo $val1;    //just TEST  if i get _SID
     
     
     
     echo '<br/>';
     
          $field['process'] = 'login';
        $field['_sid'] = $val1;
        $field['email'] = 'email@email.com';
        $field['pwd'] = '123456';
     
        $datafield = http_build_query($field);
     
    	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    	curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
        curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $datafield);
    	curl_setopt($ch, CURLOPT_VERBOSE, true);
     
    	curl_exec($ch);
     
    	curl_setopt($ch, CURLOPT_URL, 'https://example.com/login/myapp.php?fg_id=5274725');
    	$cur = curl_exec($ch);
     
    $do = new DOMDocument();   // New  dom Doc to Get URL from  disponible dates
    libxml_use_internal_errors(true);
    $do->loadHTML($cur);
    # Parse the HTML
    # The @ before the method call suppresses any warnings that
    # loadHTML might throw because of invalid HTML in the page.
    $xpath = new DOMXPath($do);
     
    $firstFreeSlotOnClickAttr = $xpath->evaluate('string(//a[@class="dispo"][1]/@onclick)'); //array contains URL 
     
    echo $firstFreeSlotOnClickAttr;  // Just Test if i get the variable
     
    echo '<br/>';
    preg_match_all('#\bhttps?://[^,\s()<>]+(?:\([\w\d]+\)|([^,[:punct:]\s]|/))#', $firstFreeSlotOnClickAttr, $match);  //Get URL from the last array
       echo "<pre>";
       $url = $match[0];
    print_r($url[0]); 
     
    echo'<br/>';
    parse_str( parse_url( $url[0], PHP_URL_QUERY), $array );   // GET parametres from the URL
     
    print_r( $array );  //Just test if i get the varible
    	echo $cur;
     
     
        curl_close($ch);
     
     
    ?>
    maintenant je veux choisir une date RANDOM parceque il ya plusieur , jai réuissi a avoir le lien de la premiere date et premiers Horaire grace a ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $do = new DOMDocument();   // New  dom Doc to Get URL from  disponible dates
    libxml_use_internal_errors(true);
    $do->loadHTML($cur);
    # Parse the HTML
    # The @ before the method call suppresses any warnings that
    # loadHTML might throw because of invalid HTML in the page.
    $xpath = new DOMXPath($do);
     
    $firstFreeSlotOnClickAttr = $xpath->evaluate('string(//a[@class="dispo"][1]/@onclick)'); //array contains URL 
     
    echo $firstFreeSlotOnClickAttr;  // Just Test if i get the variable
    mais ce que je veux faire c'est un foreach pour avoir tous les liens de tous les dates dans un tableau

    apres choisir un lien RANDOM (5 eme date 10 eme 11 eme ) , c'est pour ne pas toujour choisir la premier heur et le premier heur .

    et je veux faire une conditions tant que le RDV n'est pas pris le script continue a refresher chaque 1 minutes .

    Merci j attend votre oriontation .

  10. #10
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    La première expression XPath de mon post précédent renvoie l'ensemble des attributs onclick dont le créneau est libre. Fait un var_dump du résultat pour savoir quelle est sa nature et tu verras qu'il s'agit d'une instance de la classe DOMNodeList. Tout stocker dans un tableau est inutile.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  11. #11
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 89
    Points : 85
    Points
    85
    Par défaut
    oui c'est vrai , don j ai du utilisé ce code pour afiché domnodelist object .

    je dois prendre un lien Random voila pourquoi je cherche a lister tous liens des créneau disponible .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $do = new DOMDocument();   // New  dom Doc to Get URL from  disponible dates
    libxml_use_internal_errors(true);
    $do->loadHTML($cur);
    # Parse the HTML
    # The @ before the method call suppresses any warnings that
    # loadHTML might throw because of invalid HTML in the page.
    $xpath = new DOMXPath($do);
    $onClickAttrNodeList = $xpath->query('//a[@class="dispo"]/@onclick'); //array contains URL 
    $temp_dom = new DOMDocument();
    foreach($onClickAttrNodeList as $n) {$temp_dom->appendChild($temp_dom->importNode($n,true));}
    print_r($temp_dom->saveHTML());
    merci beacoup j' attend votre reponse.

  12. #12
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Tu t'égares. Il ne faut pas tout attendre des réponses/aides qu'on peut te donner sur les forums. Tes meilleurs alliés sont la recherche et le manuel PHP. Pose-toi des questions, notamment celles là: Quel type d'objet renvoie DOMXPath::query, quelles sont les attributs et les méthodes de cette objet, comment je peux les utiliser pour arriver à mon but? Ce ne sont pas des questions difficiles, te les poser et y répondre te fera progresser.
    Le copier/coller ne mène à rien. On peut trouver des portions de code sur le web qui débloquent la situation quand on butte sur quelque chose; des fois en les voyants on s'étonne de ne pas y avoir penser tout seul, des fois on comprend vaguement l'idée et des fois on comprend rien du tout; et si dans ces deux derniers cas, on ne produit pas l'effort pour parfaitement comprendre ce qui se passe en examinant le bout de code, en recherchant et en consultant le manuel, on ne peut pas progresser.
    J'ai l'impression que tu t'es attelé à une tâche difficile pour la maîtrise que tu as. cURL et le DOM ne sont pas des choses simples, ce sont des gros morceaux et il faut du temps ne serait ce que pour acquérir les bases et ne plus être complètement perdu. D'où l'intérêt de s'entraîner en suivant des tutoriels et en se faisant des petits projets juste pour fixer les choses.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  13. #13
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 89
    Points : 85
    Points
    85
    Par défaut
    Merci jai réussi a faire print R l'objet Domnodelist

    voila le code que j ai utilisé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $xpath = new DOMXPath($do);
    $onClickAttrNodeList = $xpath->query('//a[@class="dispo"]/@onclick'); //array contains URL 
     
     
    $array = array();
    foreach($onClickAttrNodeList as $node){
        $array[] = $node;
    }
    print_r($array);
    il me reste a choisir un DomAtrri Random et faire les meme étape parse_url et parse str et POST data

    Merci beacoup beacoup beacoup , vraiment j ai progrésser avec votre explication .

  14. #14
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 89
    Points : 85
    Points
    85
    Par défaut
    c'est Bon , merci Beacoup j ai tous trouvé

    je vous remercie infiniment

    Voila le code que jai fais pour avoir a chaque fois un link du Crénau Random

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    	$do = new DOMDocument();   // New  dom Doc to Get URL from  disponible dates
    libxml_use_internal_errors(true);
    $do->loadHTML($cur);
    # Parse the HTML
    # The @ before the method call suppresses any warnings that
    # loadHTML might throw because of invalid HTML in the page.
    $xpath = new DOMXPath($do);
    $onClickAttrNodeList = $xpath->query('//a[@class="dispo"]/@onclick'); //array contains URL 
     
    $array = array();         // CONVERT NODE LIST  OBJECT TO ARRAY
    foreach($onClickAttrNodeList as $node){
        $array[] = $node;
    }
     
     
    $x=array();
       foreach($array as $node) {
    	   for($i = 0; $i < 10; ++$i) {
         $x[] = $node->nodeValue;  //PARSE ALL LINK AS TABLE
    }
     
    }
    $randlink = array_rand($x, 2);
    $link = $x[$randlink[0]];
     
     
     
    echo '<br/>';
    preg_match_all('#\bhttps?://[^,\s()<>]+(?:\([\w\d]+\)|([^,[:punct:]\s]|/))#', $link, $match);  //Get URL from the last array
       echo "<pre>";
       $url = $match[0];
    print_r($url[0]);
    il me reste qu'a faire POST DATA , je vous poserais d autre question apropos de session , refresh , IP rotate

  15. #15
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2013
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Bonjour

    mais comment faire POST Data?

    Merci

  16. #16
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 89
    Points : 85
    Points
    85
    Par défaut
    il faut mettre les parametres reçu par le lien ONCLICK dans ARRAY puis , essayer de poster

    j ai pas encore essayer je suis pas libre

  17. #17
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2013
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Bjr hocineaminoo,

    tu sais...
    ce que j'aime en toi...
    T'a le sens du partage.
    Un égoïste il va jamais apprendre et s'il apprend il va jamais progresser.
    Franchement tout ce que tu cherché en langage PHP je l'ai en (Javascript) [RDV...etc]
    Je vais bientôt faire un programme en (VB) qui va te faciliter toute les taches y compris (reCAPTCHA)
    et on va s'entraider.

    Merci beaucoup hocineaminoo !


    Citation:

    Ce qui m'effraie, ce n'est pas l'oppression des méchants ; c'est l'indifférence des bons.

    Martin Luther King

  18. #18
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 89
    Points : 85
    Points
    85
    Par défaut
    oui , pas de soucis contactez moi sur privé Merci .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.4] Chercher la version fr d'un site avec cURL
    Par yule dans le forum Langage
    Réponses: 0
    Dernier message: 09/08/2014, 03h17
  2. Chercher le package contenant la librairie...
    Par GLDavid dans le forum Debian
    Réponses: 6
    Dernier message: 27/07/2004, 17h37
  3. chercher des données dans sa propre requete...
    Par shadowbob dans le forum Requêtes
    Réponses: 4
    Dernier message: 27/06/2004, 17h13
  4. chercher l'index maxi d'une table
    Par picoti2 dans le forum Bases de données
    Réponses: 13
    Dernier message: 22/03/2004, 08h07
  5. [VB6]Chercher l'adresse IP
    Par Shea13 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 19/02/2004, 17h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo