Cómo automatizar una web con Browser Use paso a paso

Última actualización: 27/08/2026

  • Browser Use combina estado estructurado, herramientas y visión opcional para controlar páginas web.
  • La instalación actual usa Browser Use y descarga Chromium mediante su propio instalador.
  • max_actions_per_step agrupa acciones; max_steps limita la duración total de la ejecución.
  • Las credenciales deben protegerse con marcadores, dominios permitidos y perfiles aislados.

Internet contiene una cantidad inmensa de información, pero obtenerla de manera estructurada continúa siendo complicado. Muchas páginas no ofrecen una API pública, cargan su contenido mediante JavaScript o distribuyen los datos entre formularios, menús y varias pantallas. Para resolver estas situaciones existen numerosas herramientas para hacer web scraping. Beautiful Soup funciona bien con documentos HTML relativamente estáticos, mientras que Selenium y Playwright permiten controlar páginas dinámicas mediante un navegador real.

Browser Use introduce otro enfoque: en lugar de programar todas las acciones por adelantado, permite proporcionar un objetivo a un agente de inteligencia artificial. El agente observa el estado de la página, decide qué herramienta debe utilizar y continúa navegando hasta completar la tarea o alcanzar el límite establecido.

Esto facilita la automatización de páginas diferentes o cambiantes, pero no convierte cualquier web en una API fiable ni elimina la necesidad de validar los resultados. Browser Use añade capacidad de razonamiento, aunque también introduce latencia, consumo de modelos y cierta variabilidad entre ejecuciones.

Google Project Mariner
Related article:
Google Project Mariner: Así es el agente de IA que quiere transformar la web

Qué es Browser Use y cómo funciona

browser use

Browser Use es una biblioteca open source de Python destinada a crear agentes capaces de controlar un navegador. Puede ejecutarse localmente, utilizar un navegador remoto o conectarse a la infraestructura administrada de Browser Use Cloud.

El desarrollador proporciona una tarea, un modelo de lenguaje y, si lo necesita, una configuración personalizada del navegador. Durante la ejecución, el agente recibe un estado procesado de la página y utiliza herramientas para navegar, pulsar elementos, escribir, desplazarse, cambiar de pestaña, subir archivos o extraer contenido.

No es correcto afirmar que Browser Use analiza siempre la pantalla como una persona. El sistema puede trabajar con la estructura y los elementos disponibles en la página. La visión es opcional y permite recurrir a capturas cuando la información visual resulta necesaria.

El parámetro use_vision utiliza actualmente el valor "auto" de forma predeterminada. En este modo, el agente dispone de la herramienta de captura, pero solamente utiliza visión cuando la necesita. También puede configurarse como True para incluirla permanentemente o como False para desactivarla.

Esta combinación permite resolver tareas que resultarían difíciles con selectores rígidos. Si un botón cambia de posición o una página utiliza nombres de clases diferentes, el agente puede volver a analizar el estado y buscar otra forma de continuar. Sin embargo, también puede interpretar mal un elemento o seguir una ruta equivocada, por lo que no existe una adaptación infalible.

Microsoft AI agentic web-5
Related article:
Microsoft impulsa la web agentic: agentes de IA autónomos y abiertos para transformar el desarrollo y la colaboración digital

Diferencias entre Browser Use y el web scraping tradicional

El scraping tradicional utiliza reglas conocidas para localizar y extraer información. Un script puede buscar un elemento mediante una clase CSS, un atributo, una expresión XPath o una ruta concreta dentro del documento.

Este enfoque es rápido y económico cuando las páginas mantienen una estructura estable. También facilita la auditoría porque el resultado depende del código escrito, no de la interpretación de un modelo.

Browser Use resulta más adecuado cuando la tarea implica navegación, decisiones o páginas con estructuras diferentes. Por ejemplo, puede buscar un producto en varias tiendas, abrir los resultados, descartar opciones que no cumplan unos requisitos y devolver una comparación final.

