Рысь с JavaScript - PullRequest
       20

Рысь с JavaScript

24 голосов
/ 20 февраля 2012

Итак, я написал скрипт на PHP, для работы с которым требуется JavaScript.Мне было трудно найти решение о том, как запустить javascript с помощью php одновременно, используя какой-то инструмент linux, чтобы сделать его автоматическим (поскольку запускать его в моем браузере не вариант, мне нужно, чтобы он был crontab).Использование команды "php" также не является выбором, так как она не запускает javascript.Итак, я нашел решение, это была lynx.

Так вот в чем моя проблема: по какой-то причине javascript работает в моем браузере просто отлично, но не в lynx.Используя lynx, страница просто загружается без участия javascript.Есть ли способ отладки javascript в lynx, вроде того, что есть в google chrome, где вы можете посмотреть, что происходит с консоли, чтобы я мог выяснить, что заставляет скрипт не работать в lynx?

Редактировать:

Так что, очевидно, lynx не поддерживает javascript.В таком случае, мой вопрос, что делает?Мне нужно запустить этот скрипт, как браузер, но из командной строки Linux.И если ОС имеет значение в этом случае, я использую последнюю версию Ubuntu.

Ответы [ 5 ]

16 голосов
/ 20 февраля 2012

Lynx не поддерживает Javascript.

Обновление 1

Исходя из вашего резюме того, что вы пытаетесь сделать (войдите на сайт, который требует JavaScript для шифрования пароля), я настоятельно рекомендую вам взглянуть на использование Selenium или другого пакета автоматизации браузера. Даже если вы получите правильную отправку пароля без такого слоя, у сайта могут возникнуть другие проблемы, если вы используете минималистский браузер, такой как Lynx.

9 голосов
/ 20 февраля 2012

Lynx не поддерживает JavaScript, но альтернативный текстовый браузер ELinks поддерживает на основе SpiderMonkey. Это несколько экспериментально, хотя; см. руководство о том, как его скомпилировать.

Кроме того, я действительно озадачен тем, чего вы пытаетесь достичь здесь ...

6 голосов
/ 22 сентября 2015

То, что вам нужно, называется Безголовый браузер . Например, PhantomJS является одним из них. Я думаю, что это самый популярный.

1 голос
/ 07 февраля 2017

Если вы хотите выполнить Javascript из командной строки, я бы посоветовал вам что-то вроде nodejs или otto . Они имеют гораздо меньшую производительность, чем целый безголовый браузер.

Если вам нужно больше, чем просто Javascript, например или около того, вы должны попробовать браузер без головы ( Chrome , PhantomJS ), как предложено другими.

Если вам нужен не только браузер, но вы хотите провести автоматизированное тестирование с этим браузером, Selenium все еще будет подходить.

Это действительно зависит от того, сколько вам нужно.

Обновление: Уже через несколько месяцев можно использовать Chrome в качестве браузера без головы (Firefox тоже в пути).

0 голосов
/ 04 июня 2015

Селен - это путь, но, как вы заметили, ему нужен дисплей. Который затем должен быть запущен, и yada yada yada, теперь у вас есть довольно сложная установка !!

К счастью, есть еще один способ автоматизировать все это, и это через инфраструктуру автоматизации. Я рекомендую Дженкинс. У него уже есть дополнение для запуска сервера x.

Итак, примерный конвейер выглядит следующим образом:

  • Забудьте о crontab
  • Настройка сервера Ubuntu jenkins (с установленным x)
  • Установите аддон jenkins xvncserver (?) - думаю, так он и называется. В любом случае это автоматически запустит для вас XHOST.
  • Написание сценариев селенового веб-драйвера, которые идут в указанное место (проще всего * использовать Selenium IDE)
  • Пусть селен IDE выводит сценарии веб-драйвера в любом формате, а затем запускает его с помощью jenkins. Я лично использую формат Java, а затем использую ant для их сборки.

Как вы можете себе представить, это довольно сложная установка, но технически она будет делать то, что вы просите. Извините, это не так просто, как отправка wget в lynx.

Другой способ - просто переписать вашу веб-страницу в DO STUFF, не предполагая, что браузер, например, принимает параметр GET, который переводит его в «автоматический режим», а затем он будет предполагать, что он запускается из cron и делает это через более короткая цепь.

...