Evolution API, Baileys y WPPConnect resuelven el mismo problema (conectar números de WhatsApp en un servidor) y por eso se suelen tratar como intercambiables. A la hora de poner un proxy, no lo son. Cada uno se conecta a WhatsApp de una manera, y el proxy entra en un lugar distinto en cada arquitectura. Copiar la configuración de uno a otro es la causa más común de "configuré el proxy y sigue saliendo por la IP del VPS".
Las tres arquitecturas lado a lado
| Evolution API | Baileys | WPPConnect | |
|---|---|---|---|
| Qué es | API lista que gestiona instancias | Biblioteca de Node que habla con WhatsApp por WebSocket | Biblioteca que controla un WhatsApp Web dentro de Chromium |
| Dónde entra el proxy | En el payload de la instancia o en una variable de entorno | En el agente que se pasa al crear el socket | En los argumentos de Chromium, con la autenticación aparte |
| Protocolo más estable | SOCKS5 o HTTP | SOCKS5 o HTTP | HTTP |
| Cuidado principal | El proxy global sirve a todas las instancias | La multimedia necesita el mismo agente | Usuario y contraseña no van en la URL de Chromium |
Evolution API: por instancia o global
Evolution API acepta el proxy de dos formas:
- Por instancia: los datos del proxy van en el cuerpo de la petición que crea la instancia, o en un endpoint propio para actualizar una instancia existente. Es el diseño correcto cuando hay más de un número, porque cada instancia sale por su propia dirección.
- Global: mediante variables de entorno, válido para todas las instancias del servidor. Es sencillo, pero pone todos los números en la misma IP.
El paso a paso, con los campos y el endpoint de actualización, está en proxy en Evolution API.
Baileys: el agente y el detalle de la multimedia
En Baileys, el proxy es un agente que se pasa al crear el socket: con socks-proxy-agent para SOCKS5 o con https-proxy-agent para HTTP.
El detalle que pasa desapercibido: hay dos campos. agent enruta la conexión principal del WebSocket; fetchAgent enruta la descarga de multimedia. Configurar solo el primero hace que los mensajes salgan por el proxy y la multimedia salga por la IP de la máquina: una incoherencia de origen dentro de la misma sesión.
La configuración completa, con un proxy por instancia, está en proxy en Baileys.
WPPConnect: quien se conecta es el navegador
WPPConnect no abre un WebSocket directo: levanta un Chromium con WhatsApp Web. Por eso la configuración de Baileys no sirve aquí: el agente de proxy de Node no se conecta al navegador.
En WPPConnect, el proxy va en los argumentos de Chromium, sin usuario ni contraseña en la URL; la autenticación entra después, en la página. HTTP es el camino estable; SOCKS5 con contraseña en Chromium da resultados irregulares. El paso a paso está en proxy en WPPConnect.
La regla que vale para los tres
Una IP por número que deba parecer independiente. Diez instancias en el mismo servidor, sin proxy por instancia, son diez números saliendo por la misma dirección: si esa dirección tiene un problema, todos se ven afectados, y los números de clientes distintos quedan asociados.
Antes de conectar el número, confirma la IP de salida de cada instancia. Si la prueba de IP del proxy sale bien y la sesión sigue cayendo, el problema probablemente no es la red: la versión de la biblioteca, una sesión corrompida o el comportamiento del número entran en el diagnóstico. Lo vemos en número bloqueado en WhatsApp API.
Lo que el proxy no resuelve
El proxy separa el origen de cada número. No evita las denuncias, no convierte en permitido el envío masivo no solicitado y no sustituye a la API oficial cuando necesitas volumen con garantías; la comparación está en API oficial de WhatsApp o Evolution y Baileys.
Cuál elegir, desde el punto de vista del proxy
- Quieres gestionar instancias por API, sin programar la conexión → Evolution API, con un proxy por instancia.
- Quieres control total en Node y menos recursos por número → Baileys, sin olvidar el
fetchAgent. - Necesitas WhatsApp Web completo en el navegador → WPPConnect, con proxy HTTP.
En los tres, el tipo de IP recomendado es el mismo: IPv4 dedicada del país del número, una por número. Por qué la IP del VPS suele ser el problema, y cómo dimensionar, está en proxy para Evolution API.