Característica Scraping tradicional Browser Use
Control Reglas y selectores definidos mediante código Objetivos interpretados por un agente
Velocidad Generalmente alta Condicionada por el modelo y los pasos
Coste de modelos No necesita un LLM Normalmente requiere inferencia
Adaptación Necesita actualizar las reglas Puede reinterpretar la página
Resultados Deterministas si la página no cambia Pueden variar entre ejecuciones
Uso recomendado Grandes volúmenes con estructura conocida Tareas variables y recorridos complejos
Contenido exclusivo - Clic Aquí  ¿Cómo instalar lame en wavepad audio?

Browser Use puede utilizarse para construir una capa de automatización sobre una web sin API, pero esa capa seguirá dependiendo de la interfaz. Antes de hacerlo, comprueba si existe una API oficial y revisa las condiciones del servicio, los permisos, los límites de acceso y la legislación aplicable a los datos tratados.

Funciones principales de Browser Use

Browser Use proporciona diferentes componentes para construir automatizaciones adaptadas a cada proyecto:

  • Navegación autónoma: el agente puede abrir páginas y decidir los siguientes pasos.
  • Interacción con formularios: escribe, selecciona opciones, pulsa botones y adjunta archivos.
  • Gestión de pestañas: puede abrir, cerrar y cambiar entre varias páginas.
  • Visión configurable: interpreta capturas cuando la estructura de la página no es suficiente.
  • Resultados estructurados: valida la respuesta mediante modelos de Pydantic.
  • Datos sensibles: introduce valores reales sin incluirlos directamente en el prompt.
  • Restricción de dominios: limita las páginas que el navegador puede visitar.
  • Perfiles y sesiones: reutiliza cookies o estados de autenticación existentes.
  • Herramientas personalizadas: añade acciones propias para tareas específicas.
  • Historial de ejecución: permite consultar URLs, errores, acciones y duración.

La biblioteca open source puede ejecutarse en tu propio equipo, pero el modelo utilizado puede seguir siendo externo. Trabajar localmente con el navegador no significa que toda la información permanezca automáticamente en el ordenador: debes revisar qué datos recibe el proveedor del LLM y si se envían capturas.

Browser Use Cloud añade navegadores administrados, perfiles persistentes, proxies, gestión de huellas y otras funciones para entornos de producción. Estas capacidades no forman parte necesariamente de una instalación local básica y no autorizan a eludir restricciones, controles de acceso o condiciones de uso.

Cómo instalar Browser Use

Cómo instalar Browser Use

Browser Use recomienda actualmente utilizar Python 3.12 y uv para crear un entorno aislado. En Windows puedes ejecutar:

pip install uv
uv venv --python 3.12
.venv\Scripts\activate
uv pip install browser-use
uvx browser-use install

En macOS o Linux, la activación del entorno cambia:

pip install uv
uv venv --python 3.12
source .venv/bin/activate
uv pip install browser-use
uvx browser-use install

El último comando descarga y prepara Chromium para Browser Use. Por tanto, no es necesario instalar playwright y ejecutar playwright install chromium por separado para seguir el ejemplo básico actual.

Playwright puede instalarse adicionalmente si vas a crear herramientas personalizadas que utilicen sus APIs deterministas dentro del mismo proyecto, pero no constituye un requisito general para ejecutar el primer agente.

Gemini agente ia Android
Related article:
Gemini da el salto en Android: apps más inteligentes y automatización total en tu móvil

Cómo configurar el modelo de inteligencia artificial

Browser Use puede trabajar con diferentes proveedores, entre ellos su propio modelo, Google, OpenAI, Anthropic, Azure OpenAI, OpenRouter, Ollama y otros servicios compatibles.

Guarda las claves en un archivo .env y evita escribirlas directamente dentro del script. Para utilizar Gemini, la variable recomendada actualmente es:

