2010-09-18 19 views
22

Quiero evitar que los spammers utilicen mi sitio. Pero creo que CAPTCHA es muy molesto. No solo estoy hablando del tipo "escriba el texto", sino de cualquier cosa que requiera que el usuario pierda su tiempo para demostrar que es humano.Detener el spam sin captcha

¿Qué puedo hacer aquí?

+0

duplicado exacto de [¿Prácticas aproximaciones CAPTCHA basadas en imágenes?] (Http://stackoverflow.com/questions/8472/practical-non-image-based-captcha-approaches), y también http: // stackoverflow. com/q/111576/10080. Vea mis respuestas (y las demás) allí. – AviD

Respuesta

14

Integre Akismet API para filtrar automáticamente las publicaciones de sus usuarios.

+0

+1 Usted ** no puede ** equivocarse con el servicio antispam de Akismet. – BoltClock

23

Requerir Javascript para publicar bloques de datos una buena cantidad de bots de spam sin interferir con la mayoría de los usuarios.

También puede utilizar un truco ingenioso:

<input type="text" id="not_human" name="name" /> 
<input type="text" name="actual_name" /> 
<style> 
    #not_human { display: none } 
</style> 

La mayoría de los robots poblarán el primer campo, por lo que puede bloquearlos.

+0

Cualquier razón por la cual la pantalla está configurada externamente: <- ¿no es una buena idea? ¿O los bots realmente van a detectarlo, si está en línea? – codingjoe

+2

@codingjoe los estilos en línea son básicamente una mala idea, independientemente de su uso. Y sí, sería muy fácil para un bot de spam ignorar los campos que tienen un estilo en línea de 'display: none'. – GFoley83

+2

** @ GFoley83 ** ** + 1 ** exactamente, y no solo * estilos en línea. * Solo para probar, jugué con un formulario del cual recibí unos 50 correos electrónicos no deseados diariamente. Ajuste incluso en style.css 'input [name = email]: display: none;' para un campo con nombre jugoso como '' ** no evitar ** que el bot continúe enviando correos electrónicos, mientras que después simplemente usa 'position: absolute; izquierda: -9000px; 'hizo el truco **.Probablemente (por la misma razón) tampoco fue el mejor, pero funcionó. Solo compartiendo mi encontrado. –

3

Tendría cuidado al usar CSS o trucos de Javascript para asegurar que el usuario sea un verdadero ser humano real, ya que podría estar presentando problemas de accesibilidad, problemas de navegador, etc. Sin mencionar que los bots de spam pueden ser bastante sofisticados, por lo que pequeños trucos de exhibición de CSS lindos ni siquiera pueden funcionar de todos modos.

Me gustaría ver en Akismet.

Además, puede ser creativo en la forma de validar los datos del usuario. Por ejemplo, supongamos que tiene un formulario de registro que requiere un correo electrónico y una dirección de usuario. Puede ser bastante duro en la forma de validar la dirección de correo electrónico, incluso yendo tan lejos como para asegurarse de que el dominio esté realmente configurado para recibir correo, y que haya un buzón en ese dominio que coincida con lo que se proporcionó. También puede usar Google Maps API para tratar de geolocalizar una dirección y asegurarse de que sea válida.

Para llevar esto aún más lejos, podría implementar errores de validación "duros" y "blandos". Si la dirección de correo no coincide con una cadena de validación de expresiones regulares, entonces es un error grave. No poder verificar los registros DNS del dominio para asegurar que acepta el correo, o que el buzón existe, es un error "suave". Cuando encuentre un error leve, podría solicitar la validación de CAPTCHA. Con suerte, esto reduciría la cantidad de veces que tendría que presionar para la verificación de CAPTCHA, porque si está obteniendo suficiente actividad en el sitio, ¡las personas válidas deberían ingresar datos válidos al menos algunas veces!

+3

Además, algunos remitentes de correo no deseado utilizan mano de obra barata en India y China en lugar de bots. –

4

Si está buscando una solución .NET, Ajax Control Toolkit has a control named NoBot.

NoBot es un control que intenta proporcionar prevención de bot/spam tipo CAPTCHA sin requerir ninguna interacción del usuario. NoBot tiene la ventaja de ser completamente invisible. NoBot es probablemente más relevante para sitios de poco tráfico donde el spam de blog/comentario es un problema y no se requiere el 100% de efectividad.

Nobot emplea a unas cuantas diferentes técnicas anti-bot:

  • Forzar el navegador del cliente para realizar un cálculo JavaScript configurable y verificando el resultado como parte de la devolución de datos. (Por ejemplo, el cálculo puede ser numérico simple, o también puede involucrar al DOM para garantizar adicionalmente que se trata de un navegador)
  • Aplicando un retraso configurable entre cuando se solicita un formulario y cuándo se puede reenviar.(Por ejemplo, es poco probable que un ser humano complete un formulario en menos de dos segundos)
  • Aplicando un límite configurable al número de solicitudes aceptables por dirección IP por unidad de tiempo. (Por ejemplo, es poco probable que un ser humano presente la misma forma más de cinco veces en un minuto)

Más discusión y demostración al respecto blogpost by Jacques-Louis Chereau on NoBot.

<ajaxToolkit:NoBot 
    ID="NoBot2" 
    runat="server" 
    OnGenerateChallengeAndResponse="CustomChallengeResponse" 
    ResponseMinimumDelaySeconds="2" 
    CutoffWindowSeconds="60" 
    CutoffMaximumInstances="5" /> 
0

Dado que es muy difícil de evitar a 100% recomiendo leer this IBM article publicado hace 2 años titulado 'Real Web 2.0: Battling web spam', donde el comportamiento del visitante y flujo de trabajo de control se analizan bien y concisa

el spam web viene en muchas formas, incluyendo:

  • artículos de correo no deseado y actos de vandalismo artículos sobre wikis
  • los comentarios no deseados en los weblogs
  • envíos de spam en los foros, control de incidencias y otros sitios de discusión
  • Referente correo no deseado (cuando los sitios de spam pretenden referirse a los usuarios una sitio de destino que las listas de remitentes)
  • entradas de usuarios falsos en las redes sociales

Lidiar con el correo no deseado es muy difícil, pero un desarrollador web no tiene en cuenta la prevención de spam en su peligro. En este artículo, y en una segunda parte de más adelante, presento técnicas, tecnologías y servicios para combatir los muchos tipos de spam web.

también está vinculada una muy interesante "... hashcash technique para minimizar el spam en wikis y tal, además de e-mail."

0

Sin duda, hay que seleccionar una cosa o Honeypot BOTCHA.

+0

Se eliminó la página de causa del enlace se desconectó. –

0

Comprendo que esto es un post bastante antiguo, sin embargo, me encontré con una solución interesante llamado el "código de imagen honey-pot" que es fácil de implementar y no requiere javascript:

Proporcionar un oculta cuadro de texto!

  • La mayoría de spam con mucho gusto completar el cuadro de texto oculto que le permite ignorar cortésmente.
  • La mayoría de sus usuarios nunca sabrá la diferencia.

Para evitar que un usuario con un lector de pantalla de caer en la trampa simplemente etiquetar el cuadro de texto "si usted es humano, dejar en blanco" o algo a ese efecto.

Tada! Bloqueo de spam no intrusivo! Aquí está el artículo:

http://www.campaignmonitor.com/blog/post/3817/stopping-spambots-with-two-simple-captcha-alternatives

10

que combinan unos métodos que parecen bastante éxito hasta el momento:

  1. proporcionar un campo de entrada con el nombre email y ocultarlo con CSS display: none. Cuando se envíe el formulario, compruebe si este campo está vacío. Los bots tienden a llenar esto con un emailaddress falso.

  2. Proporcione otro campo de entrada oculto que contiene el tiempo de carga de la página . Compruebe si el tiempo entre la carga y el envío de la página es mayor que el tiempo mínimo necesario para completar el formulario. Uso entre 5 y 10 segundos.

  3. Luego verifique si el número de parámetros GET es el esperado. Si su acción de formularios es POST y la URL subyacente de su página de envío es index.php?p=guestbook&sub=submit, entonces espera 2 parámetros GET. Los Bots intentan agregar parámetros GET para que esta verificación falle.

  4. Y, por último, compruebe si HTTP_USER_AGENT está configurado, qué bots a veces no se establece, y que HTTP_REFERER es la URL de la página de su formulario. Bots a veces solo se realiza el POST en la página de envío, lo que hace que HTTP_REFERER sea otra cosa.

que tiene la mayor parte de mi información de http://www.braemoor.co.uk/software/antispam.shtml y http://www.nogbspam.com/.

+6

su ** (1.) ** está probado como malo! Es correcto que 'name =" email "' es un gran objetivo para los robots de spam, pero 'display: none;' no funcionó. Lo que funcionó fue en su lugar: 'posición: absoluta; izquierda: -9000; '! Solo compartiendo. –

0

¿Qué tal una pregunta legible por humanos que le dice al usuario que ponga la primera letra del valor que puso en el campo del primer nombre y la última letra del campo del apellido o algo así?

O muestre algunos campos ocultos que están llenos de JavaScript con valores como referer y lo uno. Compruebe la igualdad de estos campos con los que ha almacenado en la sesión anterior. Si los valores están vacíos, el usuario no tiene javascript. Entonces no sería spam. Pero un bot al menos completará algunos de ellos.

Cuestiones relacionadas