Меню Рубрики

Установка phantomjs на хостинг

Установка PhantomJS на виртуальном хостинге (1and1)

Используя виртуальный хостинг 1and1 linux,

Версия PHP 7.0.27
PHP PhantomJS 2.1.1

PHP PhantomJS все значения равны нулю

Всякий раз, когда я делаю запрос с:

У меня есть куча нулевых значений, и URL не обрабатывается phantomJS …

Просто никогда не возвращает контент

string (1413) «2018-02-25T22: 31: 25 [DEBUG] CookieJar — Создано и будет
хранить куки в: «cookies.txt» 1 0x1b67967
/ Kunden / Домашние страницы / 0 / d220355082 / HTDOCS / bitme / ядро ​​/ композитор / bin / phantomjs ()
[0x1b67967] 2 0x1baaaf5
/ Kunden / Домашние страницы / 0 / d220355082 / HTDOCS / bitme / ядро ​​/ композитор / bin / phantomjs ()
[0x1baaaf5] 3 0x198c463
/ Kunden / Домашние страницы / 0 / d220355082 / HTDOCS / bitme / ядро ​​/ композитор / bin / phantomjs ()
[0x198c463] 4 0x1ab3982
/ Kunden / Домашние страницы / 0 / d220355082 / HTDOCS / bitme / ядро ​​/ композитор / bin / phantomjs ()
[0x1ab3982] 5 0x79abb9
/ Kunden / Домашние страницы / 0 / d220355082 / HTDOCS / bitme / ядро ​​/ композитор / bin / phantomjs ()
[0x79abb9] 6 0x76b6f9
/ Kunden / Домашние страницы / 0 / d220355082 / HTDOCS / bitme / ядро ​​/ композитор / bin / phantomjs ()
[0x76b6f9] 7 0x750a5d
/ Kunden / Домашние страницы / 0 / d220355082 / HTDOCS / bitme / ядро ​​/ композитор / bin / phantomjs ()
[0x750a5d] 8 0x41cd89
/ Kunden / Домашние страницы / 0 / d220355082 / HTDOCS / bitme / ядро ​​/ композитор / bin / phantomjs ()
[0x41cd89] 9 0x41f5c4
/ Kunden / Домашние страницы / 0 / d220355082 / HTDOCS / bitme / ядро ​​/ композитор / bin / phantomjs ()
[0x41f5c4] 10 0x415b86
/ Kunden / Домашние страницы / 0 / d220355082 / HTDOCS / bitme / ядро ​​/ композитор / bin / phantomjs ()
[0x415b86] 11 0x2b1fc0917b45
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)
[0x2b1fc0917b45] 12 0x4176a1
/ Kunden / Домашние страницы / 0 / d220355082 / HTDOCS / bitme / ядро ​​/ композитор / bin / phantomjs ()
[0x4176a1] PhantomJS разбился. Пожалуйста, прочитайте руководство по сообщению об ошибках
в http://phantomjs.org/bug-reporting.html и подать отчет об ошибке.
Ошибка сегментации «int (0) NULL

Если я заменю PhantomJS последней загрузкой,

Я получаю libicui18n.so.55 отсутствующую зависимость

как я могу установить это с Composer?

Обратите внимание, что это необходимо установить на компьютере с общим хостингом, поэтому у меня нет доступа root / sudo на этом компьютере.

Вся помощь приветствуется.

Решение

Проверьте, работает ли ваша система SELinux (вы можете проверить это с помощью sestatus ) — он может (и будет) пытаться нанести вред PhantomJS, и это выглядит именно так.

источник

PhantomJS: Webkit в консоли

PhantomJS это все плюшки WebKit из консоли с управлением на JS и поддержкой различных стандартов и технологий: DOM, CSS, JSON, Canvas и SVG.

Внутри несколько примеров использования

Запуск

Запустить скрипты с помощью PhantomJS очень просто:

Использование

Это самое простое приложение для PhantomJS

Возьмем пример посложнее. Данный скрипт покажет время загрузки страницы:

Юнит-Тесты

Это, на мой взгляд самое полезное применение.
В качестве примера показана интеграция с QUnit

В качестве результатов мы получим

Рендеринг

Тоже полезная вещь. Кто-то может написать еще один сервис создания скриншотов страниц.

Получим

Или к примеру нужно получить pdf с версии для печати в википедии:

что даст нам

(выглядит не очень из-за сильного зум-аута в FoxitPDF Reader)

Скачать бинарники для Windows и исходный код можно с google code
Ну и разумеется сайт проекта: http://www.phantomjs.org

Редакторский дайджест