GOOGLE_API_KEY=TU_CLAVE

La antigua variable GEMINI_API_KEY está obsoleta en la integración actual. La disponibilidad gratuita y los límites de Google AI Studio pueden cambiar, por lo que conviene comprobar las condiciones vigentes antes de diseñar una automatización que dependa de ellas.

Para utilizar el modelo optimizado de Browser Use:

BROWSER_USE_API_KEY=TU_CLAVE

También puedes configurar:

OPENAI_API_KEY=TU_CLAVE
ANTHROPIC_API_KEY=TU_CLAVE
OPENROUTER_API_KEY=TU_CLAVE

No subas el archivo .env a Git. Añádelo a .gitignore y utiliza un gestor de secretos cuando despliegues el agente en producción.

Cómo crear el primer agente con Browser Use

Crea un archivo llamado agente.py. Este ejemplo utiliza Gemini, muestra el navegador y restringe la navegación al dominio indicado:

import asyncio

from dotenv import load_dotenv
from browser_use import Agent, Browser, ChatGoogle

load_dotenv()

async def main():
    browser = Browser(
        headless=False,
        window_size={"width": 1440, "height": 900},
        allowed_domains=["news.ycombinator.com"],
    )

    agent = Agent(
        task=(
            "Abre Hacker News, localiza las cinco primeras noticias "
            "y devuelve su título y enlace."
        ),
        llm=ChatGoogle(model="gemini-2.5-flash"),
        browser=browser,
        use_vision="auto",
    )

    history = await agent.run(max_steps=15)

    print(history.final_result())
    print("Completado:", history.is_successful())
    print("Pasos:", history.number_of_steps())
    print("Duración:", history.total_duration_seconds())

if __name__ == "__main__":
    asyncio.run(main())

El parámetro correcto es task. No se utiliza task_description en la API actual. Al terminar, run() devuelve un objeto AgentHistoryList con el historial completo.

Contenido exclusivo - Clic Aquí  Cómo eliminar una notificación de Instagram

Desde ese objeto puedes consultar:

  • history.final_result() para obtener el resultado final.
  • history.urls() para revisar las páginas visitadas.
  • history.errors() para consultar los errores.
  • history.action_names() para conocer las acciones ejecutadas.
  • history.number_of_steps() para contar los pasos.
  • history.total_duration_seconds() para medir la duración.
  • history.is_successful() para comprobar si terminó correctamente.

Cómo controlar acciones, pasos y posibles bucles

max_actions_per_step establece cuántas acciones puede proponer el modelo dentro de un mismo paso. El valor predeterminado actual es cuatro. Por ejemplo, el agente puede completar varios campos consecutivos antes de volver a analizar la página.

Este parámetro no determina la duración total ni evita por sí solo los bucles. Para limitar la ejecución completa debes utilizar max_steps al llamar a run():

history = await agent.run(max_steps=20)

Otros ajustes relevantes son:

  • max_failures: limita los reintentos después de errores en los pasos.
  • llm_timeout: determina cuánto puede durar una llamada al modelo.
  • step_timeout: limita la duración de cada paso completo.
  • fallback_llm: permite cambiar a otro modelo si el principal falla.
  • max_history_items: controla cuántos pasos conserva el contexto del agente.
  • flash_mode: reduce parte del razonamiento para acelerar tareas compatibles.

No aumentes los límites de forma indiscriminada. Si el agente repite una acción, revisa la instrucción, restringe los dominios y añade criterios claros para determinar cuándo debe detenerse.

Related article:
Cómo buscar en la web con Claude AI

Cómo extraer datos estructurados

Una respuesta redactada en texto libre puede ser difícil de integrar en una base de datos. Browser Use permite definir un esquema de salida mediante Pydantic para validar la estructura final.

import asyncio

from pydantic import BaseModel
from browser_use import Agent, ChatGoogle

class Noticia(BaseModel):
    titulo: str
    url: str

