Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > AJAX
AJAX Forum sur la programmation AJAX. Avant de poster : Cours AJAX, FAQ AJAX, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/07/2011, 01h51   #1
Futur Membre du Club
 
Inscription : septembre 2005
Messages : 44
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 44
Points : 15
Points : 15
Par défaut 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 :
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 :
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
lazare est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 16h32   #2
Membre habitué
 
Inscription : octobre 2009
Messages : 122
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 122
Points : 116
Points : 116
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 ...
bewidia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2011, 19h24   #3
Futur Membre du Club
 
Inscription : septembre 2005
Messages : 44
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 44
Points : 15
Points : 15
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.
lazare est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2011, 19h46   #4
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 793
Points : 35 793
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 !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2011, 20h43   #5
Futur Membre du Club
 
Inscription : septembre 2005
Messages : 44
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 44
Points : 15
Points : 15
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)
lazare est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 04h02   #6
Futur Membre du Club
 
Inscription : septembre 2005
Messages : 44
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 44
Points : 15
Points : 15
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
Citation:
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.
lazare est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 20h13   #7
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 793
Points : 35 793
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 !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2011, 01h03   #8
Futur Membre du Club
 
Inscription : septembre 2005
Messages : 44
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 44
Points : 15
Points : 15
J'ai fini par trouver entre milles autres choses le code correspondant à la fonction submitAjaxParam
Code :
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:
Citation:
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 :
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 ....
lazare est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h03.


 
 
 
 
Partenaires

Hébergement Web