45 votes

Firefox/Webkit sans tête et scriptable sur linux ?

Je cherche à automatiser certaines interactions web, notamment le téléchargement périodique de fichiers depuis un site web sécurisé. Il s'agit essentiellement d'entrer mon nom d'utilisateur/mot de passe et de naviguer vers l'URL appropriée.

J'ai essayé de créer des scripts simples en Python, puis des scripts plus sophistiqués, mais j'ai découvert que ce site Web particulier utilise un mécanisme de connexion odieux basé sur javascript et flash, ce qui rend mes méthodes inutiles.

J'ai ensuite essayé HTMLUnit, mais cela ne semble pas vouloir fonctionner non plus. Je soupçonne l'utilisation de Flash d'être à l'origine du problème.

Je n'ai pas vraiment envie d'y penser, alors je me penche vers l'élaboration d'un script pour un navigateur réel qui se connectera et récupérera le fichier dont j'ai besoin.

Les exigences sont les suivantes :

  • Exécuter sur un serveur linux (c'est-à-dire sans X). Si j'ai vraiment besoin d'avoir X, je peux y arriver, mais je ne serai pas heureux.
  • Soyez fiable. Je veux démarrer ce truc et ne plus jamais y penser.
  • Soyez scriptable. Rien de trop sophistiqué, mais je devrais pouvoir indiquer au navigateur les différentes étapes à suivre et les pages à visiter.

Existe-t-il de bonnes boîtes à outils pour un navigateur scriptable sans tête et sans X ? Avez-vous déjà essayé quelque chose de ce genre et si oui, avez-vous des conseils à nous donner ?

39voto

Phil Points 1247

Qu'en est-il phantomjs ?

1 votes

PhantomJS est de loin le plus facile à intégrer et développe des moyens d'intégration avec les cadres de tests automatisés.

2 votes

Oui, mais si vous voulez simuler quelque chose comme se connecter à un site web et utiliser des cookies, bonne chance !

3 votes

Phantomjs nécessite un serveur X ( code.google.fr/p/phantomjs/issues/detail?id=33 )

17voto

Dmitry Points 654

J'ai réalisé cette tâche avec un navigateur intégré à IE (bien qu'il s'agisse d'une application gui avec un panneau de composants de navigateur caché). En fait, vous pouvez prendre n'importe quel moteur de mise en page et la logique de sortie de coupure. La navigation devrait se faire via des événements de type script.

Vous pouvez utiliser Crowbar . Il s'agit d'une version sans tête de firefox (moteur Gecko). Il transforme le navigateur en serveur RESTful qui peut accepter des requêtes ("fetch url"). Donc il analyse le html, le représente comme DOM, attend un délai défini pour tout script exécuté.

Il fonctionne sous linux. Je suppose que vous pouvez facilement l'étendre pour votre objectif en utilisant JS et les riches capacités de XULrunner.

0 votes

Crowbar prend-il en charge les requêtes http POST ? La documentation est très pauvre...

9voto

nici Points 126

Avez-vous essayé Sélénium ? Il vous permettra d'enregistrer un scénario d'utilisation, à l'aide d'une extension pour Firefox, qui pourra ensuite être lu à l'aide d'un certain nombre de méthodes différentes.

Edit : Je viens de réaliser que c'était une réponse très tardive. :)

6voto

spektom Points 11130

Jetez un coup d'œil à WebKitDriver . Le projet comprend une implémentation headless de WebKit.

1voto

hoju Points 7182

Je ne sais pas comment faire des interactions flash (et je suis aussi intéressé), mais pour html/javascript vous pouvez utiliser Chickenfoot .

Et pour faire fonctionner un navigateur sans tête + scriptable sous Linux, vous pouvez utiliser la commande Bibliothèque Qt webkit . Voici un exemple d'utilisation .

0 votes

Merci Richard, ça a l'air bien, je vais l'essayer.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X