class Resultado(BaseModel):
    noticias: list[Noticia]

async def main():
    agent = Agent(
        task="Obtén las cinco primeras noticias de Hacker News.",
        llm=ChatGoogle(model="gemini-2.5-flash"),
        output_model_schema=Resultado,
    )

    history = await agent.run(max_steps=15)
    resultado = history.structured_output

    if resultado:
        for noticia in resultado.noticias:
            print(noticia.titulo, noticia.url)

asyncio.run(main())

El esquema ayuda a detectar respuestas incompletas o con campos inesperados. Aun así, debes validar las URLs, eliminar duplicados y comprobar la exactitud de los datos antes de almacenarlos o utilizarlos en decisiones importantes.

Cómo proteger credenciales y datos sensibles

El parámetro sensitive_data permite asociar valores privados a nombres de referencia. El modelo recibe el marcador, mientras que Browser Use introduce el valor real directamente durante la acción sobre el formulario.

from browser_use import Agent, Browser, ChatGoogle

credenciales = {
    "https://*.ejemplo.com": {
        "usuario_privado": "[email protected]",
        "clave_privada": "contraseña-segura",
    }
}

browser = Browser(
    allowed_domains=["*.ejemplo.com"],
)

agent = Agent(
    task=(
        "Entra en https://app.ejemplo.com e inicia sesión con "
        "usuario_privado y clave_privada."
    ),
    llm=ChatGoogle(model="gemini-2.5-flash"),
    browser=browser,
    sensitive_data=credenciales,
    use_vision=False,
)

Al desactivar la visión evitas que las capturas de la página se envíen al modelo. Esto es especialmente importante cuando la interfaz puede mostrar datos personales, números de cuenta, historiales o información empresarial.

Para reforzar la seguridad:

  • Restringe la navegación mediante allowed_domains.
  • Asocia cada credencial únicamente con los dominios que la necesitan.
  • Utiliza cuentas con los permisos mínimos posibles.
  • No permitas acceso general a archivos del sistema.
  • Solicita confirmación antes de enviar, comprar, publicar o eliminar.
  • Utiliza perfiles aislados para cada automatización.
  • Revisa el historial y los dominios visitados después de cada prueba.

Los marcadores reducen la exposición de las credenciales en el prompt, pero no eliminan todos los riesgos. Una página puede intentar manipular las instrucciones del agente mediante contenido malicioso, por lo que las acciones críticas necesitan controles externos y validaciones deterministas.

Cómo reutilizar una sesión autenticada

Browser Use ofrece varias formas de conservar la autenticación:

  • Perfil real de Chrome: reutiliza las sesiones existentes del usuario.
  • Storage state: carga cookies y almacenamiento local desde un archivo.
  • Perfil en la nube: mantiene una sesión administrada en Browser Use Cloud.
  • CDP: conecta el agente a una instancia compatible ya iniciada.

Para una automatización personal, la opción más sencilla es utilizar un perfil real:

from browser_use import Agent, Browser, ChatGoogle

browser = Browser.from_system_chrome(
    profile_directory="Profile 1"
)

agent = Agent(
    task="Abre el panel de mi cuenta y descarga el último informe.",
    browser=browser,
    llm=ChatGoogle(model="gemini-2.5-flash"),
)

Es posible que tengas que cerrar Chrome completamente antes de ejecutar el script. Browser Use necesita iniciar el navegador en un modo compatible y un proceso de Chrome abierto puede interferir con el perfil.

Contenido exclusivo - Clic Aquí  Cómo crear un macro en Windows 10

Para producción o CI resulta más apropiado exportar un estado de autenticación y cargarlo en un navegador aislado:

browser = Browser(storage_state="sesion.json")

El archivo puede contener cookies y tokens de autenticación. Protégelo como si fuera una contraseña, no lo incluyas en el repositorio y limita sus permisos de lectura.

Cómo conectar Browser Use mediante CDP

