La parte difícil es distinguir entre las solicitudes de la red de bots y las de los seres humanos que realmente desean leer las páginas. No hay una forma 100% confiable de hacerlo en general, porque algunas herramientas DDoS son bastante buenas para imitar a los humanos, y también porque la mayoría de los humanos parecen ser bastante buenos para comportarse como drones sin mente. Sin embargo, esa es la esencia del problema: debe encontrar una característica distintiva entre las solicitudes de botnet y las que no lo son (y si encuentra una, la botnet del próximo mes se habrá adaptado, esta es una carrera interminable).
Una posible defensa es requerir una Proof of Work de los clientes. Incorpore en su sitio algún código Javascript que realice un cálculo relativamente complejo, cuya salida se incrustará en la próxima solicitud de ese cliente. Si se hace correctamente, entonces podría asegurarse de que la botnet haya quemado al menos una cantidad sustancial de CPU en el proceso; la idea es que si DDoSing su servidor es demasiado caro, entonces el botnet master dirigirá su ira hacia otro objetivo. Después de todo, él es un hombre de negocios ...
No he visto PoW desplegado en un contexto web, y las idiosincrasias de Javascript pueden dificultar la acción (un navegador con un interpretador de Javascript no hará que "funcione" por segundo), pero el concepto parece correcto.