AntiBrow

Proporciona al agente perfiles de navegador persistentes y aislados: cada uno conserva sus cookies, almacenamiento y configuración de huella digital entre ejecuciones, y responde a su propio proxy dentro del motor.

Documentación

Ejecuta el SDK como un servidor MCP y un agente obtiene un navegador real con huella digital y 19 herramientas. Añade esto a la configuración de tu cliente MCP. El SDK del protocolo MCP es una dependencia opcional entre pares, por eso están las dos banderas -p: npx anti-detect-browser --mcp por sí solo sale con MCP server mode needs @modelcontextprotocol/sdk. No es necesario instalar nada de forma permanente.

{
  "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 con cualquier cliente MCP. El navegador se ejecuta en tu máquina, así que no hay horas de navegador que comprar.

Las 16 herramientas siguientes son las de navegador, perfil, proxy y Live View. El servidor también expone list_recipes, run_recipe y fanout_recipe —19 en total— y esas tres están documentadas en la página de recetas. Si tu agente es Python y prefieres ser dueño del servidor, pip install "antibrow[mcp]" y el paquete incluye un ejemplo completo de servidor stdio que cubre el mismo ciclo de lanzar, navegar, hacer clic, rellenar, leer, capturar pantalla, evaluar y cerrar: los perfiles son los mismos en ambos casos. Consulta el SDK de Python.

El modelo de sesión

Esta es la parte que vale la pena entender antes de leer la lista de herramientas. Las llamadas a herramientas MCP son discretas: el modelo llama a una herramienta, obtiene un resultado, piensa, llama a otra. Muchas herramientas de navegador inician un contexto nuevo por llamada, así que un inicio de sesión realizado en una llamada desaparece en la siguiente.

Aquí el proceso del navegador permanece activo. launch_browser devuelve un sessionId, y cada herramienta de página toma ese id y se reconecta al mismo navegador en ejecución. La pestaña que dejaste abierta es la pestaña que encontrará la siguiente llamada. Las cookies, el almacenamiento y las claves de acceso se escriben en el directorio del perfil, de modo que incluso un reinicio restaura la misma identidad con sesión iniciada y la misma huella digital.

// 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 es obligatorio en launch_browser. No hay valor predeterminado. Elige un nombre estable por identidad y reutilízalo, porque el perfil es la identidad: reutilizar el nombre es lo que hace que la ejecución 40 parezca la ejecución 1 para el sitio.

Herramientas de navegador

Iniciar y detener un navegador, y encontrar los que ya están en ejecución.

launch_browser (profile, label?, color?, tags?, proxy?, proxyId?, headless?)

Lanza un navegador con una huella digital falsificada. Crea el perfil si aún no existe.

profilestringobligatorioNombre del perfil. También es el nombre del directorio en disco.
labelstringopcionalTexto de etiqueta que se muestra en la ventana del navegador.
colorstringopcionalColor de tema en hexadecimal, por ejemplo #e74c3c.
tagsarrayopcionalEtiquetas almacenadas con el perfil.
proxystringopcionalTu propia URL de proxy: protocolo://usuario:contraseña@host:puerto
proxyIdstringopcionalId del proxy gestionado. Lo activa y mide la cuota mensual. Obtén uno de list_proxies o claim_proxy.
headlessbooleanopcionalEjecutar sin ventana visible.

close_browser (sessionId )

Cierra una sesión de navegador.

sessionIdstringobligatorioEl id devuelto por launch_browser.

list_sessions ( )

Lista cada sesión de navegador actualmente en ejecución.

Herramientas de página

Todas actúan sobre una sesión abierta, por lo que cada una requiere un sessionId.

navigate (sessionId, url )

Navega a una URL.

sessionIdstringobligatorio
urlstringobligatorioURL a la que navegar.

click (sessionId, selector )

Haz clic en un elemento.

sessionIdstringobligatorio
selectorstringobligatorioSelector CSS del elemento en el que hacer clic.

fill (sessionId, selector, value )

Rellena un campo de formulario con texto.

sessionIdstringobligatorio
selectorstringobligatorioSelector CSS del campo de entrada.
valuestringobligatorioTexto para rellenar.

get_content (sessionId, selector?)

Lee el contenido de texto de la página o de un elemento.

sessionIdstringobligatorio
selectorstringopcionalRestringir a un elemento. Omítelo para toda la página.

screenshot (sessionId )

Captura una captura de pantalla de la página actual.

| sessionId | string | obligatorio | |

evaluate (sessionId, script )

Ejecuta JavaScript en el contexto de la página y devuelve el resultado.

sessionIdstringobligatorio
scriptstringobligatorioJavaScript a ejecutar.

Herramientas de proxy

Los proxies residenciales gestionados vienen con planes de pago. Reclamar uno es gratis; la cuota se consume solo cuando lanzas un perfil con él.

list_proxies ( )

Lista los proxies gestionados asignados a ti, más tu cuota mensual: limit, usedThisMonth, remaining, holdCount y holdCap.

claim_proxy ( )

Reclama un proxy gestionado disponible y devuélvelo, incluido su id. Reclamar no consume cuota mensual.

Herramientas de Live View

Transmite una sesión en ejecución a tu panel. Live View es una función de los planes de pago.

start_live_view (sessionId, quality?)

Inicia la transmisión de la pantalla de la sesión.

sessionIdstringobligatorio
qualitynumberopcionalCalidad JPEG, de 1 a 100. El valor predeterminado es 60.

stop_live_view (sessionId )

Detén la transmisión.

| sessionId | string | obligatorio | |

Errores comunes

Falta el parámetro obligatorio "profile" launch_browser no tiene perfil predeterminado. Pasa uno y usa el mismo nombre cada vez para esa identidad.Sesión no encontrada El sessionId se refiere a un navegador que se ha cerrado. Llama a list_sessions para ver qué está en ejecución, o lanza de nuevo.Límite de concurrencia alcanzado Tu plan limita cuántos navegadores se ejecutan a la vez: 1 en Free, luego 5, 20 o 100. Cierra una sesión o aumenta el límite. El número de perfiles nunca es el límite.

¿Prefieres escribir código a usar herramientas MCP? Los mismos perfiles se pueden controlar desde el SDK con Playwright estándar.