El otro día estaba recibiendo múltiples "ataques" automatizados de diversos IPs, casi todos desde EEUU pero, en realidad, era spam chino el que querían infiltrar.
Con lo baratos que son los VPS se utilizan para crear VPNs como expliqué aquí una vez y con esa VPNs logran entrar desde China para dejar su spam. Con un costo de USD 5 por mes infectan todo haciéndose pasar por norteamericanos.
Pues bien, ¿hay forma de controlarlo? porque sólo con el IP no alcanza... peeeero...
El IP como método de identificación todavía sigue sirviendo y mucho, yo utilizo IP Stack para obtener el origen de cada uno, si es de China o Rusia los bloqueo, ya me hartaron y no me interesa si tengo algún lector por allí (que use una VPN).
Pero si queremos hacer un trabajo más fino hay otro servicio que podríamos utilizar para combinarlo: Abuse IP DB. (no es chivo, no me dan ni referer :P pero lo encontré buscando eso mismo)
Es una base de datos con denuncias por abuso desde ciertas direcciones de IP, uno envía el número, recibe una respuesta con las denuncias que tuvo.
Aquí es donde podemos combinar ambos servicios (o usar sencillamente el último), yo prefiero usar los dos para armar mi propia base de datos de estos servicios.
El tema es así: ambos cobran luego de una X cantidad de consultas así que prefiero guardar cada consulta en mi base de datos a modo de caché y no volver a hacer la consulta una y otra vez consumiendo la API.
Por ejemplo siempre guardo cada IP que entra, lo consulto a IPStack y con eso obtengo la nacionalidad del mismo. Se que esto puede cambiar, si un país le vende un stack de IPs a otro, pero como es poco probable (no imposible) lo desestimo.
El día en que reciba mucho spam desde un país poco conocido lo bloqueo también y a la mierda.
Luego puedo consultar ese IP a AbuseIPDB y ver cómo responde. Puedo hacerlo ocasionalmente, por ejemplo si el IP es chino es un poco obvio, podemos bloquearlo pero si es de EEUU (por la primer consulta) recién ahí puedo hacer la consulta de si es abusivo ya que muchos IPs de VPS nortamericanos son usados por los chinos para abusar. No es lama idea sólo hacer la consulta de abuso para esos IP y los de Francia que suelen usarse para lo mismo.
Podemos hacerlo por todos también, ya usando las cuentas gratuitas de cada uno tenemos unas 10.000 consultas por mes en IPStack y unas 30.000 por mes en AbuseIPDB con lo que la mayoría de los sitios pequeños no necesitan pagar.
En mi caso pude corroborar que no son más de 544 IPs argentinos los que entran al blog, unos 164 de EEUU, 47 de Mexico y 41 de España. Muchos son proxys de empresas así que se reparten entre más o menos el doble de gente.
Con esto cacheado no hay casi consumo de la API y "vuela", por ende no debería ser difícil consultar cada vez el IP y verificar si se está usando para spam.
Recomendaría ponerle un TTL (time to live) a la data que cacheen de AbuseIPDB porque esa sí se actualiza más seguido. Un equilibrio para no pasarse de más de 1000 por día que es el límite que tiene la API antes de cobrarte.
Y con esto lo resuelven! luego a programar! claro, yo aquí lo resuelvo muy sencillo y no debe ser difícil para ningún lenguaje ni framework.
Aquí les dejo una tablita de los resultados de los últimos meses en mi blog
544 Argentina 164 United States 122 China 47 Russia 47 Mexico 41 Spain 35 Ukraine 29 Germany 20 France 19 Hong Kong SAR China 17 Chile 14 Netherlands 12 Norway 11 Vietnam 10 UruguayDe esta lista es fácil detectar qué tráfico NO es legítimo, no creo que mis lectores chinos, rusos, ucranianos, hongkongenses y vietnamitas se molesten mucho si los bloqueo :D