O pacote chromedp
é uma maneira mais rápida e simples de conduzir navegadores que suportam o protocolo Chrome DevTools em Go sem dependências externas.
Instale da maneira usual do Go:
$ vá buscar -u github.com/chromedp/chromedp
Consulte a referência Go para documentação e exemplos. Além disso, o repositório de exemplos contém mais exemplos de ações complexas e outras tarefas comuns de alto nível, como fazer capturas de tela de página inteira.
Não consigo ver nenhuma janela do navegador Chrome
Por padrão, o Chrome é executado no modo headless. Consulte DefaultExecAllocatorOptions
e um exemplo para substituir as opções padrão.
Estou vendo erros de "contexto cancelado"
Quando a conexão com o navegador é perdida, chromedp
cancela o contexto e isso pode resultar neste erro. Isso ocorre, por exemplo, se o navegador for fechado manualmente ou se o processo do navegador tiver sido eliminado ou encerrado de outra forma.
O Chrome sai assim que meu programa Go termina
No Linux, chromedp
é configurado para evitar o vazamento de recursos, eliminando à força qualquer processo filho do Chrome iniciado. Se você precisar iniciar uma instância do Chrome de longa duração, inicie manualmente o Chrome e conecte-se usando RemoteAllocator
.
Executar uma ação sem
Run
resulta em "contexto inválido"
Por padrão, um contexto chromedp
não possui um executor, porém um pode ser especificado manualmente, se necessário; veja a edição nº 326 para ver um exemplo.
Não consigo usar uma
Action
comRun
porque ela retorna muitos valores
Envolva-o com um ActionFunc
:
ctx, cancelar:= chromedp.NewContext(context.Background())defer cancel()chromedp.Run(ctx, chromedp.ActionFunc(func(ctx context.Context) erro { _, err := domínio.SomeAction().Do (ctx) retornar err}))
Quero usar o chromedp em um ambiente sem cabeça
A maneira mais simples é executar o programa Go que usa chromedp dentro da imagem chromedp/headless-shell. Essa imagem contém headless-shell
, uma versão menor e sem cabeça do Chrome, que chromedp
é capaz de descobrir imediatamente.
headless-shell
- Uma versão do headless-shell
usada para testar chromedp
chromedp: Uma nova maneira de impulsionar a Web - palestra GopherCon SG 2017
Protocolo Chrome DevTools - referência do protocolo Chrome DevTools
exemplos chromedp - Exemplos mais complicados para chromedp
github.com/chromedp/cdproto
- Referência Go para a API gerada do protocolo Chrome DevTools
github.com/chromedp/pdlgen
- ferramenta usada para gerar cdproto
github.com/chromedp/chromedp-proxy
- um proxy CDP simples para registrar clientes e navegadores CDP