Per consentire i Googlebot legittimi basta fare un reverse DNS.
if(preg_match('/Googlebot/i',$_SERVER['HTTP_USER_AGENT'])){ // Ti stai dichiarando Googlebot. Ok vediamo se sei un impostore. $ip = $_SERVER['REMOTE_ADDR']; $name = gethostbyaddr($ip); // Bene ora sappiamo il tuo nome. Verifichiamo la corrispondenza con l'IP. $host = gethostbyname($name); if(preg_match('/Googlebot/i',$name)){ if ($host == $ip){ echo 'Ok sei tu!' } else { echo 'Stai provando a fregarmi brutto impostore!' } } else { echo 'Stai provando a fregarmi brutto impostore!' } } else { echo 'Puoi andare dove vuoi. Non sei Googlebot, ma sei onesto.' }In ogni caso ci sono strumenti ottimi per automatizzare tutto questo. Un esempio è CSF. Facilmente installabile e configurabile.
In alternativa puoi usare rate limit che è facilmente implementabile sia in Apache che Nginx. Se sei su Apache c'è anche il buon Mod_Qos che serve proprio a limitare i bot.