Глоссарий
Puppeteer
Puppeteer это открытая библиотека на Node, которая ведёт браузер Chromium по его собственному управляющему каналу.
Что это за библиотека
Это пакет для Node, который говорит с браузером по его управляющему протоколу напрямую. Именно поэтому он умеет взять на себя браузер, запущенный кем-то другим.
Только Node
Библиотека написана для JavaScript и TypeScript, и обычного издания для других языков у неё нет.
Два пакета, одна библиотека
Одно издание тащит с собой собственный браузер, второе не тащит ничего. Описанная здесь дорога просит второе.
Говорит с браузером напрямую
Приказы идут по собственному каналу браузера, и это позволяет ей подключиться к окну, которого она не открывала.
Как подключить её к профилю здесь
Профиль открывает программа и отвечает адресом. Ваш сценарий подключается к этому адресу так же, как подключился бы к любому другому браузеру.
- 1
Включите локальный интерфейс
Он выключен, пока вы не включите его в окне программы, а после этого экран покажет адрес и пропуск.
- 2
Попросите программу открыть профиль
Вызов называет профиль и несёт пропуск, а в ответе приходит адрес гнезда именно для этого профиля.
- 3
Подключитесь к этому адресу
Библиотека цепляется к работающему окну, и уже открытая вкладка становится первой страницей сценария.
Ваш браузер прямо сейчас
Значения взяты из того браузера, в котором вы это читаете. У ведомого браузера первая строка истинна, пока эту примету не снимут при запуске.
Ваша машина прямо сейчас
- Признак управления
- измеряем на вашей машине
- Строка браузера
- измеряем на вашей машине
- Платформа
- измеряем на вашей машине
Прочитано в вашем браузере и показано здесь. Никуда не отправляется.
Запустить или подключиться
Издание со своим браузером открыло бы этот свой браузер вместо вашего профиля. А отпечаток, прокси и печенье живут в том профиле, который открывает программа.
Движок запускаем мы
Ключи запуска несут зерно профиля, прокси и каталог данных, и собирает их сама программа.
Адрес принадлежит одному профилю
На основном движке браузер пишет его в собственный каталог этого профиля, и до других профилей адрес не достаёт.
Окно уже обставлено
Профиль открывается со своей стартовой страницей, поэтому сценарий встречает открытую вкладку, а не пустой браузер.
Что включает подключение
Библиотека включает две заметные области сразу, как только подключилась. Эти области ставят внутри 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
Вопросы
- Какое издание библиотеки ставить?
- То, которое не несёт своего браузера. Второе скачает браузер и откроет его, и ни одна настройка вашего профиля к нему не применится.
- Программа обязана быть открыта?
- Да. Адрес принадлежит окну профиля, а локальный интерфейс, который его выдаёт, это часть программы.
- Может ли один сценарий держать сразу несколько профилей?
- Да, в рамках предела открытых окон. Это число программа выводит из памяти вашей машины, вы можете задать его сами, а запуск сверх него возвращает отказ, где названо, сколько профилей уже открыто.
- Ставит ли управление профилем признак автоматизации?
- Открытый управляющий канал его поставил бы, а ключ запуска снимает его обратно. Значение читают с настоящей страницы в настоящем движке, а не берут на веру.
- Может ли прогон идти без окна?
- Да. Отдельный запуск можно попросить провести без окна, а когда не просят ни о чём, решает настройка самого профиля.
Рядом с этим
Playwright
Вторая библиотека, три семейства браузеров, та же дорога внутрь.
Автоматизация браузера
Что шлёт управляющий и какие три вещи выдают прогон.
Chrome DevTools Protocol
Канал под обеими библиотеками и кто ещё до него достаёт.
Подключить свой код
Рабочий пример на Node, готовый к переносу и запуску.
Подключите свой сценарий к настоящему профилю
Включите локальный интерфейс, откройте профиль из кода и подключитесь к адресу, который придёт в ответ.