La parte difficile è distinguere tra le richieste provenienti dalla botnet e le richieste degli utenti che effettivamente vogliono leggere le pagine. Non esiste un modo affidabile al 100% per farlo in generale, perché alcuni strumenti DDoS sono abbastanza bravi a imitare gli umani, e anche perché la maggior parte degli umani sembra essere abbastanza brava a comportarsi come droni senza cervello. Tuttavia, questo è il nocciolo del problema: devi trovare una caratteristica distintiva tra le richieste botnet e le richieste non di botnet (e se ne trovi una, la botnet del mese prossimo si sarà adattata - questa è una gara senza fine).
Una possibile difesa è richiedere una Prova di lavoro dai clienti. Incorpora nel tuo sito un codice Javascript che esegue un calcolo relativamente complesso, il cui output viene incorporato nella successiva richiesta da quel client. Se fatto correttamente, allora potreste assicurarvi che la botnet abbia bruciato almeno una parte considerevole della CPU nel processo; l'idea è che se DDoSing il tuo server è troppo costoso, allora il botnet master dirigerà la sua ira su un altro bersaglio. Dopo tutto, è un uomo d'affari ...
Non ho visto PoW distribuito in un contesto Web e le idiosincrasie di Javascript potrebbero renderlo difficile (un browser con un interprete Javascript non produrrà molto "lavoro" al secondo), ma il concetto sembra valido.