web-dev-qa-db-fra.com

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é. Cela implique essentiellement d'entrer mon nom d'utilisateur/mot de passe et de naviguer vers l'URL appropriée.

J'ai essayé des scripts simples en Python, suivis de scripts plus sophistiqués, pour découvrir que ce site Web utilise un mécanisme odieux basé sur le javascript et le flash pour la connexion, rendant mes méthodes inutiles. 

J'ai ensuite essayé HTMLUnit, mais cela ne semble pas vouloir fonctionner non plus. Je soupçonne que l'utilisation de Flash est le problème.

Je ne veux plus vraiment y penser, alors je suis plutôt enclin à scripter un navigateur réel pour me connecter et récupérer le fichier dont j'ai besoin. 

Les exigences sont:

  • Exécuter sur un serveur linux (c.-à-d. Aucun X en cours d'exécution). Si j'ai vraiment besoin de X, je peux y arriver, mais je ne serai pas heureux.
  • Soit fiable. Je veux commencer cette chose et ne plus y penser.
  • Être scriptable. Rien de trop sophistiqué, mais je devrais être capable de dire au navigateur les différentes étapes à suivre et les pages à visiter.

Existe-t-il une bonne boîte à outils pour un navigateur scriptable sans tête et sans X? Avez-vous essayé quelque chose comme ça et si oui avez-vous des mots de sagesse?

45
Parand

J'ai effectué une tâche connexe avec le navigateur intégré IE (bien qu'il s'agisse d'une application graphique avec un panneau de composant de navigateur masqué). En fait, vous pouvez utiliser n'importe quel moteur de présentation et couper la logique de sortie. La navigation doit être effectuée via des événements de type script.

Vous pouvez utiliser Crowbar . C'est une version sans tête de firefox (moteur Gecko). Il transforme le navigateur en serveur RESTful pouvant accepter les requêtes ("fetch url"). Donc, il analyse html, le représente comme DOM, attend le délai défini pour tous les scripts exécutés. 

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

17
Dmitry

Qu'en est-il phantomjs

39
Phil

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

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

9
nici

Regardez WebKitDriver . Le projet comprend une implémentation sans tête de WebKit.

6
michael

Je ne sais pas comment faire des interactions flash (et cela m'intéresse aussi), mais pour html/javascript, vous pouvez utiliser Chickenfoot

Et pour obtenir un navigateur sans script + sans tête fonctionnant sous Linux, vous pouvez utiliser la bibliothèque Qt webkit . Voici un exemple d'utilisation .

1
hoju

Pour ce faire, je viens d’écrire des extensions Chrome postées sur CouchDBs ( exemple et son Futon ). Ajoutez le divan aux autorisations du manifeste pour autoriser les XHR entre domaines.

(Je suis arrivé à ce fil à la recherche d'une alternative sans tête à ce que je faisais; ayant trouvé ce fil, je vais essayer Crowbar à un moment donné.)

De plus, compte tenu des caractéristiques étranges de ce site Web, je ne peux pas m'empêcher de me demander si vous pouvez exploiter une faille de sécurité pour contourner Flash et Javascript.

0
Thomas Levine