Рысь с javascript

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

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

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

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


person TheNotSoWise    schedule 19.02.2012    source источник
comment
Вам лучше использовать решение для автоматизации браузера, такое как Selenium или мою собственную библиотеку, dryscrape внутри виртуального фреймбуфера ( Xvfb) для этого.   -  person Niklas B.    schedule 20.02.2012
comment
Чего именно вы пытаетесь достичь? Скорее всего, это не так: 1) лучше всего запускать из задания cron в Linux, 2) лучше всего запускать через JavaScript, загруженный на веб-страницу.   -  person sh-beta    schedule 20.02.2012
comment
@sh-beta, я пытаюсь войти на сайт, который использует шифрование пароля в javascript для шифрования пароля перед его отправкой на сервер. Поскольку я не хотел переписывать всю библиотеку, которая у них есть, на php, я напрямую использую их функции javascript, шифрую пароль и отправляю его на сервер с помощью POST.   -  person TheNotSoWise    schedule 20.02.2012
comment
@ user1215232 скорректировал мой ответ, чтобы отразить это   -  person sh-beta    schedule 20.02.2012
comment
(для входящих пользователей Google) В настоящее время у вас должно быть все в порядке с Node.js. Поместите общую логику на другой уровень и создайте приложение Node.js для ее использования. Приложение браузера также будет использовать эту логику. Затем вы можете легко автоматизировать свое приложение Node.js с помощью crontab.   -  person Jorjon    schedule 22.04.2020


Ответы (5)


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

Обновление 1

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

person sh-beta    schedule 19.02.2012
comment
Пробовал использовать селен. У меня есть ошибка: Сообщение: «Похоже, браузер закрылся до того, как мы смогли подключиться. Вывод был: Ошибка: не указан дисплей\n' Это также имеет место, когда я использую простую команду firefox --newtab link - person TheNotSoWise; 20.02.2012
comment
Похоже, чтобы заставить Firefox работать, мне нужен дисплей, что невозможно в моей ситуации, так как это VPS. Есть ли обходной путь для этого? Если я смогу заставить Firefox работать, то я не думаю, что мне нужен селен. - person TheNotSoWise; 20.02.2012
comment
Я думаю, это новый вопрос. - person sh-beta; 20.02.2012
comment
Ты неправ. JS поддерживается lynx, попробуйте: lynx www.google.ru/search?client=lynx&q=lynx&e=UTF-8&oe=UTF-8 - person Николай Лубышев; 07.07.2016

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

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

person Thomas    schedule 19.02.2012
comment
Вы уверены, что ссылки поддерживают javascript? У меня тот же результат, что и у lynx. - person TheNotSoWise; 20.02.2012
comment
Извините, я ошибся. Форк под названием Elinks в некоторой степени поддерживает JavaScript, но в версии для Ubuntu он не включен. - person Thomas; 20.02.2012
comment
Кажется, что даже elinks и links2 требуют [повторной] компиляции с определенными переключателями, чтобы включить JavaScript. Те, которые устанавливаются с помощью apt-get Ubuntu, конечно, не поставляются с поддержкой JS из коробки. - person MarkHu; 18.12.2012
comment
За вас проголосовали, потому что в вашем ответе все еще говорится, что ссылки поддерживают javascript, хотя в комментариях упоминается, что это не так. - person idursun; 30.03.2015
comment
Очевидно, спасибо! Улучшен ответ на что-то, надеюсь, более правильное. - person Thomas; 03.04.2015

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

person Alexander Skiller    schedule 22.09.2015

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

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

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

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

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

person JepZ    schedule 07.02.2017

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

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

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

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

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

Другой способ - просто переписать свою веб-страницу, чтобы ДЕЛАТЬ ВЕЩИ, не предполагая, что браузер, например, принимает параметр GET, который переводит его в «автоматический режим», а затем он предполагает, что он запускается из cron и делает это счастье через более короткую схему .

person Jonathan    schedule 04.06.2015