Hay varios métodos potenciales que puedes usar para diferenciar a los bots de los humanos, pero ninguno de ellos es probable que sea del 100%
Obviamente, como dices, la limitación de velocidad atrapa a los robots realmente estúpidos que no saben hacer clic a velocidad humana. Podría decir un clic por IP, pero eso desinflará artificialmente sus estadísticas en el caso de personas detrás de un proxy (que se volverá más común a medida que se agoten las direcciones IPv4)
El bloqueo de IP no es muy útil en los días de la computación en la nube, es bastante fácil para un atacante obtener una IP diferente o un rango de IP para trabajar si están lo suficientemente dedicados.
Como dice @fas, puedes probar el agente de usuario, pero de nuevo eso solo detectará a los robots que no saben cómo configurar un agente de usuario, lo que no es realmente demasiado difícil de hacer.
Podría introducir alguna tarea "difícil para la computadora" en el proceso de hacer clic, pero eso haría que su sitio sea bastante hostil (por ejemplo, CAPTCHA). Nuevamente no es 100%, pero es más difícil de superar trivialmente.
En última instancia, sugeriría que depende de qué tan motivados y bien financiados estén tus atacantes. Si están razonablemente motivados y tienen algo de efectivo, solo pueden contratar a personas reales para que hagan clic en el enlace (por ejemplo, a través de amazon Mechanical Turk), momento en el que probablemente sea difícil diferenciar el tráfico legítimo del tráfico no legítimo. / p>
Suponiendo que sus atacantes sean más informales, yo diría que combinar el Agente de usuario y la dirección IP de origen. Los Agentes de usuario pueden ser relativamente identificables (más información en el panopticlick site ). Entonces, si limita cada agente de usuario a un clic por dirección IP de origen, puede obtener una aproximación decente, contra un atacante relativamente poco sofisticado.