Присылаем лучшие статьи раз в месяц

Скоро на этот адрес придет письмо. Подтвердите подписку, если всё в силе.

Похожие публикации

Это мог быть очередной JavaScript-фреймворк

Об изменчивых методах объекта Math в JavaScript

Разбираемся с WebKit в 1С, на примере интеграции TinyMCE в управляемую форму в УТ 11.4

Вакансии

AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Комментарии 35

Это полноценный браузер (JavaScript+CSS+DOM+BOM+SVG+Canvas) но без графического интерфейса.
У него общего с Node.js (V8 JavaScript+libeio+libev) только JavaScript.

Из него выйдет отличный скриншотер (См. новый поиск гугла) и парсер с поддержкой JavaScript

PhantomJS is not «pure headless» yet. On Unix, it still needs X Server for font stuff, etc.

Небольшой гайд для тех, кто захочет использовать эту библиотеку для создания скриншотов сайта:

1. Идем на code.google.com/p/phantomjs/wiki/Installation и устанавливаем, как там написано, либо собираем, как написано на странице помощи по сборке: code.google.com/p/phantomjs/wiki/BuildInstructions

2. Устанавливаем Xvfb (frame buffer), он нужен будет для того, чтобы создать виртуальный x server.

3. Запускаем Xvfb, например со следующими параметрами:
Xvfb :1 -screen 0 1024x768x32 &

4. Теперь запускаем скрипт с первым виртуальным дисплеем:
:# DISPLAY=:1 phantomjs rasterize.js google.ru google.png

Мда, у этой библиотеки есть несколько не очевидных минусов. Как гласит вики, функция phantom.open() запускает загрузку страницы и перевыполняет скрипт, только тогда, когда загружена вся страница, включая все скрипты, картинки, внешние картинки и далее по списку. Наличие скриптов рекапчи, большого количества onload скриптов, делает загрузку страницы очень долгой, например вы можете даже увидеть подобное:
Loading time 58859 msec

Читайте также:  Установка кухонного сифона с переливом

Очень огорчает, что нет ни onDOMReady событий, ни возможности отключить загрузку и выполнение скриптов на странице, так что, скорее всего, для сервисов онлайн-скриншотов эта библиотека подойдет едва ли.

Можно, конечно, выкрутиться, использовав доступный в фантоме XHR объект, синхронным запросом взять данные, обработать его и только потом загрузить для обработки в браузере, после чего отобразить.

var address = phantom.args[0];
var output = phantom.args[1];

if (phantom.state.length === 0) <
var xmlhttp = new XMLHttpRequest();
phantom.viewportSize = < width: 800, height: 600 >;

xmlhttp.open(‘GET’, address, false);
xmlhttp.send(null);

if(xmlhttp.status == 200) <
var response = xmlhttp.responseText;

/**
* Тут мы выполняем операции по очистке response от скриптов и, например
* внешних iframe и изображений с отличного от текущего домена. Но тут
* придется использовать только регулярные выражения, а не DOM.
*/

phantom.state = ‘rasterize’;
phantom.content = response;
>
> else <
phantom.render(output);
phantom.exit();
>

Вряд ли. Все дело в том, что PhantomJS работает по следующему принципу:
1. Выполняется (в контексте пустого окна «браузера» ваш скрипт).
2. Если вы изменяете свойство content, либо используете метод open(), страница (пере)загружается, управление полностью передается загружаемой странице (скрипты, загрузка изображений, составление DOM-дерева, etc).
3. По событию load страницы управление опять передается вашему скрипту, точнее он снова выполняется с самого начала (однако область видимости сохраняется).

Поэтому вашу задачу выполнить средствами PhantomJS невозможно, точнее можно, но только сам профайлер и чекер ошибок вам придется сделать самостоятельно, т.е. как в моем примере выше, только переделывая всю страницу, вешая try-catch на скрипты, или свои обработчики onerror, подмиксовывать таймеры перед вызовами и так далее, в общем писать свой полноценный дебагер, который работал бы на подобии встраиваемой части Firebug, например. В общем, задача если и выполнима, но все же трудна.

Другой вопрос, что этот функционал, а так же расширить методы работы со страницей в PhantomJS, вы можете, редактируя его исходники, ведь они открыты. На данный момент нужно либо самому писать недостающий функционал, либо ждать обновлений.

источник

Как установить phantomJS на windows

Для тех, кто не знает, что такое Phantomjs – это вполне полноценный браузер, только из консоли. Он не имеет графического интерфейса, но легко справляется со всеми необходимыми функциями обычного браузера. Давайте же разберемся как установить phantomjs на windows всего за несколько минут.

