Detección de bots considerando el tiempo de llegada a la solicitud

4

Si hay algunas posibilidades de detectar un bot al considerar el tiempo de visualización de la página de los usuarios, ¿es posible medir este tiempo?

Cuando un usuario solicita una página (solicitud de página), el navegador solicita otros componentes dentro de esa página (solicitudes en línea), es decir, imágenes, CSS, JS, ...

Al simplemente detectar el tráfico, ¿es posible encontrar el intervalo de tiempo entre las solicitudes de la página del usuario (tiempo de visualización de la página) descartando las solicitudes en línea? Es necesario diferenciar la solicitud de página y las solicitudes en línea. ¿Es posible?

    
pregunta Yasser 13.01.2013 - 15:44
fuente

6 respuestas

5

Aquí en Incapsula, en realidad usamos algunos de estos métodos para la detección de bots (es decir, los desafíos de JS y Cookie) pero no estoy seguro de la métrica del tiempo de visualización de la página.

Por un lado, quieres detectar y bloquear bots maliciosos lo más rápido posible y hay mejores cosas que puedes hacer que esperar, aunque solo sea por un corto tiempo.

También tengo que estar de acuerdo (+1) con @yfeldblum acerca de los encabezados Expire y su capacidad para interrumpir las pruebas basadas en la carga de recursos. Dicho esto, la CND y los servidores múltiples no son un problema si los desafíos los realiza el propio proveedor de CDN.

También quería contribuir con algunas otras ideas para la detección de bots:

  • Comportamiento (es decir, acceso temprano a robots.txt)
  • Orden de encabezado HTTP / parámetros faltantes

También, me gustaría sugerir que no se confíe la exclusividad en ninguno de estos métodos porque esto llevará a una identificación falsa positiva. En su lugar, intente combinarlos en un proceso de verificación cruzada paso a paso. (es decir, desafío JS-si falla- > desafío de Cookie-si falla- > acceso Robots.txt y así sucesivamente ...)

Finalmente, en algún momento tendrás que comenzar a recopilar y confiar en firmas para minimizar la redundancia.

Después de todo, no puedes seguir probando el bot Baidu cada vez que visita, esto está a solo un paso de un DDoS autoinfligido. :)

    
respondido por el Igal Zeifman 14.01.2013 - 13:52
fuente
4

Hay algunos problemas con este enfoque:

  1. Múltiples servidores web: si tiene múltiples servidores web, debe mantener este seguimiento en otro lugar, posiblemente de manera distribuida.
  2. Alojamiento de activos de CDN: si hospeda activos en un CDN, entonces tendría que extender este seguimiento para incluir los activos alojados en CDN.
  3. Identificación de activos y almacenamiento en caché de los activos: si toma la huella digital de los nombres de archivo de sus activos construidos con los resúmenes de md5 de sus contenidos, y establece encabezados Expires: never efectivos para los activos con huellas digitales, entonces los navegadores no solicitarán activos de sus servidores o su CDN. el tiempo, lo que lleva a una tasa de falsos positivos muy grande.
respondido por el yfeldblum 13.01.2013 - 19:14
fuente
3

Dado que HTTP es un protocolo sin estado, debe desarrollar algunos atributos de nivel de sesión para diferenciar entre las sesiones web del bot y del cliente. Lo que recomiendo es implementar un firewall de capa de aplicación que permita crear y mantener variables de nivel de sesión en cada sesión web. A continuación se muestra una ModSecurity Regla para supervisar una sesión web.

SecRule REQUEST_COOKIES:PHPSESSID !^$ chain,nolog,pass
SecAction setsid:%{REQUEST_COOKIES.PHPSESSID}
SecRule REQUEST_URI "^/cgi-bin/finger$" "pass,log,setvar:session.score=+10"
SecRule SESSION:SCORE "@gt 50" "pass,log,setvar:session.blocked=1"
SecRule SESSION:BLOCKED "@eq 1" "log,deny,status:403"

También recomendaría algunos ajustes en el monitor HTTP de OpenNMS que puede ser de alguna ayuda.

    
respondido por el Ali Ahmad 13.01.2013 - 16:57
fuente
3

Parece que si se implementara, su enfoque atraparía muchos bots. Hay robots que ejecutan una pila web completa como webkit o mozilla que todavía solicitaría los recursos en línea, establecería cookies e incluso ejecutaría javascript. Lamentablemente, si alguien quiere apuntar específicamente a su sitio, podría usar imacros para escribir un bot de navegador que anule su enfoque de detección de bots.

Aún así, creo que es un esfuerzo digno, por lo que deberías intentarlo.

    
respondido por el Daniel Wozniak 14.01.2013 - 01:53
fuente
2

Hay un montón de otras heurísticas que encuentro que atrapan muchos bots y raspadores:

  1. Actualizando manualmente una expresión regular de agente de usuario (es sorprendente la cantidad de bots que tienen palabras como bot, raspador, agente, araña en la cadena de agente de usuario.
  2. ¿Este IP crea una sesión nueva en cada solicitud (implica que no almacena ni devuelve las cookies de sesión)?
  3. Relación de IPs por agente de usuario
  4. Proporción de aciertos por IP
  5. La proporción de tipos de páginas solicitadas (1 página de índice, 50 páginas de elementos se parece más a un agente mecánico)
  6. Recuento de solicitudes para la misma página (algunos bots tienen errores)
  7. # solicitudes de página por minuto (es muy poco probable que una persona solicite 100 páginas en cinco minutos).
  8. Geolocate y whois la IP de origen para IP que solicitan más de N páginas al día (es poco probable que mi sitio en inglés centrado en el nyc tenga un usuario en Kazajistán o con una dirección IP ec2)
respondido por el Peter booth 15.05.2013 - 22:16
fuente
1

Estos dos artículos ( 1st y 2nd ) están bastante relacionados con tu pregunta. Estos no son gratuitos, así que para aquellos que no tienen acceso a ellos, permítanme decirles brevemente qué hace esto.

Con solo mirar una actividad de los anfitriones en la página web, los autores intentan diferenciar el spambot del ser humano. En el primer artículo, observan Mouse clicks and movements, Keyboard actions Form field focus and un-focus Form load and submission Page navigation

Para su pregunta, si un humano llena un cuadro de texto en un promedio de 10 segundos, y una persona lo llena en un segundo, esto es sospechoso y puede ser una actividad de spambot. Puede usar esto para sospechar, pero no puede garantizar que los usuarios rápidos son spambots.

Aquí hay una cosa importante, los spambots y los rastreadores se comportan de manera similar, por lo que es realmente difícil (tal vez imposible) diferenciar estos dos.

    
respondido por el smttsp 15.01.2013 - 19:27
fuente

Lea otras preguntas en las etiquetas