Глоссарий
Puppeteer
Puppeteer это открытая библиотека на Node, которая ведёт браузер Chromium по его собственному управляющему каналу.
Что это за библиотека
Это пакет для Node, который говорит с браузером по его управляющему протоколу напрямую. Именно поэтому он умеет взять на себя браузер, запущенный кем-то другим.
Только Node
Библиотека написана для JavaScript и TypeScript, и обычного издания для других языков у неё нет.
Два пакета, одна библиотека
Одно издание тащит с собой собственный браузер, второе не тащит ничего. Описанная здесь дорога просит второе.
Говорит с браузером напрямую
Приказы идут по собственному каналу браузера, и это позволяет ей подключиться к окну, которого она не открывала.
Как подключить её к профилю здесь
Профиль открывает программа и отвечает адресом. Ваш сценарий подключается к этому адресу так же, как подключился бы к любому другому браузеру.
- 1
Включите локальный API
Он выключен, пока вы не нажмёте в программе «Для программистов > Включить локальный API», а после этого экран покажет адрес и токен доступа.
- 2
Попросите программу открыть профиль
Вызов называет профиль и несёт токен доступа, а в ответе приходит адрес гнезда именно для этого профиля.
- 3
Подключитесь к этому адресу
Библиотека цепляется к работающему окну, и уже открытая вкладка становится первой страницей сценария.
Ваш браузер прямо сейчас
Значения взяты из того браузера, в котором вы это читаете. У ведомого браузера первая строка истинна, пока эту примету не снимут при запуске.
Ваша машина прямо сейчас
- navigator.webdriver
- измеряем на вашей машине
- User agent
- измеряем на вашей машине
- Платформа
- измеряем на вашей машине
Прочитано в вашем браузере и показано здесь. Никуда не отправляется.
Запустить или подключиться
Издание со своим браузером открыло бы этот свой браузер вместо вашего профиля. А отпечаток, прокси и куки живут в том профиле, который открывает программа.
Движок запускаем мы
Ключи запуска несут зерно профиля, прокси и каталог данных, и собирает их сама программа.
Адрес принадлежит одному профилю
На ARMANOS Browser браузер пишет его в собственный каталог этого профиля, и до других профилей адрес не достаёт.
Окно уже обставлено
Профиль открывается со своей стартовой страницей, поэтому сценарий встречает открытую вкладку, а не пустой браузер.
Что включает подключение
Библиотека включает две заметные области сразу, как только подключилась. Эти области ставят внутри Chromium наблюдателей, которых код страницы умеет замечать.
Сценарии с экрана «Сценарии» в программе не включают их никогда, и ради этого экран и стоит рядом с описанной дорогой.
Сказать раньше, чем это скажет площадка
Часто путают с этим
Playwright
Библиотека помоложе, с тремя семействами браузеров и несколькими языками. Подключается она здесь той же дорогой.
Панель разработчика
Панель внутри браузера говорит по тому же протоколу. Но это человек смотрит, а не программа действует.
Расширение браузера
Расширение живёт в мире страницы и достаёт только до того, что браузер сам решил ему отдать.
Чего это не делает
- Она не приезжает вместе с ARMANOS. Библиотеку вы ставите и обновляете сами, а программа её не скачивает и не закрепляет на версии.
- Она не открывает ваш профиль за вас. Издание со своим браузером открыло бы этот браузер, а профиль остался бы нетронутым вместе со своим отпечатком и прокси.
- Она не прячет того, что включает. Две заметные области включаются при подключении, и площадка, которая ищет этих наблюдателей, найдёт их при любом отпечатке.
- Она не переживает окно. Адрес умирает вместе с профилем, которому принадлежит, поэтому долгий сценарий каждый раз просит у программы свежий.
Проверить
За каждой строкой выше стоит файл, который можно открыть, и стенд, который его держит.
- Рабочий пример, который открывает профиль и подключается к нему
- apps/web/test/страница-автоматизации.js
- Ключи запуска, несущие зерно, прокси и каталог данных
- apps/desktop/src/lib/forkEngine.js
- Признак управления читается с настоящей страницы в настоящем движке
- apps/desktop/test/webdriver-flag.js
- Ход, который открывает профиль и отвечает его адресом
- apps/desktop/src/lib/local-api.js · apps/desktop/test/local-api-gate.js
Вопросы
- Какое издание библиотеки ставить?
- То, которое не несёт своего браузера. Второе скачает браузер и откроет его, и ни одна настройка вашего профиля к нему не применится.
- Программа обязана быть открыта?
- Да. Адрес принадлежит окну профиля, а локальный API, который его выдаёт, это часть программы.
- Может ли один сценарий держать сразу несколько профилей?
- Да, в рамках предела открытых окон. Это число программа выводит из памяти вашей машины, вы можете задать его сами, а запуск сверх него возвращает отказ, где названо, сколько профилей уже открыто.
- Увидит ли сайт флаг автоматизации, если вести профиль скриптом?
- Открытый управляющий канал его поставил бы, а ключ запуска снимает его обратно. Значение читают с настоящей страницы в настоящем движке, а не берут на веру.
- Может ли прогон идти без окна?
- Да. Отдельный запуск можно попросить провести без окна, а когда не просят ни о чём, решает настройка самого профиля.
Рядом с этим
Playwright
Вторая библиотека, три семейства браузеров, та же дорога внутрь.
Автоматизация браузера
Что шлёт управляющий и какие три вещи выдают прогон.
Chrome DevTools Protocol
Канал под обеими библиотеками и кто ещё до него достаёт.
Подключить свой код
Рабочий пример на Node, готовый к переносу и запуску.
Подключите свой сценарий к настоящему профилю
Включите локальный API, откройте профиль из кода и подключитесь к адресу, который придёт в ответ.