AntiBrow
Forneça ao agente perfis de navegador persistentes e isolados: cada um mantém seus cookies, armazenamento e configuração de fingerprint entre execuções e responde ao seu próprio proxy dentro do mecanismo.
Documentação
Execute o SDK como um servidor MCP e um agente obtém um navegador real e com fingerprint, com 19 ferramentas. Adicione isso à configuração do seu cliente MCP. O SDK do protocolo MCP é uma dependência opcional de pares, por isso as duas flags -p estão lá - npx anti-detect-browser --mcp sozinho sai com MCP server mode needs @modelcontextprotocol/sdk. Nada precisa ser instalado permanentemente.
{
"mcpServers": {
"anti-detect-browser": {
"command": "npx",
"args": [
"-y", "-p", "anti-detect-browser", "-p", "@modelcontextprotocol/sdk",
"anti-detect-browser", "--mcp"
],
"env": {
"ANTI_DETECT_BROWSER_KEY": "your-api-key"
}
}
}
}
Funciona com qualquer cliente MCP. O navegador roda na sua máquina, então não há horas de navegador para comprar.
As 16 ferramentas abaixo são as ferramentas de navegador, perfil, proxy e Live View. O servidor também expõe list_recipes, run_recipe e fanout_recipe - 19 no total - e essas três estão documentadas na página de receitas. Se o seu agente é Python e você prefere possuir o servidor, pip install "antibrow[mcp]" e o pacote inclui um exemplo funcional de servidor stdio cobrindo o mesmo ciclo de lançar, navegar, clicar, preencher, ler, capturar tela, avaliar e fechar - os perfis são os mesmos de qualquer forma. Veja o SDK Python.
O modelo de sessão
Esta é a parte que vale a pena entender antes de ler a lista de ferramentas. Chamadas de ferramentas MCP são discretas: o modelo chama uma ferramenta, obtém um resultado, pensa, chama outra. Muitas ferramentas de navegador iniciam um contexto novo por chamada, então um login feito em uma chamada se perde na próxima.
Aqui o processo do navegador permanece ativo. launch_browser retorna um sessionId, e cada ferramenta de página recebe esse id e reconecta ao mesmo navegador em execução. A aba que você deixou aberta é a aba que a próxima chamada encontra. Cookies, armazenamento e chaves de acesso são gravados no diretório do perfil, então até um reinício restaura a mesma identidade conectada com o mesmo fingerprint.
// 1. launch. \`profile\` is required; the profile is created if new.
launch_browser({ profile: "agent-01" })
// -> { sessionId, profileDir, viewUrl }
// 2. every page tool takes that sessionId
navigate({ sessionId, url: "https://example.com" })
fill({ sessionId, selector: "#email", value: "me@example.com" })
click({ sessionId, selector: "button[type=submit]" })
get_content({ sessionId })
// 3. the browser stays up between tool calls, so a later turn
// is still signed in. Close it when the task is done.
close_browser({ sessionId })
profile é obrigatório em launch_browser. Não há padrão. Escolha um nome estável por identidade e reutilize-o, porque o perfil é a identidade: reutilizar o nome é o que faz a execução 40 parecer a execução 1 para o site.
Ferramentas de navegador
Iniciar e parar um navegador, e encontrar os que já estão em execução.
launch_browser (profile, label?, color?, tags?, proxy?, proxyId?, headless?)
Inicie um navegador com um fingerprint falsificado. Cria o perfil se ele ainda não existir.
profile | string | obrigatório | Nome do perfil. Também é o nome do diretório no disco. |
|---|---|---|---|
label | string | opcional | Texto do rótulo mostrado na janela do navegador. |
color | string | opcional | Cor do tema em hex, por exemplo #e74c3c. |
tags | array | opcional | Tags armazenadas com o perfil. |
proxy | string | opcional | Sua própria URL de proxy: protocolo://usuário:senha@host:porta |
proxyId | string | opcional | Id do proxy gerenciado. Ativa-o e mede a cota mensal. Obtenha um de list_proxies ou claim_proxy. |
headless | boolean | opcional | Executar sem uma janela visível. |
close_browser (sessionId )
Feche uma sessão de navegador.
sessionId | string | obrigatório | O id retornado por launch_browser. |
|---|
list_sessions ( )
Liste todas as sessões de navegador atualmente em execução.
Ferramentas de página
Todas estas atuam em uma sessão aberta, então cada uma delas recebe um sessionId.
navigate (sessionId, url )
Navegue para uma URL.
sessionId | string | obrigatório | |
|---|---|---|---|
url | string | obrigatório | URL para navegar. |
click (sessionId, selector )
Clique em um elemento.
sessionId | string | obrigatório | |
|---|---|---|---|
selector | string | obrigatório | Seletor CSS do elemento para clicar. |
fill (sessionId, selector, value )
Preencha um campo de formulário com texto.
sessionId | string | obrigatório | |
|---|---|---|---|
selector | string | obrigatório | Seletor CSS do campo de entrada. |
value | string | obrigatório | Texto para preencher. |
get_content (sessionId, selector?)
Leia o conteúdo de texto da página, ou de um elemento.
sessionId | string | obrigatório | |
|---|---|---|---|
selector | string | opcional | Restringir a um elemento. Omita para a página inteira. |
screenshot (sessionId )
Capture a tela da página atual.
sessionId | string | obrigatório |
|---|
evaluate (sessionId, script )
Execute JavaScript no contexto da página e retorne o resultado.
sessionId | string | obrigatório | |
|---|---|---|---|
script | string | obrigatório | JavaScript para executar. |
Ferramentas de proxy
Proxies residenciais gerenciados vêm com planos pagos. Reivindicar um é gratuito; a cota é consumida apenas quando você inicia um perfil com ele.
list_proxies ( )
Liste os proxies gerenciados atribuídos a você, além da sua cota mensal: limit, usedThisMonth, remaining, holdCount e holdCap.
claim_proxy ( )
Reivindique um proxy gerenciado disponível e retorne-o, incluindo seu id. Reivindicar não consome cota mensal.
Ferramentas de Live View
Transmita uma sessão em execução para o seu painel. Live View é um recurso de plano pago.
start_live_view (sessionId, quality?)
Comece a transmitir a tela da sessão.
sessionId | string | obrigatório | |
|---|---|---|---|
quality | number | opcional | Qualidade JPEG, de 1 a 100. Padrão é 60. |
stop_live_view (sessionId )
Pare a transmissão.
sessionId | string | obrigatório |
|---|
Erros comuns
Parâmetro obrigatório "profile" ausente launch_browser não tem perfil padrão. Passe um, e use o mesmo nome toda vez para essa identidade.Sessão não encontrada O sessionId refere-se a um navegador que foi fechado. Chame list_sessions para ver o que está em execução, ou inicie novamente.Limite de concorrência atingido Seu plano limita quantos navegadores rodam ao mesmo tempo: 1 no Free, depois 5, 20 ou 100. Feche uma sessão ou aumente o limite. A contagem de perfis nunca é o limite.
Prefere escrever código a usar ferramentas MCP? Os mesmos perfis podem ser controlados pelo SDK com Playwright padrão.