El Chrome DevTools Protocol permite controlar una instancia compatible a través de una dirección local o remota. Si ya tienes un navegador preparado con depuración remota, puedes conectarlo mediante:

from browser_use import Browser

browser = Browser(
    cdp_url="http://localhost:9222"
)

CDP facilita compartir una instancia de navegador o conectarse a un proveedor remoto, pero no hace que las decisiones del agente se ejecuten en unos pocos milisegundos. Las acciones del navegador pueden ser rápidas, mientras que cada paso que requiera al modelo seguirá dependiendo de la inferencia, la red y el contexto enviado.

No expongas el puerto de depuración a Internet. Una persona o proceso con acceso a CDP podría controlar las pestañas, consultar información visible y aprovechar las sesiones autenticadas. Limita el puerto a la interfaz local o a una red privada protegida.

Aplicaciones reales de Browser Use

Browser Use resulta especialmente útil cuando el recorrido no puede describirse mediante una única estructura estable. Algunos escenarios posibles son:

  • Investigar información distribuida entre diferentes páginas.
  • Comparar catálogos con diseños y filtros distintos.
  • Completar formularios variables bajo supervisión humana.
  • Descargar informes desde portales empresariales autorizados.
  • Clasificar información antes de enviarla a un CRM.
  • Probar de forma exploratoria recorridos poco previsibles.
  • Supervisar cambios en páginas que carecen de una API adecuada.
Mejores herramientas para gestionar leads automáticamente desde formularios web a tu CRM
Related article:
Mejores herramientas para gestionar leads automáticamente desde formularios web a tu CRM

Para monitorizar precios a gran escala, una API oficial o un scraper determinista suele ser más rápido y barato. Browser Use aporta valor cuando cada tienda presenta un recorrido diferente o cuando es necesario interpretar condiciones antes de extraer el resultado.

En pruebas de software puede complementar a Playwright realizando exploración, reproduciendo recorridos descritos en lenguaje natural o descubriendo comportamientos inesperados. No debería reemplazar automáticamente las pruebas de regresión que necesitan ofrecer el mismo resultado en cada ejecución.

Los flujos relacionados con banca, identidad, empleo, salud o documentación KYC requieren una atención especial. Antes de automatizarlos, comprueba que exista autorización, minimiza los datos procesados y mantén una persona responsable de aprobar las acciones sensibles.

Cuándo no conviene utilizar Browser Use

Browser Use no es la solución óptima para todas las automatizaciones. Evítalo o combínalo con herramientas deterministas cuando:

  • La web ofrece una API oficial suficiente.
  • Debes procesar millones de páginas con la misma estructura.
  • La operación debe producir exactamente el mismo resultado.
  • Una acción incorrecta puede causar una pérdida económica o de datos.
  • No puedes enviar el contenido de la página a un modelo externo.
  • La latencia de varios pasos resulta inaceptable.
  • Las condiciones del servicio no permiten la automatización.

Una arquitectura híbrida suele proporcionar mejores resultados. Browser Use puede planificar el recorrido y resolver los elementos variables, mientras que Playwright o herramientas personalizadas ejecutan las acciones críticas mediante reglas conocidas.

Automatizar una web con Browser Use consiste en instalar la biblioteca y el navegador, elegir un modelo compatible, describir la tarea y establecer límites claros. Para obtener una solución fiable también debes validar la salida, proteger las credenciales, restringir los dominios y decidir qué pasos necesitan supervisión.

La principal ventaja de Browser Use no es eliminar completamente los selectores, sino permitir que un modelo adapte el recorrido cuando no puedes anticipar todas las variantes. Utilizado de forma selectiva, puede reducir el desarrollo necesario para investigaciones, formularios y portales complejos sin renunciar al control determinista en las operaciones más delicadas.

Navegador Comet
Related article:
Comet, el navegador con IA de Perplexity: así revoluciona la navegación web