Acepté una respuesta, pero lamentablemente, creo que estamos atrapados en nuestro peor escenario original: CAPTCHA a todos los intentos de compra de la basura . Breve explicación: el almacenamiento en caché / granjas web hace que sea imposible rastrear los éxitos, y cualquier solución alternativa (enviar una baliza web no almacenada en caché, escribir en una tabla unificada, etc.) ralentiza el sitio peor de lo que lo harían los bots. Es probable que haya un hardware costoso de Cisco o similar que pueda ayudar a un alto nivel, pero es difícil justificar el costo si CAPTCHA es una alternativa para todos. Intentaré una explicación más completa más adelante, así como limpiar esto para futuros buscadores (aunque otros son bienvenidos a intentarlo, ya que es el wiki de la comunidad).
Situación
Se trata de las ventas de bolsas de basura en woot.com. Soy el presidente de Woot Workshop, la subsidiaria de Woot que hace el diseño, escribe las descripciones de los productos, podcasts, publicaciones de blog y modera los foros. Trabajo con CSS / HTML y apenas estoy familiarizado con otras tecnologías. Trabajo en estrecha colaboración con los desarrolladores y he discutido todas las respuestas aquí (y muchas otras ideas que hemos tenido).
La usabilidad es una parte enorme de mi trabajo, y hacer que el sitio sea emocionante y divertido es la mayor parte del resto. Ahí es donde derivan los tres objetivos a continuación. CAPTCHA perjudica la usabilidad, y los bots roban la diversión y la emoción de nuestras ventas de basura.
Los bots están cerrando nuestra página principal decenas de veces por un segundo raspado de pantalla (y / o escaneando nuestro RSS) para la venta Random Crap. En el momento en que ven eso, desencadena una segunda etapa del programa que inicia sesión, hace clic en Quiero uno, llena el formulario y compra la basura.
Evaluación
lc : En stackoverflow y otros sitios que usan este método, casi siempre se trata de usuarios autenticados (conectados), porque la tarea que se intenta requiere eso.
En Woot, los usuarios anónimos (no registrados) pueden ver nuestra página de inicio. En otras palabras, los bots de slamming pueden ser no autenticados (y esencialmente no rastreables, excepto por la dirección IP).
Así que volvemos a escanear en busca de IP, que a) es bastante inútil en esta era de redes en la nube y zombies spambot yb) atrapa demasiados inocentes dada la cantidad de empresas que provienen de una dirección IP (sin mencionar los problemas con ISP IP no estáticos y posibles resultados de rendimiento para tratar de rastrear esto).
Ah, y que la gente nos llame sería el peor escenario posible. ¿Podemos hacer que te llamen?
BradC : Los métodos de Ned Batchelder se ven muy bien, pero están bastante bien diseñados para derrotar a los bots creados para una red de sitios. Nuestro problema es que los bots están diseñados específicamente para derrotar a nuestro sitio. Es probable que algunos de estos métodos funcionen por un corto tiempo hasta que los scripters desarrollen sus bots para ignorar el honeypot, raspar la pantalla para nombres de etiquetas cercanos en lugar de identificadores de formulario y usar un control de navegador compatible con javascript.
Una vez más, "a menos que, por supuesto, la exageración sea parte de su esquema de marketing". Sí, definitivamente lo es. La sorpresa de cuándo aparece el artículo, así como la emoción si logras obtener uno, es probablemente tanto o más importante que la basura que realmente obtienes. Cualquier cosa que elimine el orden de llegada es perjudicial para la emoción de "ganar" la porquería.
Novatrust : Y yo, por mi parte, doy la bienvenida a nuestros nuevos señores bot. En realidad, ofrecemos RSSfeeds para permitir que aplicaciones de terceros escaneen nuestro sitio en busca de información del producto, pero no antes del HTML del sitio principal. Si lo estoy interpretando bien, su solución ayuda al objetivo 2 (problemas de rendimiento) al sacrificar completamente el objetivo 1 y simplemente renunciar al hecho de que los bots comprarán la mayor parte de la basura. He votado a favor su respuesta, porque su pesimismo del último párrafo me parece exacto. Parece que no hay bala de plata aquí.
El resto de las respuestas generalmente se basan en el seguimiento de IP, que, de nuevo, parece ser inútil (con botnets / zombies / redes en la nube) y perjudicial (atrapar a muchos inocentes que provienen de destinos con la misma IP).
¿Algún otro enfoque / idea? Mis desarrolladores siguen diciendo "hagamos CAPTCHA", pero espero que haya métodos menos intrusivos para todos los humanos reales que desean algo de nuestra basura.
Pregunta original
Digamos que está vendiendo algo barato que tiene un valor percibido muy alto y tiene una cantidad muy limitada. Nadie sabe exactamente cuándo venderá este artículo. Y más de un millón de personas vienen regularmente para ver lo que estás vendiendo.
Terminas con scripters y bots que intentan programáticamente [a] descubrir cuándo estás vendiendo dicho artículo, y [b] asegurarte de que estén entre los primeros en comprarlo. Esto apesta por dos razones:
- Su sitio está cerrado por personas no humanas, lo que ralentiza todo para todos.
- Los scripters terminan 'ganando' el producto, haciendo que los clientes habituales se sientan engañados.
Una solución aparentemente obvia es crear algunos aros para que los usuarios salten antes de realizar su pedido, pero hay al menos tres problemas con esto:
- La experiencia del usuario apesta para los humanos, ya que tienen que descifrar CAPTCHA, elegir al gato o resolver un problema matemático.
- Si el beneficio percibido es lo suficientemente alto, y la multitud lo suficientemente grande, algún grupo encontrará su camino alrededor de cualquier ajuste, lo que conducirá a una carrera armamentista. (Esto es especialmente cierto cuanto más simple es el ajuste; el formulario oculto de 'comentarios', la reorganización de los elementos del formulario, el etiquetado erróneo, el texto oculto 'gotcha' todo funcionará una vez y luego deberá cambiarse para luchar contra este formulario específico .)
- Incluso si los scripters no pueden 'resolver' su ajuste, no les impide cerrar su página principal y luego hacer sonar una alarma para que el scripter complete el pedido, manualmente. Dado que obtienen la ventaja de resolver [a], probablemente seguirán ganando [b] ya que serán los primeros humanos en llegar a la página de pedido. Además, 1. todavía ocurre, causando errores en el servidor y una disminución del rendimiento para todos.
Otra solución es vigilar las IP que golpean con demasiada frecuencia, bloquearlas del firewall o evitar que ordenen. Esto podría resolver 2. y prevenir [b], pero el impacto en el rendimiento de la exploración de IP es masivo y probablemente causaría más problemas como 1. que los que los scripters estaban causando por sí mismos. Además, la posibilidad de redes en la nube y zombies spambot hace que la comprobación de IP sea bastante inútil.
Una tercera idea, obligar a que el formulario de pedido se cargue durante un tiempo (por ejemplo, medio segundo) potencialmente retrasaría el progreso de los pedidos rápidos, pero nuevamente, los scripters seguirían siendo las primeras personas en entrar, a cualquier velocidad no perjudicial para usuarios reales
Metas
- Vende el artículo a humanos que no escriban guiones.
- Mantenga el sitio funcionando a una velocidad no ralentizada por los bots.
- No moleste a los usuarios 'normales' con ninguna tarea que completar para demostrar que son humanos.