{"id":12777,"date":"2025-04-30T15:10:37","date_gmt":"2025-04-30T14:10:37","guid":{"rendered":"https:\/\/www.lucushost.com\/blog\/?p=12777"},"modified":"2025-04-30T15:10:49","modified_gmt":"2025-04-30T14:10:49","slug":"error-429","status":"publish","type":"post","link":"https:\/\/www.lucushost.com\/blog\/error-429\/","title":{"rendered":"\u00bfQu\u00e9 es el Error HTTP 429 \u00abToo many requests\u00bb?"},"content":{"rendered":"<p class=\"\" data-start=\"206\" data-end=\"568\">El error HTTP 429 \u00abToo many requests\u00bb es una respuesta del servidor que indica que un mismo cliente ha hecho demasiadas peticiones en un periodo de tiempo muy breve. Por lo tanto, no se trata de un fallo t\u00e9cnico del servidor, ni mucho menos, sino de una medida de seguridad que se pone en marcha de forma intencionada para evitar abusos y sobrecargas de los recursos disponibles.<!--more--><\/p>\n<p class=\"\" data-start=\"570\" data-end=\"978\">El error 429 no es el <a href=\"https:\/\/www.lucushost.com\/blog\/codigos-http-mas-comunes\/\">c\u00f3digo HTTP<\/a> m\u00e1s habitual, peor puede darte la tabarra si usas aplicaciones que hacen llamadas a APIs externas, que emplean sistemas automatizados, que usan bots o en entornos en los que hay muchos usuarios que quieren acceder simult\u00e1neamente. As\u00ed que no te asustes. Lo primero que hay que hacer es entender por qu\u00e9 se est\u00e1 produciendo y adaptar el comportamiento del cliente (o la configuraci\u00f3n del servidor) en consecuencia.<\/p>\n<p class=\"\" data-start=\"980\" data-end=\"1007\">En este post, quiero explicarte qu\u00e9 significa exactamente el error 429, cu\u00e1les son sus causas m\u00e1s habituales, c\u00f3mo resolverlo en funci\u00f3n de su origen y qu\u00e9 hacer si el problema viene del uso de bots, scrapers o crawlers. En definitiva, quiero que tengas a mano una gu\u00eda completa para identificar bien el problema y aplicar la soluci\u00f3n adecuada, sin comerte mucho la olla.<\/p>\n<p data-pm-slice=\"1 1 []\"><div id=\"toc_container\" class=\"no_bullets\"><p class=\"toc_title\">Tabla de contenidos:<\/p><ul class=\"toc_list\"><li><a href=\"#Significado_del_codigo_429_en_HTTP\">Significado del c\u00f3digo 429 en HTTP<\/a><ul><li><a href=\"#En_que_se_diferencia_el_error_429_de_otros_errores_HTTP\">En qu\u00e9 se diferencia el error 429 de otros errores HTTP<\/a><\/li><\/ul><\/li><li><a href=\"#Principales_causas_del_error_429\">Principales causas del error 429<\/a><ul><li><a href=\"#1_Gran_numero_de_peticiones_en_muy_poco_tiempo\">1. Gran n\u00famero de peticiones en muy poco tiempo<\/a><\/li><li><a href=\"#2_Limite_de_uso_configurado_en_el_servidor_rate_limiting\">2. L\u00edmite de uso configurado en el servidor (rate limiting)<\/a><\/li><li><a href=\"#3_Uso_de_bots_scrapers_o_automatizaciones\">3. Uso de bots, scrapers o automatizaciones<\/a><\/li><li><a href=\"#4_Errores_en_el_codigo_del_cliente\">4. Errores en el c\u00f3digo del cliente<\/a><\/li><li><a href=\"#5_Varios_usuarios_que_comparten_una_misma_IP\">5. Varios usuarios que comparten una misma IP<\/a><\/li><li><a href=\"#6_Picos_de_trafico_inesperados_o_comportamiento_sospechoso\">6. Picos de tr\u00e1fico inesperados o comportamiento sospechoso<\/a><\/li><\/ul><\/li><li><a href=\"#Como_solucionar_el_codigo_HTTP_429_en_funcion_del_origen_del_problema\">C\u00f3mo solucionar el c\u00f3digo HTTP 429 en funci\u00f3n del origen del problema<\/a><ul><li><a href=\"#1_Si_el_problema_esta_en_el_cliente_o_en_la_aplicacion_que_hace_las_peticiones\">1. Si el problema est\u00e1 en el cliente o en la aplicaci\u00f3n que hace las peticiones<\/a><\/li><li><a href=\"#2_Si_el_limite_lo_impone_una_API_externa\">2. Si el l\u00edmite lo impone una API externa<\/a><\/li><li><a href=\"#3_Si_hay_varias_personas_compartiendo_la_misma_direccion_IP\">3. Si hay varias personas compartiendo la misma direcci\u00f3n IP<\/a><\/li><li><a href=\"#4_Si_el_limite_esta_en_tu_propio_servidor_y_tu_controlas_el_backend\">4. Si el l\u00edmite est\u00e1 en tu propio servidor (y t\u00fa controlas el backend)<\/a><\/li><\/ul><\/li><li><a href=\"#Y_que_hago_si_el_error_429_me_lo_estan_generando_bots_scrapers_o_crawlers\">\u00bfY qu\u00e9 hago si el error 429 me lo est\u00e1n generando bots, scrapers o crawlers?<\/a><\/li><li><a href=\"#Casos_comunes_Error_429_en_WordPress_y_WooCommerce\">Casos comunes: Error 429 en WordPress y WooCommerce<\/a><ul><li><a href=\"#Plugins_que_hacen_demasiadas_peticiones\">Plugins que hacen demasiadas peticiones<\/a><\/li><li><a href=\"#Problemas_con_bots_o_trafico_sospechoso\">Problemas con bots o tr\u00e1fico sospechoso<\/a><\/li><li><a href=\"#Peticiones_desde_servicios_externos_o_integraciones\">Peticiones desde servicios externos o integraciones<\/a><\/li><li><a href=\"#Limites_de_servicios_como_Cloudflare\">L\u00edmites de servicios como Cloudflare<\/a><\/li><\/ul><\/li><li><a href=\"#Evita_que_el_error_429_vuelva_a_frenar_tu_web\">Evita que el error 429 vuelva a frenar tu web<\/a><\/li><\/ul><\/div>\n<\/p>\n<h2 data-pm-slice=\"1 1 []\"><span id=\"Significado_del_codigo_429_en_HTTP\">Significado del c\u00f3digo 429 en HTTP<\/span><\/h2>\n<p class=\"\" data-start=\"85\" data-end=\"361\">El error 429 \u00abToo many requests\u00bb aparece cuando un usuario o aplicaci\u00f3n realiza demasiadas peticiones a un servidor en un periodo de tiempo muy corto. Es una forma que tiene el servidor de protegerse y decir: \u201cEst\u00e1s haciendo demasiadas solicitudes, frena un poco\u201d.<\/p>\n<p class=\"\" data-start=\"363\" data-end=\"577\">Ver\u00e1s, hay un sistema llamado \u00abrate limiting\u00bb que sirve para poner l\u00edmites de modo que no se pueda hacer abuso, sobrecarga o incluso un ataque al servidor (como los ataques DDoS). Por ejemplo, el servidor puede tener una regla que diga: \u201cSolo se puede hacer un m\u00e1ximo 100 peticiones por minuto por usuario\u201d. El objetivo es doble: proteger el rendimiento del servidor y garantizar un uso justo de los recursos para todos los usuarios.<\/p>\n<p class=\"\" data-start=\"629\" data-end=\"701\">\u00bfY qu\u00e9 pasa si se supera ese l\u00edmite? Pues que se devuelve el error 429 para forzar una pausa.<\/p>\n<h3 data-start=\"629\" data-end=\"701\"><span id=\"En_que_se_diferencia_el_error_429_de_otros_errores_HTTP\">En qu\u00e9 se diferencia el error 429 de otros errores HTTP<\/span><\/h3>\n<p class=\"\" data-start=\"125\" data-end=\"499\">El error 429 \u00abToo many requests\u00bb se diferencia de otros errores HTTP en que no indica que haya un fallo del servidor ni un error en la solicitud. M\u00e1s bien es una respuesta que limita el n\u00famero de peticiones. \u00bfY para qu\u00e9? Pues su funci\u00f3n es proteger el sistema, ante todo.<\/p>\n<p class=\"\" data-start=\"501\" data-end=\"861\">A diferencia de errores como el <a href=\"https:\/\/www.lucushost.com\/blog\/error-404-que-es-y-como-solucionarlo-en-tu-web\/\">error 404<\/a>, que indica que el recurso al que se quiere llegar no existe, o el <a href=\"https:\/\/www.lucushost.com\/blog\/http-error-500\/\">error 500<\/a>, que suele indicar que hay un problema interno del servidor, el error 429 act\u00faa como mecanismo de control en un sistema que funciona perfectamente. \u00bfA qu\u00e9 me refiero? Pues a que el error 429 no indica que el servidor est\u00e9 roto, sino que sirve simplemente para marcar un l\u00edmite de forma temporal.<\/p>\n<p class=\"\" data-start=\"863\" data-end=\"1089\">Adem\u00e1s, el error 429 tambi\u00e9n es distinto de errores como el 403 (que deniega el acceso en funci\u00f3n de los permisos) porque el 429 no proh\u00edbe el acceso de forma permanente. Tan solo le pide al cliente que espere un poco antes de volver a intentarlo.<\/p>\n<p class=\"\" data-start=\"1091\" data-end=\"1325\">\u00a1En resumen! El c\u00f3digo HTTP 429 no te est\u00e1 se\u00f1alando un error definitivo o que no se pueda subsanar, sino simplemente una situaci\u00f3n temporal provocada por un uso excesivo de los recursos. La clave est\u00e1 en modificar el ritmo de las peticiones y respetar los l\u00edmites que establece el sistema.<\/p>\n<p data-start=\"1091\" data-end=\"1325\">Pero vamos a ver algunas de las causas que nos pueden llevar a toparnos con el error 429. Despu\u00e9s, te ense\u00f1o las soluciones.<\/p>\n<h2 data-pm-slice=\"1 1 []\"><span id=\"Principales_causas_del_error_429\">Principales causas del error 429<\/span><\/h2>\n<p>Vale, ya hemos quedado en que el error 429 indica que se ha alcanzado un l\u00edmite de peticiones impuesto para impedir que se haga un uso an\u00f3malo del servidor.<\/p>\n<p>Ahora te estar\u00e1s preguntando qu\u00e9 causas pueden llevar a hacer saltar esa limitaci\u00f3n, \u00bfno? Pues vamos a verlas.<\/p>\n<h3 class=\"\" data-start=\"739\" data-end=\"797\"><span id=\"1_Gran_numero_de_peticiones_en_muy_poco_tiempo\">1. Gran n\u00famero de peticiones en muy poco tiempo<\/span><\/h3>\n<p class=\"\" data-start=\"799\" data-end=\"1129\">La pongo de primera porque es la causa m\u00e1s frecuente. El cliente (ya sea un navegador, una aplicaci\u00f3n m\u00f3vil, un script automatizado, etc.) est\u00e1 haciendo un n\u00famero excesivo de peticiones en un intervalo muy corto de tiempo. Como resultado, el servidor, al detectar esta actividad tan intensa, activa su sistema de protecci\u00f3n y responde con un 429 para evitar una posible sobrecarga.<\/p>\n<p class=\"\" data-start=\"1131\" data-end=\"1296\">Como te digo, es una situaci\u00f3n com\u00fan en aplicaciones que realizan peticiones de forma continua o que no gestionan adecuadamente los intervalos entre llamadas a servicios externos.<\/p>\n<h3 class=\"\" data-start=\"1298\" data-end=\"1361\"><span id=\"2_Limite_de_uso_configurado_en_el_servidor_rate_limiting\">2. L\u00edmite de uso configurado en el servidor (rate limiting)<\/span><\/h3>\n<p class=\"\" data-start=\"1363\" data-end=\"1630\">Muchos servidores y APIs tienen marcados, de forma expl\u00edcita, unos l\u00edmites de uso para cada usuario, IP o aplicaci\u00f3n (es decir, para cada cliente). Estos l\u00edmites van a ser distintos en funci\u00f3n del proveedor o del servicio, e incluso seg\u00fan el tipo de cuenta o plan contratado.<\/p>\n<p class=\"\" data-start=\"1632\" data-end=\"1962\">Por ejemplo, imag\u00ednate que una API permite hasta 60 peticiones por minuto a cada usuario. Si se supera esa cantidad, el servidor rechaza las siguientes solicitudes y devuelve un error 429 hasta que se restablece el l\u00edmite. Se trata de un sistema de control bastante habitual en servicios en la nube, plataformas de pago por uso y otros sistemas con mucha demanda.<\/p>\n<h3 class=\"\" data-start=\"1964\" data-end=\"2023\"><span id=\"3_Uso_de_bots_scrapers_o_automatizaciones\">3. Uso de bots, scrapers o automatizaciones<\/span><\/h3>\n<p class=\"\" data-start=\"2025\" data-end=\"2270\">Cuando se utilizan bots o herramientas automatizadas para acceder a sitios web o APIs sin un sistema de control (por ejemplo, para hacer pausas entre peticiones), es muy probable que se active el sistema de protecci\u00f3n del servidor.<\/p>\n<p class=\"\" data-start=\"2272\" data-end=\"2507\">\u00bfCu\u00e1ndo es probable que suceda? Por ejemplo, cuando se hacen tareas de web scraping, pruebas automatizadas o tareas de monitorizaci\u00f3n intensivas. Muchos servidores detectan este tipo de actividad como potencialmente maliciosa y muestran el error 429 como mecanismo disuasorio.<\/p>\n<h3 class=\"\" data-start=\"2509\" data-end=\"2548\"><span id=\"4_Errores_en_el_codigo_del_cliente\">4. Errores en el c\u00f3digo del cliente<\/span><\/h3>\n<p class=\"\" data-start=\"2550\" data-end=\"2854\">Una causa menos evidente, pero igualmente importante, es la presencia de errores en el desarrollo del cliente. Por ejemplo, si una aplicaci\u00f3n tiene un bug que provoca que una misma petici\u00f3n se env\u00ede varias veces en bucle, puede superar r\u00e1pidamente los l\u00edmites establecidos por el servidor.<\/p>\n<p class=\"\" data-start=\"2856\" data-end=\"3105\">Tambi\u00e9n puede ocurrir en sistemas que no reutilizan correctamente datos en cach\u00e9 o que reintentan solicitudes fallidas de forma que acaban generando una alta carga de tr\u00e1fico innecesario.<\/p>\n<h3 class=\"\" data-start=\"3107\" data-end=\"3155\"><span id=\"5_Varios_usuarios_que_comparten_una_misma_IP\">5. Varios usuarios que comparten una misma IP<\/span><\/h3>\n<p class=\"\" data-start=\"3157\" data-end=\"3440\">Hay entornos (redes corporativas, instituciones educativas, conexiones mediante proxy&#8230;) en los que es habitual que haya varios usuarios compartiendo una \u00fanica direcci\u00f3n IP p\u00fablica. En estos casos, el servidor receptor puede interpretar todas las solicitudes como si provinieran del mismo cliente.<\/p>\n<p class=\"\" data-start=\"3442\" data-end=\"3658\">De este modo, aunque es posible que cada usuario est\u00e9 haciendo un uso razonable, si la suma total de las peticiones enviadas supera el l\u00edmite establecido para esa IP, puede aparecer un error 429 para todos los que la est\u00e9n utilizando.<\/p>\n<h3 class=\"\" data-start=\"3660\" data-end=\"3723\"><span id=\"6_Picos_de_trafico_inesperados_o_comportamiento_sospechoso\">6. Picos de tr\u00e1fico inesperados o comportamiento sospechoso<\/span><\/h3>\n<p class=\"\" data-start=\"3725\" data-end=\"4039\">Hay sistemas que est\u00e1n configurados para detectar patrones de tr\u00e1fico poco habituales, como un gran n\u00famero de accesos en muy poco tiempo desde la misma zona geogr\u00e1fica o direcci\u00f3n IP. Cuando se detecta que esto est\u00e1 sucediendo, es habitual que el servidor pase a aplicar medidas de protecci\u00f3n, como un bloqueo temporal mediante un error HTTP 429.<\/p>\n<p class=\"\" data-start=\"4041\" data-end=\"4251\">Y ojo, que esto no implica que se haya hecho necesariamente un mal uso intencionado, pero s\u00ed que ha habido un comportamiento que no es el que esperaba el sistema. Como resultado, el error 429\u00a0 se aplica de forma autom\u00e1tica como medida de seguridad.<\/p>\n<h2 data-pm-slice=\"1 1 []\"><span id=\"Como_solucionar_el_codigo_HTTP_429_en_funcion_del_origen_del_problema\">C\u00f3mo solucionar el c\u00f3digo HTTP 429 en funci\u00f3n del origen del problema<\/span><\/h2>\n<p data-start=\"4041\" data-end=\"4251\">Veamos. El error 429 no es un fallo del servidor, como tal, sino m\u00e1s bien una respuesta intencionada que indica que se ha superado un l\u00edmite. Por eso, la soluci\u00f3n depende en gran medida de qui\u00e9n est\u00e9 haciendo las peticiones y de c\u00f3mo est\u00e9 configurado el sistema.<\/p>\n<p data-start=\"4041\" data-end=\"4251\">\u00a1Por lo tanto!<\/p>\n<p data-start=\"4041\" data-end=\"4251\">Podemos decir que el error 429 se resuelve entendiendo su origen y ajustando el ritmo o la forma en que se hacen las peticiones.<\/p>\n<p data-start=\"4041\" data-end=\"4251\">Vamos a ver varios casos distintos para que veas a qu\u00e9 me refiero.<\/p>\n<h3 class=\"\" data-start=\"671\" data-end=\"748\"><span id=\"1_Si_el_problema_esta_en_el_cliente_o_en_la_aplicacion_que_hace_las_peticiones\">1. Si el problema est\u00e1 en el cliente o en la aplicaci\u00f3n que hace las peticiones<\/span><\/h3>\n<p class=\"\" data-start=\"230\" data-end=\"495\">Si te est\u00e1 saliendo un error 429 y sospechas que viene de tu propia app o cliente, lo primero que tienes que hacer es mirar c\u00f3mo est\u00e1s haciendo las peticiones. Muchas veces el problema viene de ah\u00ed, de que est\u00e1s enviando demasiadas solicitudes seguidas sin darte cuenta.<\/p>\n<p class=\"\" data-start=\"497\" data-end=\"798\">Empieza por revisar el c\u00f3digo. Aseg\u00farate de que no tienes bucles que est\u00e9n lanzando llamadas de forma continua o haciendo reintentos sin control. A veces un fallo peque\u00f1o (un bucle <code data-start=\"672\" data-end=\"679\">while<\/code> sin l\u00edmite o un reintento autom\u00e1tico sin condiciones) puede acabar mandando un mont\u00f3n de peticiones en segundos.<\/p>\n<p class=\"\" data-start=\"800\" data-end=\"1017\">Despu\u00e9s, ponle un poco de orden a las llamadas. Introducir un peque\u00f1o retraso entre peticiones (lo t\u00edpico: medio segundo, un segundo\u2026) puede venir genial si est\u00e1s rozando el l\u00edmite de uso de una API.<\/p>\n<p class=\"\" data-start=\"1019\" data-end=\"1342\">Tambi\u00e9n va bien usar lo que se llama \u00abretroceso exponencial\u00bb. En muy resumidas cuentas, si una petici\u00f3n falla no se hace un reintento inmediato, sino que se espera un poco antes de volver a probar y se va aumentando ese tiempo si sigue fallando. As\u00ed evitas insistir de m\u00e1s justo cuando el servidor ya te ha dicho que pares.<\/p>\n<p class=\"\" data-start=\"1344\" data-end=\"1605\">Y muy importante: si los datos que est\u00e1s pidiendo no cambian todo el rato, usa la cach\u00e9. Guarda la respuesta y reutil\u00edzala (si puedes), en lugar de hacer siempre la misma llamada. De este modo, no solo te evitas errores 429; adem\u00e1s, consigues que tu app funcione de forma m\u00e1s r\u00e1pida y eficiente.<\/p>\n<p class=\"\" data-start=\"1607\" data-end=\"1879\">Por \u00faltimo, si est\u00e1s usando una API externa, m\u00edrate la documentaci\u00f3n. Muchas veces, ah\u00ed te dicen el n\u00famero exacto de peticiones que puedes hacer por minuto o por hora.<\/p>\n<h3 class=\"\" data-start=\"1394\" data-end=\"1439\"><span id=\"2_Si_el_limite_lo_impone_una_API_externa\">2. Si el l\u00edmite lo impone una API externa<\/span><\/h3>\n<p class=\"\" data-start=\"173\" data-end=\"707\">Cuando usas una API de terceros, lo normal es que tenga un l\u00edmite de peticiones establecido, precisamente para evitar abusos.<\/p>\n<p class=\"\" data-start=\"173\" data-end=\"707\">Este tipo de restricciones suelen estar muy bien definidas por el propio proveedor, as\u00ed que lo primero que deber\u00edas hacer es consultar la documentaci\u00f3n oficial. Ah\u00ed suelen indicar cu\u00e1ntas peticiones puedes hacer por minuto, por hora o incluso por d\u00eda, seg\u00fan el plan que tengas contratado. Algunas APIs tambi\u00e9n te devuelven cabeceras como <code data-start=\"615\" data-end=\"628\">Retry-After<\/code>, que te indican exactamente cu\u00e1nto debes esperar antes de volver a intentarlo.<\/p>\n<p class=\"\" data-start=\"709\" data-end=\"1098\">Si ves que te est\u00e1s quedando corto con esos l\u00edmites, una opci\u00f3n bastante directa es ver si puedes subir de plan. Muchas APIs tienen versiones gratuitas con restricciones ajustadas, pero ofrecen opciones de pago que ampl\u00edan esos m\u00e1rgenes. A veces, con solo cambiar a un plan b\u00e1sico de pago, ya puedes trabajar con m\u00e1s comodidad y sin tener que andar limitando tanto tus llamadas.<\/p>\n<p class=\"\" data-start=\"1100\" data-end=\"1613\">Otra alternativa \u00fatil es organizar mejor las peticiones que haces. Si tienes muchas llamadas concentradas en un corto periodo de tiempo, puede que te convenga repartirlas a lo largo del d\u00eda o del minuto, en funci\u00f3n de c\u00f3mo est\u00e9 estructurado el l\u00edmite.<\/p>\n<p class=\"\" data-start=\"1100\" data-end=\"1613\">Y si la API lo permite, podr\u00edas usar varias claves de autenticaci\u00f3n (tokens o API keys) para dividir la carga entre ellas, aunque esto hay que hacerlo con cuidado y respetando las condiciones del servicio, porque no todas las plataformas dejan hacerlo.<\/p>\n<h3 class=\"\" data-start=\"1987\" data-end=\"2035\"><span id=\"3_Si_hay_varias_personas_compartiendo_la_misma_direccion_IP\">3. Si hay varias personas compartiendo la misma direcci\u00f3n IP<\/span><\/h3>\n<p class=\"\" data-start=\"147\" data-end=\"612\">Es una situaci\u00f3n habitual en entornos como oficinas, centros educativos o redes en las que se accede a internet a trav\u00e9s de un proxy o cortafuegos com\u00fan.<\/p>\n<p class=\"\" data-start=\"147\" data-end=\"612\">En estos casos, aunque las peticiones provengan de diferentes usuarios, desde fuera todas parecen salir desde la misma direcci\u00f3n IP p\u00fablica. Como consecuencia, el servidor o la API que las recibe las interpreta como si fueran de un \u00fanico cliente\u2026 y devuelve un error 429 por exceso de peticiones.<\/p>\n<p class=\"\" data-start=\"614\" data-end=\"963\">Si crees que esto es lo que te est\u00e1 pasando, lo mejor que puedes hacer es ponerte en contacto con el administrador de red. A veces, se puede configurar la salida a Internet de forma que distintas m\u00e1quinas usen diferentes IPs p\u00fablicas o incluso que salgan por distintos gateways para repartir el tr\u00e1fico. No siempre es viable, pero vale la pena revisarlo si el uso de la API es importante.<\/p>\n<p class=\"\" data-start=\"965\" data-end=\"1371\">Tambi\u00e9n es buena idea que te pongas en contacto con el proveedor del servicio que te est\u00e1 devolviendo el error. Puedes explicarles que hay varios usuarios leg\u00edtimos trabajando desde una \u00fanica IP y pedirles que hagan una excepci\u00f3n o que ajusten el l\u00edmite a esa situaci\u00f3n. Muchas veces, si justificas bien el caso, est\u00e1n dispuestos a colaborar, sobre todo si se trata de un entorno profesional o educativo.<\/p>\n<h3 class=\"\" data-start=\"2445\" data-end=\"2520\"><span id=\"4_Si_el_limite_esta_en_tu_propio_servidor_y_tu_controlas_el_backend\">4. Si el l\u00edmite est\u00e1 en tu propio servidor (y t\u00fa controlas el backend)<\/span><\/h3>\n<p class=\"\" data-start=\"191\" data-end=\"546\">\u00bfY qu\u00e9 pasa si eres t\u00fa el que gestiona el servidor o la API que est\u00e1 lanzando el error 429? Pues que, al menos, tienes la ventaja de poder ajustar la configuraci\u00f3n de acuerdo con tus necesidades. En este caso, el problema suele estar en alguna pol\u00edtica de <em data-start=\"422\" data-end=\"437\">rate limiting<\/em> que t\u00fa mismo (o alguien de tu equipo) has configurado para proteger el sistema ante un exceso de peticiones.<\/p>\n<p class=\"\" data-start=\"548\" data-end=\"956\">Lo primero es revisar d\u00f3nde est\u00e1 aplicado ese l\u00edmite. Puede estar en varios niveles: en el servidor web (como Nginx o Apache), en el <a href=\"https:\/\/www.lucushost.com\/blog\/frontend-backend\/\">backend<\/a> de tu aplicaci\u00f3n (por ejemplo, si usas Express, Flask o Django) o incluso en servicios externos como un firewall o una <a href=\"https:\/\/www.lucushost.com\/blog\/cdn-que-es\/\">CDN<\/a> (Cloudflare, por ejemplo, te permite configurar l\u00edmites de acceso). Cuando encuentres el punto correcto en el que est\u00e1 ese l\u00edmite, ya ser\u00e1s capaz de afinar con la soluci\u00f3n.<\/p>\n<p data-start=\"548\" data-end=\"956\">Entonces.<\/p>\n<p class=\"\" data-start=\"958\" data-end=\"1349\">Una vez localizado, ajusta esos l\u00edmites teniendo en cuenta el comportamiento real de tus usuarios. No es lo mismo una API pensada para tr\u00e1fico ocasional que una que se va a usar de forma intensiva o en horarios muy concretos. Puedes ser m\u00e1s flexible con usuarios autenticados, definir distintos umbrales seg\u00fan el tipo de cuenta o la funcionalidad que est\u00e9n utilizando, etc.<\/p>\n<p class=\"\" data-start=\"1351\" data-end=\"1666\">Otro punto importante es que muchas veces se limita por IP por defecto, pero puede ser mucho m\u00e1s eficaz y justo aplicar los l\u00edmites por usuario autenticado, token de API o cualquier otro identificador \u00fanico. De este modo, no castigas a los usuarios que comparten una misma IP o que est\u00e1n usando un proxy.<\/p>\n<p class=\"\" data-start=\"1668\" data-end=\"1969\">Por \u00faltimo, no te olvides de ser lo m\u00e1s claro posible con los usuarios de tu sistema. Devu\u00e9lveles cabeceras como <code data-start=\"1763\" data-end=\"1776\">Retry-After<\/code> para que sepan cu\u00e1nto tienen que esperar antes de volver a intentarlo.<\/p>\n<h2 data-start=\"1668\" data-end=\"1969\"><span id=\"Y_que_hago_si_el_error_429_me_lo_estan_generando_bots_scrapers_o_crawlers\">\u00bfY qu\u00e9 hago si el error 429 me lo est\u00e1n generando bots, scrapers o crawlers?<\/span><\/h2>\n<p class=\"\" data-start=\"292\" data-end=\"572\">Cuando detr\u00e1s del error 429 hay bots o scrapers (tuyos o de terceros), la cosa es un poco distinta, porque en estos casos las peticiones suelen ser muy numerosas, muy r\u00e1pidas y, a veces, poco respetuosas con los l\u00edmites del sistema.<\/p>\n<p class=\"\" data-start=\"574\" data-end=\"1120\">Si los bots los controlas t\u00fa (por ejemplo, porque est\u00e1s haciendo scraping de una web o recopilando datos desde una API) te tocar\u00e1 revisar bien su comportamiento. Aseg\u00farate de que est\u00e9n haciendo peticiones de forma gradual (es decir, con pausas razonables) e implementa un sistema de reintentos con retroceso exponencial.<\/p>\n<blockquote>\n<p class=\"\" data-start=\"574\" data-end=\"1120\">Te lo contaba m\u00e1s arriba. El retroceso exponencial consiste en que, tras recibir un error 429, el sistema no vuelva a intentarlo enseguida, sino que se espere unos segundos\u2026 Y que cada vez que vuelva a fallar, se espere un poco m\u00e1s. De este modo, te evitas errores y reduces el riesgo de que te bloqueen por mal uso.<\/p>\n<\/blockquote>\n<p class=\"\" data-start=\"1122\" data-end=\"1412\">Si lo que est\u00e1s haciendo es acceder a un sitio externo, mira si tiene API p\u00fablica, porque muchas veces es mejor usarla que hacer scraping directamente desde el HTML. Las APIs suelen estar preparadas para un uso controlado y muchas veces ofrecen l\u00edmites m\u00e1s claros y datos m\u00e1s estructurados.<\/p>\n<p class=\"\" data-start=\"1414\" data-end=\"1827\">Ahora bien, \u00bfqu\u00e9 pasa si los bots vienen de fuera y est\u00e1n accediendo a tu servidor? Pues lo m\u00e1s importante es identificarlos y limitar el impacto que puedan llegar a tener. Tienes varias opciones: puedes bloquear IPs, analizar los <code data-start=\"1622\" data-end=\"1634\">user-agent<\/code>, establecer reglas de rate limiting m\u00e1s estrictas para tr\u00e1fico sospechoso o usar herramientas como firewalls o servicios como Cloudflare para mitigar ese tr\u00e1fico de forma autom\u00e1tica.<\/p>\n<p class=\"\" data-start=\"1829\" data-end=\"2213\">Otra medida \u00fatil es controlar el acceso al contenido que no deber\u00eda estar indexado. Por ejemplo, puedes usar el archivo <code data-start=\"1946\" data-end=\"1958\"><a href=\"https:\/\/www.lucushost.com\/blog\/archivo-robots-txt\/\">robots.txt<\/a><\/code> para decirles a los crawlers qu\u00e9 pueden y qu\u00e9 no pueden visitar. No todos lo respetan, claro, pero es una buena primera medida.<\/p>\n<h2 data-pm-slice=\"1 1 []\"><span id=\"Casos_comunes_Error_429_en_WordPress_y_WooCommerce\">Casos comunes: Error 429 en WordPress y WooCommerce<\/span><\/h2>\n<p class=\"\" data-start=\"344\" data-end=\"629\">En sitios creados con WordPress (y m\u00e1s si tienes WooCommerce instalado), el error 429 puede aparecer por varias razones relacionadas con el uso de plugins, temas, peticiones externas o incluso ataques automatizados. Vamos a ver los casos m\u00e1s t\u00edpicos y qu\u00e9 puedes hacer en cada uno.<\/p>\n<h3 data-start=\"631\" data-end=\"675\"><span id=\"Plugins_que_hacen_demasiadas_peticiones\">Plugins que hacen demasiadas peticiones<\/span><\/h3>\n<p class=\"\" data-start=\"677\" data-end=\"1072\">Hay muchos plugins de WordPress que se conectan a servicios externos o realizan comprobaciones frecuentes (estoy pensando en los de SEO, los de seguridad, los de anal\u00edtica, los que hacen backups autom\u00e1ticos, etc.).<\/p>\n<p class=\"\" data-start=\"677\" data-end=\"1072\">Si tienes varios de estos plugins activos al mismo tiempo, es f\u00e1cil que superes el l\u00edmite de peticiones hacia una API externa o incluso hacia tu propio servidor, especialmente si est\u00e1n mal configurados y hacen llamadas constantes sin control.<\/p>\n<p class=\"\" data-start=\"1074\" data-end=\"1524\"><strong>\u00bfQu\u00e9 puedes hacer?<\/strong><\/p>\n<ul>\n<li data-start=\"1074\" data-end=\"1524\">Revisa los plugins que tienes activos y desactiva temporalmente los que no sean esenciales.<\/li>\n<li data-start=\"1074\" data-end=\"1524\">Actualiza todos los que mantengas, porque las versiones m\u00e1s recientes suelen estar mejor optimizadas.<\/li>\n<li data-start=\"1074\" data-end=\"1524\">Si puedes, escoge las alternativas m\u00e1s ligeras o que no dependan de llamadas externas constantes.<\/li>\n<li data-start=\"1074\" data-end=\"1524\">Tambi\u00e9n puedes limitar su frecuencia de ejecuci\u00f3n desde la configuraci\u00f3n o con ayuda de un plugin de optimizaci\u00f3n.<\/li>\n<\/ul>\n<h3 data-start=\"1526\" data-end=\"1570\"><span id=\"Problemas_con_bots_o_trafico_sospechoso\">Problemas con bots o tr\u00e1fico sospechoso<\/span><\/h3>\n<p class=\"\" data-start=\"1572\" data-end=\"1930\">Los sitios que usan WordPress (y, sobre todo, las tiendas WooCommerce) a veces reciben ataques de bots que intentan hacer scraping de productos, dejar spam en formularios, realizar ataques de fuerza bruta&#8230; Todo esto genera much\u00edsimas peticiones en poco tiempo, lo que puede disparar un error 429 si tienes alg\u00fan sistema de protecci\u00f3n activado.<\/p>\n<p class=\"\" data-start=\"1932\" data-end=\"2415\"><strong>\u00bfQu\u00e9 puedes hacer?<\/strong><\/p>\n<ul>\n<li data-start=\"1932\" data-end=\"2415\">Instala un plugin de seguridad como Wordfence, iThemes Security o Sucuri, que permiten limitar el n\u00famero de intentos por IP y bloquear comportamientos sospechosos.<\/li>\n<li data-start=\"1932\" data-end=\"2415\">Configura un firewall (ya sea desde un plugin o desde servicios como Cloudflare) para filtrar el tr\u00e1fico m\u00e1s agresivo.<\/li>\n<li data-start=\"1932\" data-end=\"2415\">Si usas WooCommerce, plant\u00e9ate proteger las p\u00e1ginas m\u00e1s delicadas (como el login, el carrito o la pasarela de pago) con medidas como reCAPTCHA o retrasos entre intentos.<\/li>\n<\/ul>\n<h3 data-start=\"2417\" data-end=\"2473\"><span id=\"Peticiones_desde_servicios_externos_o_integraciones\">Peticiones desde servicios externos o integraciones<\/span><\/h3>\n<p class=\"\" data-start=\"2475\" data-end=\"2776\">Si usas integraciones con otras plataformas (como CRMs, herramientas de email marketing, apps m\u00f3viles o sistemas de gesti\u00f3n de pedidos), es posible que esas conexiones est\u00e9n generando un n\u00famero elevado de peticiones a tu servidor o a la API REST de WordPress, lo que tambi\u00e9n puede provocar un error 429.<\/p>\n<p class=\"\" data-start=\"2778\" data-end=\"3196\"><strong>\u00bfQu\u00e9 puedes hacer?<\/strong><\/p>\n<ul>\n<li data-start=\"2778\" data-end=\"3196\">Revisa el comportamiento de esas integraciones y ajusta su frecuencia (si tienes acceso al c\u00f3digo, claro).<\/li>\n<li data-start=\"2778\" data-end=\"3196\">Si el tr\u00e1fico viene desde una aplicaci\u00f3n de terceros, contacta con ellos para ver si pueden reducir la carga o espaciar m\u00e1s las llamadas.<\/li>\n<li data-start=\"2778\" data-end=\"3196\">En algunos casos, puede estar bien implementar una autenticaci\u00f3n m\u00e1s precisa (como tokens por usuario) o cach\u00e9 en las respuestas (si no cambian constantemente).<\/li>\n<\/ul>\n<h3 data-start=\"3198\" data-end=\"3257\"><span id=\"Limites_de_servicios_como_Cloudflare\">L\u00edmites de servicios como Cloudflare<\/span><\/h3>\n<p class=\"\" data-start=\"3259\" data-end=\"3515\">Hay servicios de CDN o de seguridad (como Cloudflare) que aplican autom\u00e1ticamente l\u00edmites de acceso si detectan un n\u00famero excesivo de peticiones realizadas en poco tiempo.<\/p>\n<p><strong>\u00bfQu\u00e9 puedes hacer?<\/strong><\/p>\n<ul>\n<li>Revisa si el error viene de Cloudflare (puedes verlo en los logs o mensajes de error). Si es as\u00ed, puedes ajustar las reglas de rate limiting desde su panel.<\/li>\n<\/ul>\n<h2 data-pm-slice=\"1 1 []\"><span id=\"Evita_que_el_error_429_vuelva_a_frenar_tu_web\">Evita que el error 429 vuelva a frenar tu web<\/span><\/h2>\n<p class=\"\" data-start=\"171\" data-end=\"453\">El error HTTP 429 no es de los m\u00e1s conocidos, pero cuando aparece puede dejar parte de tu sitio fuera de juego o generar una mala experiencia para tus usuarios o clientes. Por suerte, con un poco de an\u00e1lisis es relativamente f\u00e1cil detectar su origen y aplicar una soluci\u00f3n efectiva.<\/p>\n<p class=\"\" data-start=\"455\" data-end=\"782\">Como hemos visto, puede venir de muchos frentes: desde plugins que hacen demasiadas peticiones hasta integraciones mal optimizadas, bots que saturan el servidor o incluso l\u00edmites impuestos por terceros. Lo importante es no quedarse solo con el mensaje de error 429, sino entender qu\u00e9 hay detr\u00e1s.<\/p>\n<p data-start=\"784\" data-end=\"1070\">\u00bfEl error 429 ha llamado a tu puerta? Pues ya sabes c\u00f3mo cerr\u00e1rsela sin que te cueste visitas\u2026 ni quebraderos de cabeza.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>El error HTTP 429 \u00abToo many requests\u00bb es una respuesta del servidor que indica que un mismo cliente ha hecho demasiadas peticiones en un periodo de tiempo muy breve. Por lo tanto, no se trata de un fallo t\u00e9cnico del servidor, ni mucho menos, sino de una medida de seguridad que se pone en marcha de forma intencionada para evitar abusos y sobrecargas de los recursos disponibles.<\/p>\n","protected":false},"author":7,"featured_media":12823,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[45],"tags":[],"_links":{"self":[{"href":"https:\/\/www.lucushost.com\/blog\/wp-json\/wp\/v2\/posts\/12777"}],"collection":[{"href":"https:\/\/www.lucushost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lucushost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lucushost.com\/blog\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lucushost.com\/blog\/wp-json\/wp\/v2\/comments?post=12777"}],"version-history":[{"count":11,"href":"https:\/\/www.lucushost.com\/blog\/wp-json\/wp\/v2\/posts\/12777\/revisions"}],"predecessor-version":[{"id":12825,"href":"https:\/\/www.lucushost.com\/blog\/wp-json\/wp\/v2\/posts\/12777\/revisions\/12825"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lucushost.com\/blog\/wp-json\/wp\/v2\/media\/12823"}],"wp:attachment":[{"href":"https:\/\/www.lucushost.com\/blog\/wp-json\/wp\/v2\/media?parent=12777"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lucushost.com\/blog\/wp-json\/wp\/v2\/categories?post=12777"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lucushost.com\/blog\/wp-json\/wp\/v2\/tags?post=12777"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}