Pinchtab: La API de Navegador Go de 12 MB para Agentes de IA
Pinchtab: La API de Navegador Go de 12 MB para Agentes de IA
Los agentes IA modernos necesitan una forma confiable y asequible de leer, interactuar y controlar páginas web. Las soluciones existentes como Playwright, Puppeteer o Browser Use suelen incluir runtimes pesados, bindings de lenguaje rígidos o sobrecarga innecesaria. Pinchtab resuelve el problema con un binario Go autónomo y compacto que inicia una instancia de Chrome sin cabeza, expone una API HTTP pura y es eficiente en tokens suficiente para resultar atractivo en cargas de trabajo de lectura masiva a gran escala.
¿Qué es Pinchtab?
- Servidor HTTP independiente – no se necesita SDK de ningún lenguaje; curl, Python, Rust o cualquier agente OpenAI pueden comunicarse con él.
- Binario Go de 12 MB – construido con
go build, sin dependencias externas en tiempo de ejecución. - Chrome bajo el capó – administra el Chromium real, pero abstrae todo el trabajo pesado detrás de una API limpia y estructurada.
- Modos duales –
headlesspara pipelines de automatización total yheadedpara flujos de trabajo con intervención humana. - Stealth integrado – corrige automáticamente
navigator.webdriver, haciendo pasar el User‑Agent y otras banderas. - Persistencia de sesión – cookies y local‑storage sobreviven a reinicios; útil para logins de varios pasos.
- Salida eficiente en tokens – ofrece
/text(~800 tokens) y el modo de instantánea con?filter=interactive(~3 600 tokens), reduciendo costos al alimentar LLMs.
El resultado es una herramienta de navegador que se siente como un plugin LLM: rápida de iniciar, fácil de usar y altamente configurable.
Por qué Pinchtab supera a los sospechosos habituales
| Característica | Pinchtab | Playwright MCP | Browser Use |
|---|---|---|---|
| Tamaño del binario | 12 MB binario único | árbol de dependencias de 10 + GB | contenedor de 5 GB |
| Protocolo | REST + WebSocket | CDP + envoltorio personalizado | WebSocket + RPC |
| Portabilidad | compilación cruzada Go | tiempo de ejecución Node.js | Docker requerido |
| Costo en tokens | /text 800 tokens/página |
instantánea completa 10 k+ tokens | 10 k+ tokens |
| Headless/Headed | conmutador integrado | solo headless en CLI | solo headless |
| Stealth | parches integrados | requiere script personalizado | sin soporte nativo |
Cuando solo necesitas leer una página o hacer clic en un botón, la captura de texto o instantánea interactiva de Pinchtab es 3–10× más barata en tokens comparado con una captura de pantalla completa con un modelo de visión, traduciendo en ahorros de órdenes de magnitud para scraping o monitoreo a gran escala.
Comenzando
1. Instalar
# Desde fuente
$ go install github.com/pinchtab/pinchtab@latest
# O Docker (más sencillo)
$ docker run -d -p 9867:9867 --security-opt seccomp=unconfined pinchtab/pinchtab
El binario escucha en el puerto 9867 por defecto. Reemplázalo con BRIDGE_PORT=9870 ./pinchtab.
2. Uso básico con curl
# Verificar salud
$ curl http://localhost:9867/health
# Leer una página
$ curl http://localhost:9867/text?tabId=1
# Hacer clic en un botón por ref (IDs desde instantánea)
$ curl -X POST http://localhost:9867/action \
-d '{"kind":"click","ref":"e5"}'
Todos los endpoints devuelven JSON limpio. Consulta la sección de API a continuación para detalles sobre parámetros de consulta y opciones avanzadas.
3. Modo con cabeza (humano + agente)
$ BRIDGE_HEADLESS=false ./pinchtab
http://localhost:9869). Los perfiles se guardan en ~/.pinchtab/profiles/<name>/ y persisten entre reinicios.
4. Usar el panel de control
$ pinchtab dashboard
# abrir http://localhost:9867/dashboard en un navegador
# crear/importar perfiles, lanzar instancias con cabeza, detenerlas
Visión general de la API central
| Método | Ruta | Descripción |
|---|---|---|
| GET | /health |
Estado del servidor |
| GET | /tabs |
Lista de pestañas abiertas |
| GET | /snapshot |
Árbol de accesibilidad (JSON estructurado) |
| GET | /screenshot |
Imagen JPEG |
| GET | /text |
Texto de la página (readability o raw) |
| POST | /navigate |
Navegar a una URL |
| POST | /action |
Hacer clic, escribir, desplazarse, etc |
| POST | /evaluate |
Ejecutar JavaScript arbitrario |
| POST | /tab |
Abrir/cerrar pestañas |
| POST | /tab/lock / /unlock |
Bloquear una pestaña para acceso exclusivo |
Parámetros de consulta de snapshot
filter=interactive– incluye solo botones, enlaces e inputs, reduciendo el tamaño.format=text– árbol de texto plano, ~40–60 % menos tokens que JSON.diff=true– devuelve solo la diferencia de la última instantánea.noAnimations=true– desactiva animaciones CSS para salida determinista.
Parámetros de consulta de texto
mode=raw– texto interno bruto; de lo contrario elimina anuncios/navegación mediante readability.
Características avanzadas
Modo stealth
Pinchtab ofrece dos niveles de stealth: light (banderas básicas) y full (spoofing de canvas/WebGL/fuentes). Actívalo con BRIDGE_STEALTH=full. Esto es crucial al automatizar sitios con detección de bots robusta.
Persistencia de sesión
Por defecto, Pinchtab escribe cookies, local storage e incluso pestañas abiertas en ~/.pinchtab. Puedes apuntar la herramienta a un directorio personalizado con BRIDGE_PROFILE=/my/profile. En modo sin cabeza también puedes inyectar cookies mediante POST /cookies.
Bloqueo de imágenes y medios
Establece BRIDGE_BLOCK_IMAGES=true o BRIDGE_BLOCK_MEDIA=true para reducir el ancho de banda y acelerar instantáneas.
Bandera de Chrome personalizada
Pasa cualquier bandera de Chrome con CHROME_FLAGS="--no-sandbox --disable-gpu". Esto puede ser útil en CI o recursos limitados.
Consideraciones de seguridad
Pinchtab esencialmente entrega a un agente control directo sobre un navegador real que ejecuta tus datos de cuenta. Siempre:
- Asegura el endpoint HTTP con
BRIDGE_TOKEN. - Ejecuta en una red restringida o detrás de un firewall.
- Usa perfiles de Chrome descartables para agentes experimentales.
El binario nunca envía tus datos fuera de tu máquina a menos que lo hagas tú. Guarda ~/.pinchtab como guardarías tus contraseñas.
Referencia rápida: uso con el panel de control
# Iniciar el panel
$ pinchtab dashboard
# En la UI
# 1. Importar un perfil (clic en "Importar Perfil")
# 2. Iniciar una nueva instancia (elige con o sin cabeza)
# 3. Usar la URL de API devuelta en tu agente
/start/{id} y /stop/{id}, habilitando la gestión del ciclo de vida de forma programática.
Casos de uso comunes
| Caso de uso | Por qué Pinchtab | Ejemplo |
|---|---|---|
| Raspado web | Extracción de texto rápida y con pocos tokens | Raspado de artículos de noticias en un cronograma de 100 páginas con un costo inferior a <$0.05 |
| Chatbots impulsados por IA | Integración de navegador sin fisuras | LLM de OpenAI envía acciones de clic en tiempo real |
| Pruebas automatizadas | Modo con cabeza para depuración visual | Ejecutar pruebas de integración con Docker Compose + instancia con cabeza |
| Flujos de datos | Mantiene sesiones activas entre ejecuciones | Inicio de sesión automático una vez en un portal y obtención de reportes diarios |
Conclusión
Pinchtab es una solución pragmática y de código abierto que elimina la fricción de integrar un navegador en flujos de trabajo de IA. Su pequeño footprint, interfaz HTTP‑primero y salida eficiente en tokens lo convierten en el compañero ideal para los agentes IA de próxima generación que necesitan leer, interactuar y manipular la web sin la sobrecarga de marcos de navegador completos. Pruébalo: el binario de 12 MB corre en tu portátil, tu servidor o dentro de Docker, y la API se siente como un nuevo plugin para tu LLM favorito.