Перейти к содержимому

Сборщик сценариев

Автоматизация без кода

Соберите сценарий из шагов и запустите его сразу на многих профилях. Каждый шаг идёт внутри браузера профиля, с его отпечатком, куки и прокси.
19
Видов шагов
4 уровня
Глубина вложенности
до 8 за прогон
Профилей одновременно
100 на профиль за прогон
Снимков экрана

Из чего состоит сценарий

У сценария есть имя, список шагов по порядку, свои переменные и выбранные профили. Всё это принадлежит самому сценарию, а выбор переживает перезапуск программы.

Сценарии лежат на вашем компьютере, в папке данных программы, и на macOS и Linux читать их может только ваша учётная запись. В шагах часто стоит логин или значение формы.

Видов шагов сегодня девятнадцать: тринадцать простых и шесть для работы посложнее. Посложнее это ветвление, обход списка, вкладки, куки, свой JavaScript и ожидание сетевого запроса.

ШагЧто делает
Перейти по URLОткрывает адрес в текущей вкладке
ОжиданиеЖдёт заданное время или появления элемента
КликПодводит элемент к виду и нажимает его середину
Ввод текстаСтавит курсор в поле, чистит его и печатает значение
Набрать как человекПечатает значение по буквам настоящими нажатиями клавиш, с паузами между ними и, если попросить, с опечатками, которые тут же стираются
ПрокруткаПрокручивает на столько-то точек или до элемента
Извлечь текстКладёт текст элемента в переменную
Снимок экранаСохраняет PNG страницы
Нажать клавишуПосылает странице одно нажатие
Случайная задержкаЖдёт случайное время между двумя границами
ПовторВыполняет своё тело заданное число раз
Профиль: заметка, теги, статусДописывает или заменяет заметку, добавляет или снимает теги, ставит статус профилю, на котором идёт проход
Записать в файлПишет строку прогона в файл TXT, CSV, XLSX или JSON в папке данных сценария
Если / иначеПроверяет страницу или переменную и идёт одной из двух сторон
Для каждого элементаВыполняет тело по разу на каждый найденный элемент
Управление вкладкамиОткрывает, переключает или закрывает вкладку того же профиля
КукиЧитает, пишет и удаляет куки этой сессии, чистит куки текущего адреса
Выполнить JavaScriptВыполняет ваш код в странице и кладёт результат в переменную
Ждать запросЖдёт, пока страница запросит названный вами адрес
Экран «Сценарии», где сценариев ещё нет, и кнопка, которая создаёт первый.
Экран «Сценарии», пока пустой: кнопки «Создайте первый сценарий», «Импорт сценария», «Обновить из аккаунта» и «Папка со снимками».

Шаги вы добавляете руками

Записи ваших действий здесь нет. Каждый шаг вы добавляете через форму: выбрать вид, заполнить нужные поля, сохранить.

Пока вы правите, вам сразу видно поломки, которые иначе вылезли бы посреди прогона на живом аккаунте. Клик без цели, ожидание без времени и без элемента, извлечение без переменной.

Каждое замечание называет номер шага, и ошибку вы отличите от предупреждения сразу. Сохранить можно и так: незаконченный сценарий это нормальная рабочая ситуация.

Что уезжает вместе со сценарием

Выгрузка уносит один файл JSON и нарочно оставляет за бортом введённые значения, значения куки и значения переменных: там живут логины. Имена переменных остаются, и ссылки {{имя}} тоже, поэтому получатель видит, что ему заполнить. Загрузкой вы всегда заводите новый сценарий, а не затираете чужой, и вам сразу говорят, сколько шагов при этом отброшено.

Переменные под каждый профиль

В любое текстовое поле шага можно вписать {{имя}}. При запуске каждый профиль подставит туда своё значение, а неизвестное имя даст пустую строку, а не ошибку.

Каждый профиль набирает свои значения из трёх слоёв: значения самого сценария, встроенные поля профиля, ваши правки под выбранными профилями. Так один сценарий входит в двадцать аккаунтов, а не двадцать копий сценария.

Имя переменной вы пишете любым письмом, на всех 22 языках программы. Прочитанный со страницы текст тоже ложится в переменную, до 4000 знаков, а в журнале шаг ввода текста показывает точки вместо значения из переменной.

  • profile.name

    Имя профиля, каким оно стоит в вашем списке.

  • profile.id

    Номер профиля, тот же, что называет местный API.

  • profile.group

    Группа, в которой лежит профиль.

  • profile.totp

    Одноразовый код из собственного ключа профиля, вычисленный в миг подстановки, а не в начале прогона.

  • now

    Дата и время с поясом этого компьютера, в миг подстановки.

