O que é o WebDriver BiDi? Automação Bidirecional do Navegador
O Browser de Scraping Sem Raspagem fornece infraestrutura de navegador gerenciada para clientes de automação cujos requisitos de protocolo e evento foram verificados com o serviço.
Resumo
- WebDriver BiDi é um protocolo de automação de navegador bidirecional. Ele usa uma conexão WebSocket para que os clientes possam enviar comandos assíncronos e os navegadores possam emitir eventos assinados em tempo real.
- BiDi estende a família WebDriver. Ele mantém conceitos de sessão e capacidade enquanto adiciona módulos, comandos, eventos, assinaturas, contextos de navegação, reinos e contextos de usuário.
- BiDi aborda a lacuna de eventos do WebDriver clássico. Entradas de console, atividade de rede, alterações de contexto e outros sinais podem fluir do navegador para o cliente sem polling contínuo.
- BiDi não é apenas um CDP renomeado. Ele visa a padronização entre navegadores, enquanto o CDP é um protocolo específico do Chrome com uma superfície de depuração do Chrome mais ampla e estabelecida.
- O suporte é recurso por recurso. A especificação permanece como um Rascunho de Trabalho do W3C, e implementações de navegador e cliente podem cobrir módulos e comandos diferentes a qualquer momento.
WebDriver BiDi adiciona um Canal de Evento Ao Vivo ao Controle do Navegador
O WebDriver clássico é construído em torno de solicitações discretas do cliente e respostas remotas. Esse modelo lida bem com navegação, entrada, elementos, janelas, cookies, capturas de tela e scripts, mas o navegador moderno é orientado a eventos. Solicitações de rede começam e terminam, logs aparecem, contextos de navegação abrem ou fecham, diálogos aparecem, downloads começam e scripts são executados independentemente do próximo comando do cliente. O WebDriver BiDi cria uma conexão bidirecional persistente para que o cliente possa assinar essas mudanças e recebê-las à medida que ocorrem.
Especificação WebDriver BiDi do W3C define o WebDriver BiDi como um mecanismo para controle remoto de agentes de usuário e explica que a comunicação bidirecional combina melhor com a natureza orientada a eventos do DOM do navegador. O documento está na trilha de Recomendação do W3C, mas permanece como um Rascunho de Trabalho. Portanto, projetos de produção devem tratar a especificação mais recente e implementações atuais como superfícies em movimento e verificar cada módulo necessário.
Comandos, Resultados, Erros e Eventos Compartilham Um WebSocket
Uma mensagem BiDi identifica um método, como um comando de módulo, e carrega parâmetros. Comandos têm identificadores controlados pelo cliente, assim resultados ou erros podem ser correspondidos mesmo quando várias operações são executadas simultaneamente e terminam fora de ordem. Eventos carregam um nome de método e dados, mas não são respostas a um comando específico. O cliente assina nomes de eventos, opcionalmente limitados a contextos de navegação ou de usuário, e pode cancelar a assinatura quando o sinal não for mais necessário.
Referência WebDriver BiDi do MDN descreve o BiDi como uma variante do WebDriver baseada em WebSocket e orientada a eventos e fornece páginas de referência para módulos, comandos e eventos. A conexão persistente muda a arquitetura do cliente: despacho de mensagens, duração da assinatura, ordenação, bufferização e limpeza tornam-se preocupações explícitas. Um cliente não deve presumir que a ordem de chegada dos eventos sozinha prova o estado final do negócio da aplicação.
- Módulo. Um namespace agrupa comandos e eventos relacionados, como sessão, navegador, contexto de navegação, rede, script, log, armazenamento ou entrada.
- Comando. Uma solicitação assíncrona do cliente leva um identificador, método e parâmetros e posteriormente recebe um resultado ou erro correspondido.
- Evento. Uma notificação originada no navegador reporta atividade assinada sem estar vinculada a uma nova solicitação do cliente.
- Assinatura. O cliente seleciona os nomes dos eventos e contextos adicionais que deseja que a extremidade remota emita.
- Contexto e reino. Contextos de navegação representam abas ou frames, enquanto reinos de script representam ambientes de execução dentro desses contextos.
O BiDi pode começar através de uma Sessão WebDriver ou um Caminho Somente BiDi
Um cliente pode solicitar a capacidade da URL WebSocket ao criar uma sessão WebDriver. Uma extremidade remota que oferece suporte retorna uma URL de conexão e marca a sessão como habilitada para BiDi. A especificação também permite que implementações exponham sessões somente BiDi através de uma URL de conexão fora da banda. Uma vez conectado, o cliente pode gerenciar assinaturas e emitir comandos de módulo. O caminho real de inicialização depende do navegador, driver, biblioteca do cliente e serviço remoto.
guia oficial de suporte Puppeteer WebDriver BiDi explica como o Puppeteer usa o WebDriver BiDi para Chrome e Firefox e observa que recursos não suportados geram um erro explícito. Este é um exemplo prático de implementação progressiva: um cliente pode expor um caminho BiDi útil enquanto retém o CDP para recursos do Chrome que o BiDi ainda não cobre naquele conjunto. A arquitetura deve permitir verificações de capacidade ou quedas limitadas sem apresentar suporte parcial como paridade de protocolo total.
WebDriver Clássico, WebDriver BiDi e CDP Servem a Objetivos Diferentes
Os protocolos se sobrepõem, mas seu transporte, modelo de eventos, escopo de padronização e maturidade de implementação diferem.
| Protocolo | Melhor entendido como |
|---|---|
| WebDriver clássico | Um protocolo de comando e resposta HTTP baseado em padrões para operações comuns de automação de navegador. |
| WebDriver BiDi | Um protocolo WebSocket baseado em padrões para comandos assíncronos, assinaturas e eventos de navegador. |
| Protocolo DevTools do Chrome | Um protocolo de inspeção, depuração, perfilação e automação específico do Chrome com ampla cobertura de domínio. |
| Clássico mais BiDi | Uma combinação transitória e prática em que comandos estabelecidos coexistem com recursos orientados a eventos do BiDi. |
| Biblioteca do cliente BiDi | Uma API de nível superior que mapeia módulos de protocolo e fluxos de eventos para a linguagem e o modelo de ciclo de vida do projeto. |
| Serviço de navegador remoto | Uma camada de infraestrutura cujo ponto final anunciado deve ser verificado contra os módulos de protocolo de que o cliente precisa. |
Onde eventos bidirecionais mudam o design da automação
BiDi é valioso quando a atividade originada no navegador é parte do modelo de resultado ou sincronização, em vez de dados de depuração incidentais.
Observação do console e do log
Um cliente pode assinar eventos de log e associar mensagens do navegador ao contexto de navegação e à etapa de automação que as produziu.
Automação ciente da rede
Os módulos de rede podem expor a atividade de solicitação e resposta para observação, interceptação, autenticação ou sincronização onde implementado.
Rastreamento do ciclo de vida do contexto
Os eventos podem relatar abas, janelas e frames à medida que os contextos de navegação são criados, navegados ou destruídos.
Execução de script e reinos
BiDi pode avaliar ou chamar funções em reinos de script definidos e retornar valores ou referências remotas com escopo de execução mais claro.
A especificação e as implementações ainda estão evoluindo
Um rascunho de trabalho do W3C pode mudar, e as implementações geralmente implantam um módulo ou comando de cada vez. O suporte do navegador, suporte do driver, vinculações do cliente e serviços remotos podem avançar em cronogramas diferentes. Portanto, uma reivindicação pública de compatibilidade precisa de uma data e uma lista de recursos nas notas internas de engenharia, embora uma wiki perene deva evitar tabelas de versão frágeis. Teste a assinatura, comando, parâmetro e formato de resultado exatos que a aplicação depende.
Referência MDN para módulos WebDriver BiDi lista os módulos BiDi e seus namespaces de comando e evento. A lista é útil para descoberta, mas não é prova de que cada navegador implementa cada entrada. Consulte os resultados de implementação, informações de lançamento do navegador e a tabela de suporte da biblioteca do cliente, e então execute um teste de fumaça focado em conformidade no ambiente de produção.
Uma lista de verificação de adoção do WebDriver BiDi
Adote o BiDi pela capacidade necessária, em vez do rótulo do protocolo. O teste deve provar o transporte, comando, evento, contexto e comportamento de limpeza de ponta a ponta.
- Nomeie os módulos necessários. Liste a sessão exata, navegador, contexto de navegação, rede, script, log, armazenamento, entrada ou outros comandos e eventos que o fluxo de trabalho precisa.
- Confirme o caminho de inicialização. Verifique se o cliente solicita webSocketUrl através de uma sessão clássica, conecta-se a um ponto final somente BiDi ou permite que um framework gerencie a negociação.
- Teste assinaturas. Assine e desinscreva-se dos eventos pretendidos, delimite-os a contextos relevantes e confirme que sessões não relacionadas não vazem eventos para o manipulador.
- Gerencie concorrência. Combine resultados com identificadores de comando, permita a conclusão fora de ordem e defina como o despacho de mensagens se comporta quando eventos chegam durante comandos de longa duração.
- Modele o tempo de vida do contexto. Rastreie abas, frames, contextos de usuário e reinos de script explicitamente para que eventos e referências remotas não sejam aplicados após seu contexto ser destruído.
- Volume de eventos vinculados. Selecione apenas os tipos de eventos necessários, filtre cedo, defina buffer e contrapartida, e evite reter cargas úteis que contenham dados pessoais ou secretos não relacionados.
- Preserve um caminho suportado. Mantenha adaptadores WebDriver clássicos ou CDP para recursos essenciais ausentes do navegador e cliente selecionados, com testes que tornem o limite visível.
- Revalide atualizações. Execute o teste de fumaça do protocolo quando o navegador, driver, biblioteca do cliente, serviço remoto ou implementação da especificação muda.
WebDriver BiDi e infraestrutura de navegador gerenciado
Um serviço de navegador gerenciado pode hospedar a extremidade remota enquanto uma aplicação cliente é executada em outro lugar, mas o protocolo do ponto final e os módulos suportados devem ser verificados explicitamente. Scrapeless Scraping Browser fornece infraestrutura de navegador remoto para clientes de automação suportados; não deve ser descrito como um ponto final BiDi, a menos que a documentação atual e um teste de compatibilidade ao vivo confirmem esse caminho.
Use a documentação do serviço para identificar o cliente suportado e o modelo de conexão, e então teste todos os eventos e comandos necessários antes da adoção. Revise o atual Visão geral do produto Scrapeless Scraping Browser, documentação de início rápido do Scrapeless Scraping Browser, e preço do Scrapeless antes de escolher um modelo operacional.
Conclusão: BiDi traz eventos de navegador para um caminho de padrões
WebDriver BiDi adiciona uma conexão persistente, bidirecional e orientada por eventos à família WebDriver. Os módulos organizam comandos e eventos, as assinaturas controlam o que o navegador emite e os identificadores de comando assíncronos permitem que várias operações estejam em andamento. O modelo é uma correspondência melhor para atividades de console, rede, contexto e script do que a sondagem clássica sozinha.
Adote-o com cuidado. A especificação permanece um Rascunho de Trabalho, o suporte é recurso por recurso, e o CDP ou o WebDriver clássico ainda podem exigir operações necessárias. Um pequeno conjunto de compatibilidade deve definir o contrato real entre navegador, driver, cliente e serviço remoto.
Pronto para testar um protocolo de automação remota?
Crie uma conta Scrapeless e verifique a conexão do cliente suportada e os requisitos de evento em um fluxo de trabalho de navegador delimitado antes de escalá-lo.
Começar Grátis →FAQ
O que significa BiDi em WebDriver BiDi?
BiDi significa bidirecional. O cliente pode enviar comandos assíncronos para o navegador, e o navegador pode enviar eventos assinados de volta pela mesma conexão WebSocket. Isso difere do modelo de comando-resposta HTTP principalmente iniciado pelo cliente do WebDriver clássico.
O WebDriver BiDi está terminado?
Não. O WebDriver BiDi continua sendo um Rascunho de Trabalho do W3C na trilha de Recomendação. Navegadores e bibliotecas de clientes implementam porções úteis, mas o suporte varia por módulo, comando, evento, versão e caminho de conexão. Verifique o conjunto exato de recursos exigidos pelo fluxo de trabalho.
O WebDriver BiDi substitui o WebDriver clássico?
Não imediatamente. O WebDriver clássico continua amplamente implementado para operações comuns do navegador, e os clientes podem combinar sessões clássicas com recursos de eventos BiDi. A substituição depende do suporte completo para os comandos e ambientes necessários a um projeto.
O WebDriver BiDi é o mesmo que o Chrome DevTools Protocol?
Não. O CDP é um protocolo específico do Chrome para depuração, inspeção, perfilagem e automação. O WebDriver BiDi é projetado como um padrão cross-browser. Eles se sobrepõem em capacidades de rede, script, log e contexto, mas diferem em escopo, nomes, semântica e maturidade.
Quais ferramentas suportam o WebDriver BiDi?
O suporte existe em ecossistemas modernos de automação de navegadores, incluindo Selenium e Puppeteer, mas é específico para recursos. Consulte a documentação atual do navegador e do cliente e execute os comandos e assinaturas necessários no ambiente exato do navegador, em vez de confiar em um selo de suporte geral.