Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".

#1 Le 13/07/2011, à 00:17

boblepecheur

Se connecter à un site via Wget....

Bonjour,

je souhaite me faire un script qui se connecte à un site, récupère certaines infos et me les envoie par mail.

Le site en question est onvasortir.com . Les infos que je veux récupérer sont mes messages perso ainsi que certaines sorties.

Mon problème est que je n'arrive pas à me connecter au site via wget.

Lorsque je lance la commande :

wget --cookies=on --keep-session-cookies --save-cookies=cookie.txt --header='Host: paris.onvasortir.com' --user-agent="Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10" --post-data 'Pseudo=<Mon_Login>&Password=<Mon_MDP>*&Retenir=ok' http://paris.onvasortir.com/page_action_connect.php

j'ai le résultat suivant :

wget --header='Host: paris.onvasortir.com' --user-agent="Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10" --post-data 'Pseudo=<Mon_Login>&Password=<Mon_MDP>*&Retenir=ok' http://paris.onvasortir.com/page_action_connect.php
Résolution de paris.onvasortir.com... 194.242.114.148
Connexion vers paris.onvasortir.com|194.242.114.148|:80... connecté.
requête HTTP transmise, en attente de la réponse... 302 Found
Emplacement:  [suivant]
--2011-07-13 00:03:30--  http://paris.onvasortir.com/page_action_connect.php
Réutilisation de la connexion existante vers paris.onvasortir.com:80.
requête HTTP transmise, en attente de la réponse... 302 Found
Emplacement:  [suivant]
--2011-07-13 00:03:31--  http://paris.onvasortir.com/page_action_connect.php
Réutilisation de la connexion existante vers paris.onvasortir.com:80.
requête HTTP transmise, en attente de la réponse... 302 Found
Emplacement:  [suivant]

... pareil jusqu'a 19...

--2011-07-13 00:03:52--  http://paris.onvasortir.com/page_action_connect.php
Réutilisation de la connexion existante vers paris.onvasortir.com:80.
requête HTTP transmise, en attente de la réponse... 302 Found
Emplacement:  [suivant]
20 redirections dépassant la limite permise.

wget semble bloquer sur la redirection. Alors que avec firefox, ça passe bien.

J'ai essayé plein de chose (rajouter les header, les Referer, augmenter le nombre de redirection, etc) mais je comprend pas pourquoi il passe pas la redirection.
Quelqu'un aurait une solution ou des pistes?

Pour info, j'ai la dernière version de wget (par défaut dans ubuntu 10.10)

Hors ligne

#2 Le 13/07/2011, à 22:16

sputnick

Re : Se connecter à un site via Wget....

Salut,

voici la même chose en cURL qui fonctionne nickel :

curl -s -A "Mozilla/5.0" -b /tmp/c -c /tmp/c -L -d "Pseudo=sputnick&Password=xxxxxxxxxxxxx&Retenir=ok" \
http://paris.onvasortir.com/page_action_connect.php \
http://paris.onvasortir.com/vue_messages_recus.php |
awk '/message_action_delrap.php/{getline; getline; print; exit; }' |
html2text

Avec commentaires :

curl -s \ # afficher la sortie dans la console
-A "Mozilla/5.0" \ # user-agent
-b /tmp/c \ # lecture des cookies
-c /tmp/c \ # ecriture des cookies
-L \ # suivre les redirections
-d "Pseudo=sputnick&Password=xxxxxxxxxxxxxx&Retenir=ok" \ # forms
http://paris.onvasortir.com/page_action_connect.php \ # 1° URL pour le POST
http://paris.onvasortir.com/vue_messages_recus.php | # 2° URL où on va chercher ce qu'on cherche
awk '/message_action_delrap.php/{getline; getline; print; exit; }' | # quick'n'dirty awk
html2text # on convertit le HTML en text

Resultat :

Tu n'as aucune discussion en cours dans ta messagerie.

Ce qui est important avec curl ou wget c'est d’appeler les URLs à la suite dans la même commande pour garder la même session.

Bon, c'est de la bidouille qui marche, mais si tu veut faire ça de façon pro-propre, je te conseille perl et ses modules WWW::Mechanize HTML::TreeBuilder WWW::Scripter (javascript en +)
WWW::Mechanize est très proche d'un vrai navigateur (à programmer) avec des méthodes comme click() submit_forms()... C'est très puissant. De plus ce module installe la commande systeme mech-dump qui est l'outils indispensable au screen-scrapping (art de parcourir des sites par programmation, c'est en quelque sorte une de mes spécialités).

Exemple sur la page d'acceuil du site pour decouvrir les forms :

$ mech-dump --forms http://paris.onvasortir.com
POST http://paris.onvasortir.com/page_action_connect.php [connection]
  Pseudo=                        (text)
  Password=                      (password)
  <NONAME>=Connexion             (submit)
  Retenir=<UNDEF>                (checkbox) [*<UNDEF>/off|ok/Se souvenir]

Si tu ne connaît pas perl, peut être connaît tu d'autres langages de 3° génération comme python ou ruby, ils possèdent aussi des modules mechanize. Mais perl est quand même très bien adapté pour filtrer du HTML, c'est un langage de "glue" comme on dit, et le traitement de chaines est une se ses grande forces.


++sputnick;

Dernière modification par sputnick (Le 13/07/2011, à 22:23)


bashfr.org(random);
<arciks1994> dou tu connai qel age j'ai ?

Hors ligne

#3 Le 26/07/2011, à 21:17

sputnick

Re : Se connecter à un site via Wget....

Vous avez reçu un télégramme par wgetexpress

--DEBUT DE TRANSMISSION--
boblepecheur pêche au gros Alaska - STOP - sera retour bientôt - STOP
--FIN DE TRANSMISSION--


bashfr.org(random);
<arciks1994> dou tu connai qel age j'ai ?

Hors ligne

Haut de page ↑