Циклы и ветвления

Повтор выполняет своё тело от 1 до 1000 раз. В счёт идут сами шаги, а не обёртка вокруг них, поэтому полоса хода показывает настоящую работу.

Ветвление проверяет страницу или переменную и выполняет только победившую сторону. Какая сторона победит, заранее не знает никто, поэтому полоса хода досчитывает шаги по дороге и доходит до конца, а не встаёт раньше времени.

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

Много профилей одна очередь

Одновременность бывает 1, 2, 3, 5 или 8. Больше профилей разом, чем стоит в настройке «Браузеров одновременно» на экране «Движок», не пойдёт: число считано по памяти этой машины, и вы можете поставить своё.

Упёршись в предел, профиль ждёт свободного места, а не уходит в провал. Ждёт он до получаса, пробуя каждые пять секунд, и только потом вы увидите отказ.

Можно уйти на другой сценарий: прогон идёт дальше, а сверху едет полоска с кнопкой «Остановить». Нажмите её посреди цикла: прогон доделает текущий шаг и на нём остановится, а не оборвётся посреди действия.

Одновременность
1, 2, 3, 5, 8
Профилей открыто разом
не больше, чем «Браузеров одновременно»
Браузеров одновременно
(память минус 3 ГБ) по гигабайту, снизу 4, сверху 32
Ожидание места
опрос каждые 5 с, до 30 мин
Журнал шагов
600 строк хранится, в окно идут последние 400, видны последние 120

Эти числа сняты с работающей программы, а число «Браузеров одновременно» она считает по памяти вашей машины.

Когда шаг не удался

Упавший шаг вы увидите в журнале с ошибкой, и счёт провалов у профиля вырастет. Что профиль делает дальше, решает правило сценария, и строка прямо над кнопкой «Запустить сценарий» называет его у открытого сценария: новый сценарий останавливает этот профиль на упавшем шаге, а остальные профили идут дальше. Сценарий, сделанный в прежней версии ARMANOS, работает как работал, и профиль берётся за следующий шаг.

«Готово» значит «сделано то, что написано». Если у профиля провалился хоть один шаг, профиль помечен провалом с числом, а вместе с ним провален и весь прогон.

Это число честное и на длинном прогоне: журнал хранит только последние строки, а счёт провалов идёт отдельно от него. Знакомые ошибки вы прочитаете на своём языке, а всё прочее показано ровно так, как пришло.

Отладка, отмена и повтор

«Отладка отсюда» у шага запускает сценарий на одном профиле с этого шага, с кнопками «Пауза», «Один шаг» и «Продолжить». Упавший шаг останавливает отладку; поправьте его, и «Продолжить отсюда» пойдёт дальше на той же открытой странице с теми же переменными.

«Отменить» и «Повторить» над шагами возвращают любую правку сценария, до 100 шагов, привычными Cmd или Ctrl+Z. Выбор профилей не отменяется.

Чем сценарий правит браузером

ARMANOS Browser это отдельный процесс Chromium, и сценарий ведёт его по каналу отладки на петле. Встроенным движком сценарий правит через его собственное окно, но шаг вы пишете один раз: какой движок под ним, на шаге не сказывается.

Область, которую читает страница, не включается

Из протокола отладки ARMANOS не включает Runtime.enable: от неё движок ставит зацепки, которые код страницы способен заметить. Сценарию она и не нужна: готовность страницы он спрашивает сам, а не подписывается на события.

Движок в этой таблице
ARMANOS Browser 153.0.7978.0
Runtime.enable
не вызывается никогда
Page.enable
на время прогона сценария, на его вкладках, чтобы ответить на alert или confirm страницы; и на вкладках профиля, у которого место рядом с прокси или свои координаты, пока у движка нет своего поставщика места
Network.enable
с первого шага ожидания запроса, на вкладках профиля
Заголовок Origin при рукопожатии
не посылается

Зацепки Runtime.enable и ищут известные приёмы со временем разбора и с выводом в консоль. Заголовка Origin ARMANOS не посылает: за него движок потребовал бы лишний ключ в командной строке, а её видит любая программа машины.

Что это даёт и чего не даёт

Выключенная область убирает одну примету, которую страница читает напрямую. О поведении это не говорит ничего: скорость, порядок, объём и час запуска по-прежнему на вас, и сценарий, нажимающий тридцать одинаковых кнопок за тридцать секунд, выглядит ровно так.

Запуск по расписанию

