2011-03-20 18 views
10

Necesito detectar raspado de información en mi sitio web. Probé la detección basada en patrones de comportamiento, y parece ser prometedor, aunque el cálculo es relativamente pesado.La forma de detectar el raspado web

La base es recopilar las marcas de tiempo de la solicitud de cierto lado del cliente y comparar su patrón de comportamiento con un patrón común o un patrón precalculado.

Para ser más precisos, colecciono intervalos de tiempo entre las solicitudes en matriz, indexada por función del tiempo:

i = (integer) ln(interval + 1)/ln(N + 1) * N + 1 
Y[i]++ 
X[i]++ for current client 

donde N es el tiempo (recuento) límite, intervalos mayores que N se dejan caer. Inicialmente, X e Y están llenos de unos.

Luego, después de obtener suficiente número de ellos en X e Y, es hora de tomar una decisión. Criterios es parámetro C:

C = sqrt(summ((X[i]/norm(X) - Y[i]/norm(Y))^2)/k) 

donde X es ciertos datos de los clientes, Y es de datos comunes, y la norma() es la función de calibración, y k es el coeficiente de normalización, dependiendo del tipo de norma(). Hay 3 tipos:

  1. norm(X) = summ(X)/count(X), k = 2
  2. norm(X) = sqrt(summ(X[i]^2), k = 2
  3. norm(X) = max(X[i]), k is square root of number of non-empty elements X

C está en el rango (0..1), 0 significa que no hay desviación comportamiento y 1 es la desviación max.

La calibración del tipo 1 es la mejor para repetir las solicitudes, escriba 2 para repetir la solicitud con pocos intervalos, escriba 3 para los intervalos de solicitud no constantes.

¿Qué opinas? Le agradeceré que pruebe esto con sus servicios.

+4

Solo busqué en Google "escarpado" en caso de que fuera un término con el que no estaba familiarizado. ¿Debo entender que debe significar "raspado"? –

+1

@Martin - 'screen-raspado' había sido seleccionado como una etiqueta, así que he editado en función de eso. – slugster

+1

Solo tengo que decir: el raspado siempre existirá. En el futuro, al menos debería considerar un modelo de negocio adecuado para el siglo XXI. – rook

Respuesta

7

Para ser sincero, su enfoque es completamente inútil porque es un puente trivial. Un atacante ni siquiera tiene que escribir una línea de código para eludirlo. Los servidores proxy son free y puede iniciar una nueva máquina con una nueva dirección IP en amazon ec2 por 2 centavos por hora.

Un mejor enfoque es Roboo que utiliza técnicas de cookies para frustrar robots. La gran mayoría de los robots no pueden ejecutar javascript o flash, y esto se puede usar para su ventaja.

Sin embargo todo esto "(en) security though obscurity", y la única razón por por las que podría trabajar se debe a que sus datos no vale más que el gasto programador de 5 minutos en él. (Roboo incluido)

+4

El objetivo es ** detectar ** raspado, no prevenir. – aks

+0

@aks Si alguien sabe, entonces es trivial omitir. En este caso, no lo sabrían. – rook

+0

usando intervalos aleatorios parece frustrar su enfoque. – gonzobrains

1

Hago un montón de raspado web y siempre uso múltiples direcciones IP e intervalos aleatorios entre cada solicitud.

Al raspar una página, normalmente solo descargo el HTML y no las dependencias (imágenes, CSS, etc.). Entonces, podría intentar verificar si el usuario descarga estas dependencias.

+0

Es la manera más fácil de detección, entre las cookies que se verifican, y es obvio que se debe implementar. Aquí trato de adivinar raspado por anomalía en la actividad del usuario. Esto puede dar como resultado una falsa alarma, de todos modos, el usuario estaba haciendo algo con la estrella. – aks

+0

Eso puede no funcionar en todos los casos porque muchos navegadores se pueden configurar para no descargar ninguna dependencia a menos que el usuario haga clic en ellos (es decir, bloqueadores de anuncios, bloqueadores de flash, etc.). Los navegadores de texto tampoco pueden descargar ciertas dependencias. – gonzobrains

+0

buen punto acerca de los navegadores de texto – hoju

3

Si está preguntando específicamente sobre la validez de su algoritmo, no está mal, pero parece que lo está complicando en exceso. Debe usar las metodologías básicas ya empleadas por WAF para calificar conexiones de límite. Uno de esos algoritmos que ya existe es el Leaky Bucket Algorith (http://en.wikipedia.org/wiki/Leaky_bucket).

En cuanto a la limitación de velocidad para detener el raspado de la web, existen dos fallas al intentar calificar las conexiones de límite. Primero, la capacidad de las personas para usar redes proxy o TOR para anonimizar cada solicitud. Esto esencialmente anula sus esfuerzos. Incluso el software de raspado fuera de la estantería como http://www.mozenda.com utiliza un gran bloque de direcciones IP y rotar a través de ellos para resolver este problema. El otro problema es que podrías bloquear a las personas que usan una IP compartida. Las empresas y universidades a menudo usan NAT y su algoritmo podría confundirlas como una sola persona.

Para una descripción completa, soy un cofundador de Distil Networks y que a menudo hacer agujeros en WAF como limitante de la velocidad. Pensamos que se requiere una solución más completa y, por lo tanto, la necesidad de nuestro servicio.

Cuestiones relacionadas