Установка PhantomJS

Процедура отнюдь не сложная, однако нигде не найдешь на сегодняшний день русской документации. Поэтому мы переходим на официальный сайт phantomjs.org и кликаем на кнопку Download и на открывшейся странице выбираем версию для Windows.

Далее распаковываем скачанный архив и ищем папку bin, в ней должен находиться файл phantomjs.exe . Копируем его и вставляем в каталог, который создадим на диске C и назовем phantomjs . Сразу же после этого нам необходимо скопировать в проводнике путь к этому файлу, он нам понадобится для дальнейших настроек.

Открываем свойства компьютера. Заходим в «Дополнительные параметры системы» и на вкладке «Дополнительно» кликаем по кнопке «Переменные среды…». В списке системные переменные нам необходимо найти переменную «Path». Кликаем по ней и нажимаем изменить. В открывшемся окне в поле «Значение переменной:» в самый конец уже имеющейся строки мы вставляем наш скопированный путь к exe файлу в проводнике. Важный нюанс – не забудьте поставить точку с запятой перед и после пути. Далее везде нажимаем ок и закрываем свойства системы.

Все настройки готовы, пора перейти к запуску. Открываем командную строку сочетанием клавиш Win+R . Пишем cmd и нажимаем Enter . В командной строке набираем следующие команды:

И наслаждаемся проделанной работой. Далее мы можем запустить любой файл javascript. Для этого помещаем его в ту же папку, где находится наш phantomjs, допустим это будет test.js. Открываем командную строку и пишем следующие команды:

Содержание скрипта test.js может быть уже по вашему желанию, для проверки можем вывести обычное приветствие:

Как видите из примера, вторая строка выводит приветствие в консоль, а последняя закрывает работу phantomjs.

Надеюсь данная статья поможет кому-то начать свое знакомство с Webkit-браузером. Также я подготовил для всех своих читателей видео-инструкцию:

источник

Установка PhantomJS на сервер

я использую PhantomJS на окнах и доступ к файлам через командную строку. Теперь я хочу установить его на сервере, на котором я работаю на локальном хосте, поэтому я хочу, чтобы он был установлен на Apache, чтобы я мог интегрировать Phantom с моим HTML и PHP для использования на веб-странице. Я использую Windows 8.1 и Apache Server для локального хоста.

Могу ли я на самом деле это сделать? Как использовать его в веб-сервисах сейчас?
Как я буду использовать это, если я должен сделать свою сеть онлайн? я должен попросить моего хостинг-провайдера разместить эту вещь на сервере для меня?

Читайте также:  Установки жизненные ценности и традиции

Я использую phantomJS для разработки веб-сервиса, который принимает URL-адрес в качестве входного и возвращает файл изображения снимка экрана веб-сайта.

Решение

«Установка» PhantomJS просто добавляет его путь к переменной среды PATH.

Работает через php

Поскольку вы используете php, вы должны вызывать PhantomJS из вашего php-скрипта, как показано Вот где вам нужно указать полный путь к исполняемому файлу PhantomJS. Вы также можете использовать putenv расширить путь прямо из php, как видно Вот .
Вы можете вернуть что-то из скрипта PhantomJS в $output переменная exec а затем разобрать его.

Запуск через модуль веб-сервера

PhantomJS обеспечивает модуль веб-сервера . Вы можете написать скрипт, который прослушивает запросы, создает page по запросу и возвращает изображение. Вы бы как-нибудь запустили скрипт при запуске или вместе с apache. Также возможно написать оболочку, чтобы вы могли запускать ее как службу Windows. Может быть возможно передать запросы через Apache так, чтобы PhantomJS не был полностью открыт снаружи.
Хотя этот вариант немного коварен, потому что PhantomJS может потерпеть неудачу, и тогда вам понадобится какой-то механизм возрождения. Ваш скрипт также может столкнуться с утечкой памяти.

Возврат изображения

Обе вышеперечисленные опции не зависят от того, как вы возвращаете изображение. Есть несколько возможностей.

  1. По запросу создайте случайное и уникальное имя файла и render страница в файл. Затем вы можете отправить имя файла клиенту, который впоследствии может запросить его. Для этого нужны два запроса.
  2. По запросу сделать страницу через renderBase64 получить данные простого изображения. Теперь вы можете отправить эти данные изображения непосредственно в ответ, и клиент может поместить их в DOM через data: -uri .

Другие решения

Вот ответ из предложенного выше URL.
Я изменил его соответственно моим путям

Я пытаюсь запустить это, но это дает следующее

