bots - que - Detección programática de Bot
como hacer un bot (9)
Aclare por qué desea excluir bots y cuán tolerante es con la clasificación errónea.
Es decir, ¿tiene que excluir a cada bot a expensas de tratar a los usuarios reales como los bots? ¿O está bien si los robots rastrean su sitio siempre que no tengan un impacto en el rendimiento?
La única forma de excluir todos los bots es cerrar su sitio web. Un usuario malintencionado puede distribuir su bot a suficientes máquinas para que no pueda distinguir su tráfico de los usuarios reales. Trucos como JavaScript y CSS no detendrán a un atacante determinado.
Si un "medio feliz" es satisfactorio, un truco que podría ser útil es ocultar los enlaces con CSS para que no sean visibles para los usuarios en un navegador, pero aún estén en el HTML. Cualquier agente que siga uno de estos enlaces de "veneno" es un bot.
Necesito escribir un código para analizar si un usuario dado en nuestro sitio es o no un bot. Si es un bot, tomaremos alguna acción específica. Ver el User Agent no es algo que sea exitoso para nada más que bots amigables, ya que puedes especificar cualquier agente de usuario que desees en un bot. Estoy buscando comportamientos de bots hostiles. Varias ideas que he tenido hasta ahora son:
- Si no tiene una ID de navegador
- Si no tienes una ID de sesión
- No se puede escribir una cookie
Obviamente, hay algunos casos en los que un usuario legítimo parecerá un bot, pero está bien. ¿Hay otras formas programáticas para detectar un robot o detectar algo que se parece a un robot?
Bueno, esto es realmente para una página particular del sitio. No queremos que un bot envíe el formulario b / c. Desordena el seguimiento. Honestamente, los bots amigables, Google, Yahoo, etc. no son un problema, ya que generalmente no llenan el formulario para comenzar. Si sospecháramos que alguien es un bot, podríamos mostrarles una imagen de captcha o algo así ... Si pasaron, no son un bot y el formulario envía ...
He escuchado cosas como poner un formulario en flash o hacer el envío de javascript, pero preferiría no evitar que los usuarios reales usen el sitio hasta que sospeche que eran un bot ...
Creo que su idea al verificar la identificación de la sesión ya será bastante útil.
Otra idea: puede verificar si los recursos integrados también se descargan.
Un robot que no carga imágenes (por ejemplo, para ahorrar tiempo y ancho de banda) debe distinguirse de un navegador que normalmente cargará imágenes incrustadas en una página.
Sin embargo, tal control podría no ser adecuado como una verificación en tiempo real porque tendría que analizar algún tipo de registro del servidor que podría llevar mucho tiempo.
Los agentes de usuario pueden ser falsificados. Captchas han sido descifradas Las cookies válidas se pueden enviar de vuelta a su servidor con solicitudes de página. Los programas legítimos, como Adobe Acrobat Pro, pueden entrar y descargar su sitio web en una sola sesión. Los usuarios pueden deshabilitar JavaScript. Como no existe una medida estándar del comportamiento del usuario "normal", no se puede diferenciar de un bot.
En otras palabras: no se puede hacer sin atraer al usuario a alguna forma de chat interactivo y esperar que pase la prueba de Turing, y de nuevo, también podría ser un bot realmente bueno.
Para cada sesión en el servidor puede determinar si el usuario estaba haciendo clic o escribiendo muy rápido en cualquier momento. Después de un número determinado de repeticiones, configure el indicador "isRobot" como verdadero y conserve los recursos dentro de esa sesión. Normalmente no le dices al usuario que ha sido detectado por un robot, ya que él solo comenzaría una nueva sesión en ese caso.
Una prueba simple es javascript:
<script type="text/javascript">
document.write(''<img src="/not-a-bot.'' + ''php" style="display: none;">'');
</script>
El not-a-bot.php puede agregar algo en la sesión para señalar que el usuario no es un bot, luego devolver un solo píxel gif.
La URL se divide para disfrazarla del bot.
Usted dice que está bien que algunos usuarios aparezcan como robots, por lo tanto,
La mayoría de los bots no ejecutan javascript. Use javascript para hacer una llamada tipo Ajax al servidor que identifica esta dirección IP como NonBot. Almacene eso durante un período de tiempo determinado para identificar futuras conexiones de esta IP como buenos clientes y para evitar más llamadas innecesarias de JavaScript.
Oye, gracias por todas las respuestas. Creo que una combinación de algunas sugerencias funcionará bien. Principalmente, el elemento de formulario oculto que mide la rapidez con la que se completó el formulario y posiblemente la idea del "enlace de veneno". Creo que cubrirá la mayoría de las bases. Cuando hablas de bots, no vas a encontrarlos a todos, así que no tiene sentido pensar que lo harás ... Bots tontos.
Aquí hay una idea:
La mayoría de los bots no descargan css, javascript e imágenes. Simplemente analizan el html.
Si puede realizar un seguimiento en la sesión de un usuario, descargue o no todo lo anterior, por ejemplo, enrutando todas las solicitudes de descarga mediante un script que registre los intentos, podrá identificar rápidamente a los usuarios que solo descarguen el html en bruto (muy pocos los usuarios normales lo harán).