Скрипты PHP в Human Emulator Studio
Скрипт Human Emulator — это не userscript в Chrome и не макрос Selenium «снаружи». Он выполняется движком программы на Windows и дергает встроенный Chromium или Firefox через локальный порт. Поэтому «скопировал PHP с сайта и вставил в браузер» не сработает: нужен Studio (или RT для уже готового файла).
С чего начать
Поставьте официальное демо Studio. В установке есть папка Tests Samples — живые примеры. Синтаксис объектов — в документации humanemulator.net. Короткие ответы — в FAQ по PHP; здесь — как устроена схема и где обычно ломается.
Языки в Studio: PHP, C#, JavaScript, Python. PHP берут чаще всего: много примеров, привычные циклы и файлы. Сценарий под ключ заказывают в отделе продаж или у партнёров.
Порт, шаблон и минимальный заголовок
При старте программа поднимает браузер и слушает команды на порту. Номер виден в левом верхнем углу окна и в настройках (F9). В шаблоне (файл вроде xweb_human_emulator.php из папки Templates) тот же порт должен совпадать. Иначе команды «ломятся» не туда, и кажется, что PHP «не работает». Это же позволяет держать Studio на одной машине, а скрипт вызывать с другой — порт тогда задаёте явно.
В шаблоне обычно задают $xhe_host вида 127.0.0.1:7010 (порт ваш, не копируйте чужой наугад) и подключают API. В новых сборках порт можно брать из окружения процесса, чтобы не ловить рассинхрон при смене порта:
$xhe_host = getenv("RPABOT_HOST_URL");
if (!$xhe_host) {
$xhe_host = "127.0.0.1:7010"; // подставьте порт из окна Studio
}
require("Templates/xweb_human_emulator.php");
Заголовок в старых сборках Free описывали отдельно; актуальный движок — Chromium/Firefox в Studio, не Internet Explorer. Общая логика порта та же.
Объекты, функции, циклы
Объекты эмулятора ($browser, $app, DOM-интерфейсы) в своих функциях нужно объявлять через global, либо один раз прописать их в подключаемом шаблоне. Иначе внутри функции «не видно» $input и клик «просто не происходит».
function login_example($email, $password)
{
global $anchor, $input, $form, $browser, $webpage;
$browser->navigate("https://example.com/login");
$browser->wait_js();
$input->set_by_name("email", $email);
$input->set_by_name("password", $password);
$form->submit_by_name("login");
return (strpos($webpage->get_body(), "Выход") !== false);
}
Циклы — обычный PHP (for, foreach, while): отдельного «языка Хумана» для повторов нет. Учебник циклов PHP подойдёт любой; в скрипте вы просто вызываете объекты Studio внутри тела цикла.
Пауза, ожидание страницы, клавиатура
Пауза: $app->pause($timeout). Ноль секунд — ждать человека; иначе сон на заданное число секунд. После navigate страница часто ещё догружает JS: в FAQ по браузеру разобраны wait_js, sleep и ожидание элемента DOM. Если этого не сделать, скрипт решит, что «уже всё», и упадёт на несуществующей кнопке.
Модификаторы клавиатуры задаёт сам скрипт объектом $keyboard. Ctrl+A:
$keyboard->set_ctrl_prefix(true);
$keyboard->key("a");
$keyboard->set_ctrl_prefix(false);
То же для Alt и Shift: set_alt_prefix, set_shift_prefix. Комбинацию Ctrl+Alt+Del Windows пользовательским программам не отдаёт — её эмулировать нельзя.
Свой PHP, MySQL и CreateProcess failed
В дистрибутиве уже лежит настроенный PHP. Минимум без которого браузерные команды не поедут — библиотека Curl. Свой интерпретатор подключают через php.ini и папку ext (раскомментировать нужную dll). Вернуться на встроенный PHP можно в любой момент.
База данных — обычный PHP рядом с объектами браузера: PDO или mysqli после включения расширения в php.ini. Старый mysql_connect из древних статей лучше не копировать в новый PHP.
Если программа пишет CreateProcess failed. Please install PHP correctly:
- в настройках Studio верно указан путь к папке с PHP;
php.exeиз этой папки запускается с диска вручную;- стоят .NET Framework и Visual C++ Redistributable (2008/2010/2012 — по версии PHP, либо все сразу);
- если exe всё равно не стартует — журнал приложений Windows, не «случайный патч php.exe».
Пути, include и запуск другого скрипта
В абсолютных путях Windows: обратный слэш всегда удваивают (C:\\work\\script.php), прямой — один (C:/work/script.php).
Подключить другой файл как часть того же сценария — include/require. Запустить отдельный скрипт на той же машине — команда XHE run_script. Для RT важна только готовность файла и порт, редактор не нужен.
Прокси и капча из того же скрипта
Прокси: $browser->enable_proxy — пост про прокси и FAQ. Капча в своих формах — пост про API. Официальный файл, если сомневаетесь: где скачать.
Не стартует скрипт или порт «не тот» — поддержка: версия Studio, язык, кусок лога без паролей.
Актуальные ответы на сайте: FAQ: PHP · браузер · FAQ · демо · журнал изменений
Актуальные ответы на сайте (не устаревший пост):
Comments are closed.