Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[SCRIPT] Utilsier firefox/mozilla dans un script shell

7 réponses
Avatar
yvespielusenet
Bonjour,
Existe-t-il un moyen d'utiliser firefox sans lancer l'interface
graphique.
Je voudrais faire un peu la m=EAme chose que pour les scripts-fu de 'the
gimp' :
http://www.gimp-fr.org/script.php

Y'a-t-il un moyen par exemple de programmer une connexion =E0 un site
https, faire une authentification, puis t=E9l=E9charger un fichier et
cel=E0 grace =E0 un script d'automatisation ?

merci

--
Yves Piel

7 réponses

Avatar
Fabien LE LEZ
On 7 Jan 2006 05:45:15 -0800, :

Y'a-t-il un moyen par exemple de programmer une connexion à un site
https, faire une authentification, puis télécharger un fichier et
celà grace à un script d'automatisation ?



Ne serait-ce pas plus simple d'utiliser wget ?
Avatar
Xavier Robin
Fabien LE LEZ a écrit :
On 7 Jan 2006 05:45:15 -0800, :

Y'a-t-il un moyen par exemple de programmer une connexion à un site
https, faire une authentification, puis télécharger un fichier et
celà grace à un script d'automatisation ?



Ne serait-ce pas plus simple d'utiliser wget ?




En effet, Gecko est un moteur d'affichage des pages web, je ne vois pas
trop l'intérêt de l'utiliser si c'est pour ne pas les afficher…
Avatar
yvespielusenet
merci pour vos infos :)
avec wget on peut télécharger une page web mais est-ce que l'on peut
créer une session, simuler des cliques etc...
Ce que je voudrais faire c'est utiliser firefox de la même façon que
l'on utilise les API de simulation de navigateur tel HTPUnit en java et
WWWMechanize en Perl.
Premièrement ça permet de tester un site ou de simuler une navigation
quelconque etc...

Je pense que l'utilise de l'API firefox pour ce genre de chose serait
idéal vu qu'il s'agit d'un véritable navigateur qui inclus toute les
technologies (notamment javascript).

httpUnit : http://httpunit.sourceforge.net/
WWWMechanize : http://articles.mongueurs.net/magazines/linuxmag58.html

wget est très pergormant mais je ne suis pas sure qu'il sache faire ce
que je veux c'est à dire naviguer sur un site HTTPS avec session.
Avatar
Piotr
a écrit :

Ce que je voudrais faire c'est utiliser firefox de la même façon que
l'on utilise les API de simulation de navigateur tel HTPUnit en java et
WWWMechanize en Perl.



Mais pourquoi, justement, ne pas utiliser HTTPUnit en java ou
WWW::Mechanize en Perl, puisque ça fait ce que tu recherches ?

wget est très pergormant mais je ne suis pas sure qu'il sache faire ce
que je veux c'est à dire naviguer sur un site HTTPS



wget --keep-session-cookies

avec session.



Extrait de la page de man de wget :
"To support encrypted HTTP (HTTPS) downloads, Wget must be compiled with
an external SSL library, currently OpenSSL."
Avatar
yvespielusenet
bonjour,

Je pense que le navigateur firefox est beaucoup plus abouti que ces API
(qui sont quand même très pratique). Notamment sur le plan du
javascript et autres technologies.
Ces API ne gère pas bien le javascript. Donc par exemple comment
simuler un clique sur un lien qui renvoie vers un javascript assez
compliqué ?

Je trouve que l'idée de pouvoir piloter firefox à partit d'un script
serait vraiment un atout. Que pensez-vous du fait que l'on peut
piloter GIMP (ou photoshop) depuis des scripts ? c'est vraiment très
utile je trouve.

Xavier Robin a dit :
"En effet, Gecko est un moteur d'affichage des pages web, je ne vois
pas
trop l'intérêt de l'utiliser si c'est pour ne pas les afficher... "
Je dirais que firefox est plus qu'un moteur d'affichage de page Web.
C'est un outil permettant de naviguer sur le web, d'agir sur le web. De
la même manière que GIMP n'est pas qu'un simple visualiseur d'image
mais un outil de manipulation d'image. C'est vraiment très
intéressant de pouvoir utiliser GIMP dans un script et d'avoir accès
à TOUTES ses fonctionnalités pour faire des traitements d'images en
série. Se serait vraiment intéressant de pouvoir utiliser un
navigateur comme firefox de la même manière. Évidemment il y a peut
ête moins d'utilité, mais personnellemment j'en ai :)

Piotr à écrit :
"> wget est très pergormant mais je ne suis pas sure qu'il sache faire
ce
que je veux c'est à dire naviguer sur un site HTTPS



wget --keep-session-cookies

avec session.



Extrait de la page de man de wget :
"To support encrypted HTTP (HTTPS) downloads, Wget must be compiled
with
an external SSL library, currently OpenSSL." "

D'accord, mais comment fait wget pour remplir un formulaire et le
valider ?
Comment font les API WWMechanize et HttpUnit lorsqu'elle rencontre du
javascript (HttpUnit le gère mais pas entièrement) ?

Pourquoi ne pas utiliser un projet comme firefox qui sait faire tout
celà (si ce n'est déjà fait d'ou ma question originale) ? plutot
que de réinventer la roue il suffirait d'intégrer un interpréteur
dans firefox qui pourrait charger des pages, utiliser les élément de
celle-ci etc... exactement comme le font HttpUnit et WWWMechanize mais
d'une manière se rapprochant des sript-fu de gimp.

--
yves piel
Avatar
Piotr
a écrit :

