2009-10-01 14 views
10

Estoy registrando cada visita a mi sitio web y determinar si el visitante es humano es importante. He buscado en la web y he encontrado muchas ideas interesantes sobre cómo detectar si el visitante es humano.Cómo detectar si un visitante es humano y no es una araña

  1. si el visitante se registra en y pasó código de imagen
  2. detección de eventos de ratón
  3. detectar si el usuario tiene un navegador [agente de usuario]
  4. detección de clics de ratón [¿Cómo puedo ir sobre esto?]

¿Hay alguna otra forma segura de detectar si el visitante es humano?

+34

Pregúntale cuántas patas tiene. –

+0

Bueno, Nick. Me encanta el humor ... +1 – pixelbobby

+0

- Merci, amigos! –

Respuesta

10

Tiene que distinguir entre los bien respetados robots que respetan la ley y los desagradables robots ladrones de datos.

Nice robots leerá la metaetiqueta "Robots" y cumplirá con su política. 'no index' es una forma educada de rechazar cualquiera de sus servicios.

Los robots maliciosos por otro lado van a falsificar cualquier "UserAgent" y encabezados similares.

Captchas son probablemente el mejor método, pero pueden P * ss fuera de los robots si se usan demasiado.

Un método furtivo que he visto es tener un enlace recursivo como el primer enlace de la página que enviará el rastreador a un bucle. Otra es tener un enlace a un sitio que no te gusta como el primer enlace de la página para distraer la atención de los robots. Ambos enlaces pueden convertirse fácilmente en invisibles para los agentes basados ​​en carne.

+5

+1 para agentes a base de carne. –

0

Haga que el usuario responda una pregunta como "¿Qué es 3 + 5?"

+0

Mejor pregunte: ¿quién es usted? Quien te creó? ... lol – eglasius

+0

No estoy de acuerdo con esto, ya que obviamente interrumpiría la experiencia del usuario. ya es suficiente dolor llenar un captcha. sin embargo, si esto no te importa, esta sería definitivamente una solución. – pixelbobby

+0

Preguntó si había otras formas, ¿verdad? lol –

8

La manera más confiable de detectar arañas es por dirección IP. Las arañas comunes usan varias direcciones IP comúnmente conocidas. http://www.iplists.com/nw/

+0

¡Lástima que esta lista no se haya actualizado, sin mención de BING, por ejemplo! Sin embargo, creo que es un buen comienzo. – MyDaftQuestions

0

Recuerde que, haga lo que haga, está dificultando que un proceso automatizado lo haga, no significa que lo esté impidiendo por completo.

En cuanto a los eventos de mouse, son cosas que ocurren en el lado del cliente, por lo que solo estaría agregando información a la solicitud.

2

Debe verificar la propiedad user-agent. Es probable que puedas lograr esto en C#.

Por ejemplo, HttpContext.Current.Request... y luego solicite el agente de usuario. Esto podría proporcionarle algo como crawler.google o lo que tenga, por lo que es posible que tenga que crear su propia lista para verificar y devolver el resultado.

+1

Los bots maliciosos o que se portan mal falsificarán Internet Explorer o Firefox, haciendo que este método sea inservible. –

+5

¡bien carbón en la media para ellos! – pixelbobby

+1

@Tim, entonces estarás detrás de esta pregunta: http://stackoverflow.com/questions/233192/detecting-stealth-web-crawlers –

0

Con los formularios, puede usar javascript, modificar la acción del formulario para apuntar a una url real. Eso filtrará cualquier bot que no represente páginas con javascript. Puede tener múltiples botones de envío donde solo uno de ellos realmente funciona y luego oculta todo el resto con css. Los bots no sabrán en qué hacer clic primero. Si alguna vez recibe un clic de uno de los botones falsos, entonces sabrá que tiene bot.

0

Utilice Captcha o use Javascript para validar. Un gran porcentaje de bots no evalúa Javascript.

2

Si lo que más le preocupa es la validación de formularios ... Sugeriría Akismet - el servicio gratuito de wordpress para detectar spam.Funciona muy bien.

Si intentas guardar el servidor con un poco de ancho de banda ... la pregunta es completamente diferente y probablemente iría de otra manera, como evitar enlaces en caliente.

Dicho esto, ninguna solución es perfecta, pero debe intentar seguir con la que le proporciona un nivel mínimo de confort y la de sus usuarios con un máximo. Es todo acerca de los usuarios.

1

Si va por la ruta de Captcha, siempre puede usar captcha invisible.

Crear un control de entrada con una etiqueta que diga qué es 5 + 2 y luego usar javascript resuelva esto e ingrese el valor en su cuadro de texto, luego oculte el campo de texto. Casi todas las arañas no pueden ejecutar Javascript, cualquier usuario normal que ni siquiera saben que está sucediendo, y cualquier usuario sin Javascript solo ve el campo para completar.

Google Analytics también funciona en JS, ¿podría usar eso?

15

a new captcha approach

La tira cómica es de XKCD.

+2

puramente increíble. – pixelbobby

+2

http://xkcd.com/license.html –

1

Es posible que desee ver en HttpCapabilitiesBase Class hay algunas propiedades completas de ayuda allí que puede utilizar y las personas que exploran su sitio no se darán cuenta.

Por ejemplo, navegador, rastreador y tal vez cookies. Hay muchas maneras pero esto requerirá un poco de trabajo de tu parte.

1

Como esta es una pregunta sobre los hits de la página de registro, creo que el uso de captchas es invasivo. No puede hacer que cada visitante complete un captcha o registro antes de usar el sitio web.

¿Y quieres bloquear las arañas completamente o simplemente ignorarlas en tus registros?

Google Analytics es un buen ejemplo de ignorar bots al ser impulsado por JavaScript.

Esa podría ser su solución. Necesitarías un evento de carga para enviar una solicitud a tu servidor que registrara el hit de la página.

Incluso podría esperar a que el mouse se mueva antes de que registre el golpe.

0

Puede detectar bots/crawlers de manera muy confiable usando cadenas de agente de usuario. 'bad bots' requieren un honeypot o una solución similar. Ambos se explica en mi respuesta aquí:

Detecting honest web crawlers

IP se puede cambiar y no son fiables.

También vemos que los bots (buenos y malos) tienden a no ser compatibles con javascript.

Cuestiones relacionadas