web-dev-qa-db-fra.com

Lynx avec javascript

J'ai donc écrit un script dans PHP qui nécessite JavaScript pour s'exécuter avec. J'ai eu du mal à trouver la solution pour exécuter le javascript avec php en même temps en utilisant un outil linux pour le rendre automatique (car le faire fonctionner dans mon navigateur n'est pas un choix, j'ai besoin que ce soit un logiciel ). L'utilisation de la commande "php" n'est pas un choix non plus, car elle n'exécute pas javascript. Alors j'ai trouvé une solution, c'était le lynx.

Voici donc mon problème: pour une raison quelconque, le javascript fonctionne correctement dans mon navigateur, mais pas dans Lynx. En utilisant Lynx, la page se charge simplement sans implication de javascript. Existe-t-il un moyen de déboguer JavaScript dans Lynx, un peu comme Google Chrome permet de voir ce qui se passe depuis la console afin que je puisse savoir ce qui empêche le script de s'exécuter dans Lynx?

Modifier:

Donc, apparemment, Lynx ne supporte pas le javascript. Dans ce cas, ma question est la suivante: que fait-on? J'ai besoin d'exécuter ce script en tant que navigateur mais à partir de la commande linux Prompt. Et si le système d'exploitation compte dans ce cas, j'utilise la dernière Ubuntu.

23
TheNotSoWise

Lynx ne supporte pas Javascript.

Mise à jour 1

En vous basant sur votre résumé de ce que vous tentez de faire (connectez-vous à un site qui requiert JavaScript pour le cryptage du mot de passe), je vous recommande vivement d'utiliser Selenium ou un autre logiciel d'automatisation de navigateur. Même si la soumission du mot de passe fonctionne correctement sans une telle couche, le site posera probablement d'autres problèmes si vous utilisez un navigateur minimaliste comme Lynx.

15
sh-beta

Lynx ne prend pas en charge JavaScript, mais le navigateur de texte alternatif ELinks le fait, basé sur SpiderMonkey. C'est un peu expérimental cependant; voir le manual pour savoir comment le compiler.

De plus, je suis vraiment perplexe à propos de ce que vous essayez d'accomplir ici ...

9
Thomas

Ce dont vous avez besoin est appelé Headless Browser. Par exemple PhantomJS est l’un d’eux. Je pense que c'est le plus populaire.

5
Alexander Skiller

Si vous voulez seulement exécuter Javascript depuis la ligne de commande, je vous conseillerais quelque chose comme nodejs ou otto . Ils ont une empreinte de performances beaucoup plus réduite que tout un navigateur sans navigateur.

Si vous avez besoin de plus que de simples Javascript, par exemple, le DOM ou alors, vous devriez essayer un navigateur headless ( Chrome , PhantomJS ) comme suggéré par d'autres.

Si vous avez non seulement besoin d'un navigateur, mais que vous souhaitiez effectuer des tests automatisés avec ce navigateur, Selenium reste le chemin à parcourir.

Cela dépend vraiment de votre cas d'utilisation.

Update: Depuis quelques mois, il est possible d'utiliser Chrome en tant que navigateur sans navigateur maintenant (Firefox est également en route).

1
JepZ

Le sélénium est la voie à suivre, mais comme vous le remarquez, il faut un affichage. Ce qui doit ensuite être lancé, et yada yada yada, vous avez maintenant une configuration assez complexe en cours !! 

Heureusement, il y a encore un autre moyen d'automatiser tout cela, à travers un cadre d'automatisation. Je recommande Jenkins. Il a déjà un addon pour lancer un serveur x.

Le pipeline approximatif est donc le suivant:

  • Oubliez crontab 
  • Installer un serveur jenkins ubuntu (avec x installé)
  • Installez l’addon jenkins xvncserver (?) - Je pense que c’est ainsi qu’il s’appelle. Quoi qu'il en soit, cela lancera un XHOST pour vous automatiquement.
  • Écrire des scripts Web Seliver Selenium qui vont à l'emplacement en question (le plus simple * consiste à utiliser l'EDI Selenium)
  • Demandez à Selenium IDE de générer les scripts WebDriver dans n’importe quel format, puis faites-le fonctionner par jenkins. Personnellement, j'utilise le format Java, puis Ant pour les construire.

Comme vous pouvez l’imaginer, c’est tout à fait une configuration, mais elle fera techniquement ce que vous demandez. Je suis désolé, ce n'est pas aussi simple que de faire pipi au lynx. 

Une autre solution consiste simplement à réécrire votre page Web sur DO STUFF sans utiliser de navigateur, par exemple, prenez un paramètre GET qui le met en "mode automatique". .

0
Jonathan