Пакет chromedp
— это более быстрый и простой способ запуска браузеров, поддерживающих протокол Chrome DevTools, в Go без внешних зависимостей.
Устанавливаем обычным способом Go:
$ иди и возьми -u github.com/chromedp/chromedp
Обратитесь к справочнику по Go для получения документации и примеров. Кроме того, репозиторий примеров содержит больше примеров сложных действий и других распространенных задач высокого уровня, таких как создание снимков экрана всей страницы.
Я не вижу ни одного окна браузера Chrome
По умолчанию Chrome запускается в автономном режиме. См. DefaultExecAllocatorOptions
и пример переопределения параметров по умолчанию.
Я вижу ошибки «контекст отменен»
Когда соединение с браузером потеряно, chromedp
отменяет контекст, и это может привести к этой ошибке. Это происходит, например, если браузер закрыт вручную или если процесс браузера был остановлен или завершен иным образом.
Chrome закрывается, как только моя программа Go завершается
В Linux chromedp
настроен таким образом, чтобы избежать утечки ресурсов путем принудительного завершения всех запущенных дочерних процессов Chrome. Если вам нужно запустить долго работающий экземпляр Chrome, запустите Chrome вручную и подключитесь с помощью RemoteAllocator
.
Выполнение действия без
Run
приводит к «недопустимому контексту».
По умолчанию контекст chromedp
не имеет исполнителя, однако при необходимости его можно указать вручную; см. пример проблемы № 326.
Я не могу использовать
Action
сRun
поскольку оно возвращает много значений.
Оберните его с помощью ActionFunc
:
ctx, cancel := chromedp.NewContext(context.Background())defer cancel()chromedp.Run(ctx, chromedp.ActionFunc(func(ctx context.Context) error { _, err := domain.SomeAction().Do (ctx) вернуть ошибку}))
Я хочу использовать chromedp в безголовой среде
Самый простой способ — запустить программу Go, которая использует chromedp внутри образа chromedp/headless-shell. Этот образ содержит headless-shell
, меньшую версию Chrome без заголовка, которую chromedp
может найти прямо из коробки.
headless-shell
— сборка headless-shell
, которая используется для тестирования chromedp
chromedp: новый способ управления Интернетом – доклад GopherCon SG 2017
Протокол Chrome DevTools - Справочник по протоколу Chrome DevTools
примеры chromedp — более сложные примеры для chromedp
github.com/chromedp/cdproto
— ссылка Go для сгенерированного API протокола Chrome DevTools.
github.com/chromedp/pdlgen
— инструмент, используемый для создания cdproto
github.com/chromedp/chromedp-proxy
— простой прокси-сервер CDP для регистрации клиентов и браузеров CDP.