Je pense que le navigateur firefox est beaucoup plus abouti que ces API
(qui sont quand même très pratique). Notamment sur le plan du
javascript et autres technologies.
Ces API ne gère pas bien le javascript. Donc par exemple comment
simuler un clique sur un lien qui renvoie vers un javascript assez
compliqué ?



Je crois que tu confonds l'objet des différents test unitaires (XUnit).
Si tu as une librairie qui se nomme HttpUnit, on peut supposer qu'elle
sert à tester HTTP, et donc de vérifier le comportement d'une page à
partir du message qu'on lui envoie à travers le protocole HTTP.
Si tu veux tester le comportement d'un javascript client, il existe un
framework appelé JsUnit (http://www.edwardh.com/jsunit/)

Je trouve que l'idée de pouvoir piloter firefox à partit d'un script
serait vraiment un atout. Que pensez-vous du fait que l'on peut
piloter GIMP (ou photoshop) depuis des scripts ? c'est vraiment très
utile je trouve.



Je ne connais pas bien GIMP et photoshop, mais il me semble qu'on ne les
pilote pas avec des scripts, mais que c'est plutôt le contraire :
n'est-ce pas plutôt ces logiciels qui lancent des scripts ?

Les outils Mozilla se scriptent, mais il s'agit de lancer des commandes
basiques, sans pour autant vérifier ce qu'elles retournent :

$mozilla -remote <command>

permet de lancer <command> dans un process Mozilla existant
La liste des commandes possibles se trouve ici :
http://www.mozilla.org/unix/remote.html

Je dirais que firefox est plus qu'un moteur d'affichage de page Web.
C'est un outil permettant de naviguer sur le web, d'agir sur le web.



Ah ! Nous revoilà en charte :)
Question: qu'est-ce qu'un navigateur ? Un client HTTP + un moteur de
rendu de page ou un environnement d'execution d'application ?
Personnellement, je penche pour le première option, même si ça n'empeche
pas le soft d'être enrichi par des fonctionnalités supplémentaires.

D'accord, mais comment fait wget pour remplir un formulaire et le
valider ?



wget --post-data='toto=tutu&machin=bidule'
ou
wget --post-file=fichier
avec tes variables POST dans un fichier externe

Si tes données sont en GET, il suffit de les passer dans l'url

Comment font les API WWMechanize et HttpUnit lorsqu'elle rencontre du
javascript (HttpUnit le gère mais pas entièrement) ?



Elles ne le gèrent pas, ou très mal. Mais ça n'est pas leur taf (cf.
plus haut JsUnit)

Pourquoi ne pas utiliser un projet comme firefox qui sait faire tout
celà (si ce n'est déjà fait d'ou ma question originale) ? plutot
que de réinventer la roue il suffirait d'intégrer un interpréteur
dans firefox qui pourrait charger des pages, utiliser les élément de
celle-ci etc... exactement comme le font HttpUnit et WWWMechanize mais
d'une manière se rapprochant des sript-fu de gimp.



Parce que l'objet des tests unitaires est justement de segmenter au
maximum les comportements à tester. Si tu veux tester le comportement du
moteur de rendu de firefox, tu n'as plus qu'à compiler XulRunner, et à
rendre ton executable scriptable (toutes les sources sont disponibles).
Par contre tu vas faire comment pour tester le comportement de tes pages
web avec IE, opera, safari, etc. ?

Tout ceci est limite hors-charte.
Avatar
yvespielusenet
Merci pour tes explications :)

Je suis concient que HttpUnit a été fait dans l'optique de tester des
pages web. Mais il peut aussi être utiliser pour automatiser des
actions sur le net. WWWMechanize est, il me semble, plus utiliser dans
cette seconde optique que dans les test de site web.
Voir les article sur WWWMechanize des mongueurs de Perl qui trouve
toujours des exemples d'automatisation :
http://articles.mongueurs.net/magazines/linuxmag58.html
http://articles.mongueurs.net/magazines/linuxmag77.html

Ma réfexion était donc 'Pourquoi ne pas utiliser la librairie d'un
vrai navigateur au lieu d'essayer d'en faire une qui sera moins
performante ?'

"Je ne connais pas bien GIMP et photoshop, mais il me semble qu'on ne
les
pilote pas avec des scripts, mais que c'est plutôt le contraire :
n'est-ce pas plutôt ces logiciels qui lancent des scripts ?"
Oui tout à fait :) J'ai peut être prêté à confusion avec le titre
de ce thread. Ce que je voulais dire c'est : créer un script, lancer
firefox avec une option de chargement du script et une autre déclarant
de ne pas lancer l'interface de firefox.

"wget --post-data='toto=tutu&machin=bidule'
ou
wget --post-file=fichier
avec tes variables POST dans un fichier externe"
Il aurait fallu que je me penche plus sur wget :)
En fait, le problème auquel je suis confronté est que je voudrait
automatiser le téléchargement d'un fichier demandant :
- une authentification sur la page d'accueil (cette authentification
demande du javascript :c)
- remplir 1 ou 2 formulaires (je suis sure qu'il y a aussi du
javascript)
- cliquer sur un bouton pour télécharger le fichier

Je reste persuadé que la possibilité de programmer firefox via des
scripts est une idée à creuser (je suis têtu ;)).

Je viens d'aller voir xulrunner et ça m'a l'aire très bien :) :
http://xulfr.org/wiki/XulRunner :
"En effet, XulRunner 1.8 inclus le moteur Gecko 1.8, utilisé par
Firefox 1.8, ainsi que la majeure partie de ses API. On pourrait
comparer aujourd'hui XulRunner à Firefox 1.5 sans son interface
utilisateur."

Peut être que j'approche du Graal ;)
merci Piotr je vais creuser cette piste...

--
yves piel