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

AJAX Discussion :

[AJAX] Extraction de pages web.


Sujet :

AJAX

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 49
    Points : 39
    Points
    39
    Par défaut [AJAX] Extraction de pages web.
    Bonjour,

    Je souhaite extraire des données personnelles d'un site web (http://www.pmu.fr/ pour être plus précis) où il faut s'identifier pour se connecter et j'ai déjà réussi à le faire pour d'autres sites.

    Pour ce faire, j'ai créé une application écrite en java et utilisé firebug pour trouver sans succès les requêtes qui correspondent à la page d'où je souhaite extraire mes données.

    Quand j'appuie sur un bouton, l'adresse sur la barre d'adresse ne change pas. J'ai donc copié un lien, le même pour toute une série de boutons qui correspondent pourtant à différentes requêtes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    https://www.parier.pmu.fr/c/portal/layout?p_l_id=PRI.101126.3&p_p_id=gestionComptePortlet_WAR_iv4Portlets&p_p_action=0&_gestionComptePortlet_WAR_iv4Portlets_struts_action=%2FgestionComptePortlet%2FindexMvt#
    En examinant le code source du bouton en question, je vois dans la balise <a href></a> l'appel à une fonction submitAjaxParam où les deux derniers paramètres (ref et date) changent d'un bouton à l'autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <a href="#" title="JEU FEU  16/07 I " onclick="modifieStyleLigneMouvement('0'); ns_onclick('https://fr.sitestat.com/pmu/pmu-fr/s?',this,'','fr.clic.mon_pmu.mon_compte.mouvements.tous.detail','clickin'); submitAjaxParam('https://www.parier.pmu.fr/c/portal/layout?p_l_id=PRI.101126.3&amp;p_p_id=detailJeuPortlet_WAR_iv4Portlets&amp;p_p_action=0&amp;p_p_state=exclusive&amp;p_p_mode=view&amp;p_p_col_id=&amp;p_p_col_pos=0&amp;p_p_col_count=0&amp;_detailJeuPortlet_WAR_iv4Portlets_struts_action=%2FdetailJeuPortlet%2FdetailJeu', 'p_p_id_detailJeuPortlet_WAR_iv4Portlets_', '&amp;date=20110716&amp;ref=$504416972000171501');">
     
    JEU FEU  16/07 I  
      </a>
    Et cette fonction (?) submitAjaxParam, je ne l'ai trouvée nulle part ailleurs dans le code source et je ne sais plus comment faire car mon application java me renvoie (à partir de l'adresse afficher sur la barre d'adresse) un autre code source que ce que je peux faire afficher manuellement.

    Etant un vrai profane en matière d'Ajax, pourriez-vous me dire en gros ce qu'il faut faire pour ce genre d'opération de façon à ce que je puisse formuler le lien adéquat pour capter le flux avec mon application java (comme je l'ai fait avec succès pour d'autres sites comme je l'ai dit plus haut).

    Merci

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 139
    Points : 171
    Points
    171
    Par défaut
    La fonction submitAjaxParam() se trouve dans le fichier JS inclus dans la page.
    L'Ajax n'est qu'une soumission de données vers un script serveur, si tu appelles le script avec les paramètres selon le protocole voulu (POST ou GET), tu auras ta réponse.
    Bon courage pour faire du remonter le cheminement du code et trouver les bons paramètres et tout ...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 49
    Points : 39
    Points
    39
    Par défaut
    Citation Envoyé par bewidia Voir le message
    [...] si tu appelles le script avec les paramètres selon le protocole voulu (POST ou GET), tu auras ta réponse....
    Eh oui justement, c'est tout le problème parce que j'ai parcouru le code de la page ligne après ligne mais je n'y suis pas arrivé. Je me doute un peu que ce n'est pas ce qu'il faut faire mais comment autrement ???

    Merci pour ta réponse bewidia.

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par lazare
    Je souhaite extraire des données personnelles d'un site web (http://www.pmu.fr/ pour être plus précis)
    Et bien entendu, j'imagine qu'ils t'ont autorisé à le faire...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 49
    Points : 39
    Points
    39
    Par défaut
    Mais ça n'a rien d'un piratage, c'est juste pour récupérer le flux de ce qui peut être affiché manuellement après identification (mot de passe et login)

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 49
    Points : 39
    Points
    39
    Par défaut
    Voila ce que j'ai trouvé sur le net, ça me donne une vague idée du problème mais ça ne m'avance pas beaucoup
    If the DOM is being modified by javascript through ajax calls, and this modified data is what you are trying to capture then using a standard .NET WebClient won't work. You need to use a WebBrowser control so that it will actually execute the script, otherwise you will just be downloading the source.

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par lazare Voir le message
    Mais ça n'a rien d'un piratage, c'est juste pour récupérer le flux de ce qui peut être affiché manuellement après identification (mot de passe et login)
    Ben voyons...

    Si l'on prend l'exemple de developpez.com, ce n'est pas parce que tu as accès à certaines informations que tu as pour autant le droit de les récupérer...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 49
    Points : 39
    Points
    39
    Par défaut
    J'ai fini par trouver entre milles autres choses le code correspondant à la fonction submitAjaxParam
    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
    var submitAjaxEncours = false;
    // submit ajax: struts=url de base, form=nom du formulaire, portlet=id du div a updater
    function submitAjax(struts, form, portlet){
    if (!submitAjaxEncours) {
    var urlValideForm = struts;
    theForm = document.getElementById(form);
    urlValideForm = urlValideForm.replace(/&amp;/g,"&");
    var url = urlValideForm + "&" + Form.serialize(theForm).replace(/&amp;/g,"&");
    submitAjaxEncours = true;//blocage de nouvelles tentatives
    setTimeout('submitAjaxEncours = false', 3000);//en cas de probleme, retour a l'etat normal au bout de 3 secondes
    AjaxUtil.update(url, portlet);
    submitAjaxEncours = false;//retour a l'etat normal
    }
    }
    // update ajax avec ajout de param
    function submitAjaxParam(url, portlet, param){
    var urlValide = url.replace(/&amp;/g,"&") + param;
    submitAjaxEncours = true;//blocage de nouvelles tentatives
    setTimeout('submitAjaxEncours = false', 3000);//en cas de probleme, retour a l'etat normal au bout de 3 secondes
    AjaxUtil.update(urlValide, portlet);
    submitAjaxEncours = false;//retour a l'etat normal
    }
    En fait, mon problème est simple (sa solution ne l'est apparemment pas ). Voilà un texte qui le résume:
    Problem

    I want to download a web page whose source is full of AJAX calls. I want the result that is shown in my browser, i.e. I want the generated (post-AJAX) source.

    Example
    Consider this simple page: test.html. If I open it in my browser, I’ll see the text “Hi Crowbar!”. However, if I download this page with wget for instance, in the source code I’ll see the text “Hi lame crawler”. Explanation: my browser downloads and then interprets the page. The executed JavaScript code updates the DOM of the page. A simple downloader like wget doesn’t interpret the source of a page just grabs it.
    .
    J'ai trouvé quelques explications mais très très lourdes à mettre en oeuvre alors que j'avais déjà réussi à résoudre le même type de problème avec une requête du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.xxx.com/lib/index_tools/xajax.server.php?...parametre1=x&parametre2=y...
    Or, ici, rien que pour récupérer les paramètres "programmatiquement", c'est déjà un autre problème.
    Comment intégrer cette fonction submitAjaxParam dans ma requête ? J'imagine qu'il faudrait réexaminer les appels en question et identifier toutes les grandeurs ou paramètres qui entrent en jeu ....

Discussions similaires

  1. extraction ciblé page web
    Par guigui64 dans le forum VBScript
    Réponses: 0
    Dernier message: 10/04/2012, 18h51
  2. [AJAX] charger une page web php avec ajax
    Par lamou23 dans le forum AJAX
    Réponses: 1
    Dernier message: 23/09/2010, 09h43
  3. [AJAX] actualiser ma page web
    Par k4444a dans le forum AJAX
    Réponses: 1
    Dernier message: 22/04/2009, 02h24
  4. bug dans programme d'extraction de données d'une page web
    Par youpimevla dans le forum Web & réseau
    Réponses: 11
    Dernier message: 31/08/2006, 10h02
  5. Extraction de texte de pages web?
    Par VinnieMc dans le forum Web
    Réponses: 4
    Dernier message: 01/03/2006, 19h42

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