Скрипты PHP в Human Emulator Studio

Скрипт Human Emulator — это не userscript в Chrome и не макрос Selenium «снаружи». Он выполняется движком программы на Windows и дергает встроенный Chromium или Firefox через локальный порт. Поэтому «скопировал PHP с сайта и вставил в браузер» не сработает: нужен Studio (или RT для уже готового файла).

Схема: скрипт PHP, шаблон Templates, порт, встроенный браузер Chromium или Firefox

С чего начать

Поставьте официальное демо 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:

  1. в настройках Studio верно указан путь к папке с PHP;
  2. php.exe из этой папки запускается с диска вручную;
  3. стоят .NET Framework и Visual C++ Redistributable (2008/2010/2012 — по версии PHP, либо все сразу);
  4. если 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.