Расписание принадлежит сценарию и называет профили, время и сколько профилей идут разом, до пяти. Ежедневно в такое-то время, по выбранным дням недели или каждые N часов.

Время местное, поэтому после перевода часов девять утра остаётся девятью утра. Пропущенные запуски вы увидите числом, и пачкой вдогонку они не пойдут.

Расписание срабатывает, только пока программа открыта, и окно говорит об этом прямо. Профиль, открытый прямо сейчас, оно не трогает.

Как поставить расписание

  1. 1

    Выберите сценарий

    Нажмите кнопку с часами в его строке списка.

  2. 2

    Выберите время

    Ежедневно, по дням недели или каждые N часов, по местному времени.

  3. 3

    Выберите профили

    Отметьте их и укажите, сколько идут одновременно.

  4. 4

    Прочитайте итог

    В строке видно последний прогон, его исход и число пропусков.

Чего это не делает

  • Записи действий здесь нет. Программа не следит за вашими нажатиями и не превращает их в шаги, каждый шаг вы добавляете руками через форму.
  • Сценарий это скрипт, а не человек. Он повторяет написанное с заданными паузами, а сайт, сменивший вёрстку, ломает селектор.
  • Капчу не разгадывает, картинки не распознаёт, обучаемых шагов нет. Если сайт задаёт человеческий вопрос, сценарий на нём встанет.
  • Расписание работает, только пока открыта программа. Служб в системе мы не ставим, закрытый ноутбук пропускает запуски, а пропущенное никогда не выполняется пачкой.
  • Выключенные области отладки убирают одну примету. Это не утверждение об обнаружении вообще, и здесь ничто не обещает, что площадка примет ваш прогон за человека.

Как проверить

Каждое утверждение, файл, который его выполняет, и стенд, который его стережёт.

Шаг перехода не пускает схемы вроде file и javascript, и адрес проверяется ещё раз при запуске, после подстановки переменных
apps/desktop/src/lib/rpa.js · apps/desktop/test/rpa-reach.js
Экран «Сценарии» называет поломки до прогона и никогда не запрещает сохранение
apps/desktop/src/lib/flowCheck.js · apps/desktop/test/flow-check.js
«Готово» значит, что шаги отработали: профиль с провалившимся шагом помечен провалом по счётчику, а не по обрезанному журналу
apps/desktop/src/main/main.js · apps/desktop/test/run-result-honest.js
Новый сценарий останавливает профиль на упавшем шаге, сценарий из прежней версии берётся за следующий, а строка над кнопкой «Запустить сценарий» называет правило
apps/desktop/src/lib/исполнитель-графа.js · apps/desktop/test/граф-исполнитель.js · apps/desktop/test/сценарий-графом-в-окне.js
Прогон, упёршийся в число «Браузеров одновременно», ждёт места, а не записывает профиль в провал
apps/desktop/src/main/main.js · apps/desktop/test/сценарий-ждёт-места.js
Сценарий вправду идёт на ARMANOS Browser по каналу отладки, и Runtime.enable не зовётся ни разу
apps/desktop/src/lib/cdp.js · apps/desktop/src/lib/forkPage.js · apps/desktop/test/области-отладки.js

Вопросы

Куда попадают снимки экрана?
В папку внутри данных программы, созданную так, что на macOS и Linux читает её только ваша учётная запись, до 100 снимков на профиль за прогон. Кнопка в шапке карточки прогона открывает эту папку, поэтому файлы доступны и после перезапуска.
Сколько сценариев и шагов помещается в файл?
Двести сценариев, пятьсот шагов в одном списке и не больше четырёх уровней вложенности. Пределы стоят затем, чтобы правленный руками или привезённый файл не заставил программу считать бесконечно.
Может ли мой код подвесить прогон?
Нет. У шага со своим кодом стоит предел, по умолчанию шестьдесят секунд, поэтому неотвечающий код страницы кончается обычной ошибкой шага.
Работает ли сценарий на мобильном профиле?
Да. На мобильном профиле шаг клика посылает касание, а не нажатие мыши, и это замерено на живом окне, а не предположено.
Что будет с расписанием, приехавшим из аккаунта?
На этой машине оно ложится выключенным, чтобы две открытые копии программы не запустили один сценарий дважды. Включите его одной кнопкой в списке расписаний.

Соберите один сценарий и запустите его на десяти профилях

Экран «Сценарии», журнал шагов и расписание живут в самой программе. Ничто из сценария не покидает ваш компьютер, пока вы не выгрузите его сами или не отправите в аккаунт.