Массив ([0] => ‘.’ Не распознается как внутренний или внешний
команда, [1] => работающая программа или командный файл. )

в моей корневой папке (C: / xampp / htdocs) есть папка ScreenShotWeb, в которую я поместил EXE-файл PhantomJS + все файлы.

источник

Использование CasperJS/PhantomJS на Linux — сервере

PhantomJS – это возможность работать с WebKit из консоли используя JavaScript и без браузера. Для чего это нужно? Основное предназначение — парсить сайты, заполучив весь сгенерированный HTML — код, даже если DOM — дерево генерируют запросы и ответы AJAX или просто отскринить сайт целиком. Как правило, PHP не позволяет парсить динамически загружаемые страницы и отличным решением является метод, когда мы получаем сгенерированный DOM HTML страницы, сохранив в какой-то директории и далее вскармливаем его статическому PHP -парсеру.

CasperJS – вспомогательный инструмент написанный на JavaScript как обертка PhantomJS. На официальном сайте перечислены следующие основные возможности:

  • определение и порядок итераций браузера
  • заполнение и отправка форм
  • клик и переход по ссылкам
  • создание скриншотов страницы и ее части
  • удаленное тестирование DOM
  • логирование событий
  • загрузка ресурсов и подключение библиотек
  • написание функциональных тестов и сохранение в формате JUnit XML
  • Допиливание веб контента

CasperJS облегчает использование сложного и голого API PhantomJS, поэтому он и называется вспомогательным инструментом, который облегчает использование PhantomJS. Оба они устанавливаются в систему и вызываются из командной строки, через которую передаются параметры для ввода и вывода значений и результата, но мы можем вызывать их и из PHP через команды в функции exec(…), после чего можем отскринить, сохранять или статически допарсить полученный результат через инструменты PHP.

Установка PhantomJS

На момент написания статьи, а это дата 03.09.2017 актуальной версией была 2.1.1, поэтому, в последующем ссылки и версии могут меняться, проверить их можно на официальном сайте на странице загрузок PhantomJS.

Чтобы убедиться, что у нас все нормально установилось необходимо выполнить команду показа версии PhantomJS

И если установка прошла удачно, то эта команда вернет версии без каких-либо «варнингов» и «эрроров»

Установка CasperJS

CasperJS устанавливаем схожим образом, даже чуть полегче, если указать ссылку на GitHub

Чтобы убедиться, что у нас все отлично установилось выполним команду вывода версии

Выполняем операции CasperJS из PHP

Как уже писали, для выполнения команд PhantomJS нам нужно из PHP выполнять команды на системном уровне и для этого у нас есть специальная функция exec(…). Так как весь код PhantomJS через обертку CasperJS пишется на языке JavaScript, то полезно разделить логику работы, поделив задачи в отдельных файлах, поэтому создадим отдельный файл casper-script.js для написания кода запросов на JS и в итоге код на PHP для передачи и выполнения команд будет следующим

Читайте также:  Установка кресла inglesina moovy

В первом параметре передаем строку с командами для OS в котором через пробелы указываем первым сервис, вторым — скрипт на JavaScript для описания того, что должен PhantomJS делать через обертку CasperJS, третьим — URL адрес сайта или ресурса, над которым мы хотим совершать операции. Данная строка не фиксированна, поэтому, количество параметров строки может меняться. Далее у нас идут второй и третий параметры функции exec(…) для вывода результата выполнения.

Как видно выше путь к файлу casper-script.js указан абсолютным. По умолчанию, файлы, скриншоты после опрации будут сохранятся в текущей директории, где выполняется команда exec(). Для начала выполним обычную операцию и напишем в файле casper-script.js следующий код

Пример получения скриншота сайта на CasperJS/PhantomJS

Данный код демонстрирует получение скриншота сайта по его URL и сохранение в текущей директории

После выполнения скриншот будет сохранен под названием stackoverflow.png

Пример получения сгенерированного динамически DOM HTML — документа через CasperJS/PhantomJS

В данном примере получим первый аргумент из командной строки в виде URL, который надо заполучить и второй аргумент — путь и имя файла, в котором будет сгенерированный DOM HTML.

источник

Установка PhantomJS на общий хостинг (1and1)

Использование общего хостинга 1and1 linux,

PHP версия 7.0.27 PHP PhantomJS 2.1.1

PHP PhantomJS все значения равны null

Всякий раз, когда я делаю запрос с:

У меня есть куча значений null, и URL не обрабатывается phantomJS.

Он просто никогда не возвращает контент

