Los bots le generaron una factura de miles de dólares en una noche — cómo evitarlo
Un desarrollador en Reddit recibió una factura de miles de dólares por culpa de los bots. Miré mi código y me di cuenta de que estaba igual.

En Reddit me encontré con un post de un desarrollador. Lanzó una app SaaS que llamaba a modelos de AI — parecido a GoStylo. Una mañana abrió su correo y ahí estaba. Una factura de varios miles de dólares. Por una sola noche.
Bots. Cientos de direcciones IP diferentes, cada una dentro del límite gratuito, pero juntas le consumieron todo el presupuesto mensual en pocas horas.
Miré mi propio código y me di cuenta de que estaba exactamente en la misma situación.
Qué estaba mal
Mi rate limiting estaba basado en fingerprints — dirección IP más unas cuantas cabeceras del navegador. Cada fingerprint tenía permitidas 6 peticiones por hora. Pero un bot con mil IPs diferentes son mil fingerprints. Mil por seis son seis mil peticiones por hora. Cada una llamando a un modelo de AI. Cada una costando dinero real.
Peor aún, 10 de 12 endpoints de la API no tenían ningún rate limit. Un bot podía spamear la base de datos, agotar la autenticación — y yo me enteraría cuando llegara la factura.
Qué hice al respecto
Lo resolví por capas. No una gran protección, sino varias más pequeñas, donde cada una atrapa un tipo diferente de ataque.
Middleware — antes de que la petición llegue a cualquier código. Un límite de 200 peticiones por minuto por IP (ningún humano llega a eso, los bots sí), bloqueo de herramientas bot conocidas por su cabecera User-Agent y una whitelist para buscadores para no destrozar el SEO. Más caching en páginas estáticas — cuando un bot golpea el blog mil veces, recibe mil veces la misma página cacheada. Cero carga en el servidor, cero coste.
Rate limits en cada endpoint — los revisé todos y configuré límites según su sensibilidad. Endpoints públicos 60 por hora por IP, lectura autenticada 120, escritura 60, eliminación de cuenta 5. Antes no había literalmente nada.
Bot scoring en el endpoint de transformación — ese es el que llama a los modelos de AI y cuesta dinero. Cada petición recibe una puntuación según lo mucho que parece un bot. Un honeypot rellenado (un campo oculto en el formulario que los humanos nunca ven pero los bots rellenan automáticamente), una firma criptográfica del frontend ausente (alguien está llamando a la API directamente), 5 peticiones en 5 segundos desde la misma fuente — cada señal suma puntos. Puntuación baja ralentiza la petición, media lanza un CAPTCHA (lo resuelves una vez y tienes 24 horas de tranquilidad), alta lo bloquea.
Seguimiento de costes — no solo el número de peticiones, sino cuánto cuestan realmente en dólares. Un bot no necesita enviar muchas peticiones, basta con enviar textos largos. Cuando un fingerprint agota su presupuesto por hora, se acabó.
Monitorización — cada 15 minutos una comprobación automática del tráfico total. Cuando las peticiones anónimas alcanzan el 80% del límite, recibo una notificación. No quiero enterarme de un ataque por la mañana.
Para los usuarios normales no cambió nada
Ningún CAPTCHA durante el uso normal, ninguna ralentización. Si usas GoStylo normalmente, no te vas a encontrar con nada de esto.
Ese post de Reddit me hizo mirar la seguridad antes de que fuera demasiado tarde. Mejor dedicar unos días a la prevención que despertarse con una factura de miles.
Ready to improve your writing?
Try Stylo for free and experience AI-powered writing assistance that adapts to your style.
Try Stylo FreeRelated Posts
Escribir en otro idioma sin estrés: cómo usar Stylo para emails en alemán o inglés
Escribe un email en tu idioma y Stylo lo traduce al alemán, inglés o cualquier otro idioma. Sin estrés, sin Google Translate.
product updatesStylo para Android: Del concepto al lanzamiento
Después de meses de desarrollo y optimización, Stylo para Android está finalmente listo para pruebas. Aquí está lo que costó construirlo.