струна(1413) «2018-02-25T22:31:25 [DEBUG] CookieJar — создано и будет храните файлы cookie в: «cookies.txt» 1 0x1b67967 /kunden/homepages/0/d220355082/htdocs/bitme/core/composer/bin/phantomjs() [0x1b67967] 2 0x1baaaf5 /kunden/homepages/0/d220355082/htdocs/bitme/core/composer/bin/phantomjs() [0x1baaaaf5] 3 0x198c463 /kunden/homepages/0/d220355082/htdocs/bitme/core/composer/bin/phantomjs() [0x198c463] 4 0x1ab3982 /kunden/homepages/0/d220355082/htdocs/bitme/core/composer/bin/phantomjs() [0x1ab3982] 5 0x79abb9 /kunden/homepages/0/d220355082/htdocs/bitme/core/composer/bin/phantomjs() [0x79abb9] 6 0x76b6f9 /kunden/homepages/0/d220355082/htdocs/bitme/core/composer/bin/phantomjs() [0x76b6f9] 7 0x750a5d /kunden/homepages/0/d220355082/htdocs/bitme/core/composer/bin/phantomjs() [0x750a5d] 8 0x41cd89 /kunden/homepages/0/d220355082/htdocs/bitme/core/composer/bin/phantomjs() [0x41cd89] 9 0x41f5c4 /kunden/homepages/0/d220355082/htdocs/bitme/core/composer/bin/phantomjs() [0x41f5c4] 10 0x415b86 /kunden/homepages/0/d220355082/htdocs/bitme/core/composer/bin/phantomjs() [0x415b86] 11 0x2b1fc0917b45 /lib/x86_64-linux-gnu/libc.so.6 (__libc _ start_main+0xf5) [0x2b1fc0917b45] 12 0x4176a1 /kunden/homepages/0/d220355082/htdocs/bitme/core/composer/bin/phantomjs() [0x4176a1] PhantomJS разбился. Пожалуйста, прочитайте руководство по сообщению об ошибках на http://phantomjs.org/bug-reporting.html и подать отчет об ошибке. Ошибка сегментации » int (0) NULL

Если я заменю phantomJS на последнюю загрузку,

Я получаю libicui18n.so.55 отсутствует зависимость

как я могу установить это с помощью Composer?

Обратите внимание, что это должно быть установлено на общей хостинговой машине, поэтому у меня нет доступа root / sudo на машине

Вся помощь приветствуется.

1 Ответ

Проверьте, работает ли ваша система SELinux (вы можете проверить это с помощью sestatus ) — она может (и будет) пытаться повредить PhantomJS, и это выглядит именно так.

Проверьте раздел » SELinux » на phantomjs.org/troubleshooting для официального решения.

Похожие вопросы:

Я делаю это в первый раз, поэтому мне нужна помощь. Я использую хостинг 1and1. Я хочу перенести домен из пакета общего хостинга на виртуальный сервер. Эта ссылка показывает, как перенести домен, но.

Я пытаюсь установить python на 1and1.com общую учетную запись хостинга linux. По этому адресу есть хороший гид: http://www.jacksinner.com/wordpress/?р=3 Однако я застрял на шаге 6, который является.

Не уверен, что кто-то использовал хостинг 1AND1 MS и столкнулся с проблемами с их уровнями доверия? Я просто пытаюсь отправить почту, используя system.net.mail в asp.net (который работает.

Я разместил свое приложение ASP.NET 4.5 на сервере 1and1 ( https://www.1and1.com ) (общий хостинг), и я использую состояние сеанса сервера SQL в качестве loadbalancer/webFarm. Но я столкнулся с.

Я пытаюсь разместить свой сайт на firebase через домен, который я покупаю через 1and1. 1and1 только дает мне возможность иметь одну запись, хотя мне нужно два, чтобы проверить через firebase. Это та.

и я прочитал кучу связанных сообщений здесь на SO и получил следующие идеи здесь: Во-первых, мой сайт является общим-размещен на 1and1.com. И моя цель-вызвать exec() в моем коде PHP, чтобы запустить.

В настоящее время у меня есть более 1000 посещений / день и хостинг на 1and1 с лимитом памяти PHP 30 МБ У меня есть динамическое руководство по покупкам с более чем 5000 предметов, и пользователи.

Кто-нибудь смог получить проект на основе NHibernate и запустить его на общем веб-узле? NHibernate делает много причудливых вещей с отражением за кулисами, но хост, который я использую в данный.

Я следую этому руководству , чтобы установить python 2.7.11 на общий хостинг CentOs (bluehost). Я получаю следующую ошибку во время установки фазы: (cd /home2/some_user/python/bin; ln -s python2.

источник

Добавить комментарий

Adblock
detector