Aceitei uma resposta, mas, infelizmente, acredito que estamos presos ao nosso pior cenário original: CAPTCHA todo mundo nas tentativas de compra da porcaria . Breve explicação: o armazenamento em cache / web farms torna impossível rastrear hits, e qualquer solução alternativa (enviar um web beacon não armazenado em cache, gravar em uma tabela unificada etc.) torna o site mais lento do que os bots. É provável que haja algum hardware caro da Cisco ou algo semelhante que possa ajudar em um nível alto, mas é difícil justificar o custo se o CAPTCHA de todo mundo for uma alternativa. Tentarei uma explicação mais completa mais tarde, bem como a limpeza para futuros pesquisadores (embora outros sejam bem-vindos, como é o wiki da comunidade).
Situação
Trata-se das vendas de porcaria no woot.com. Sou o presidente do Woot Workshop, a subsidiária da Woot que faz o design, escreve as descrições dos produtos, podcasts, posts do blog e modera os fóruns. Eu trabalho com CSS / HTML e só estou familiarizado com outras tecnologias. Eu trabalho em estreita colaboração com os desenvolvedores e conversamos sobre todas as respostas aqui (e muitas outras idéias que tivemos).
A usabilidade é uma parte enorme do meu trabalho, e tornar o site emocionante e divertido é a maior parte do resto. É aí que os três objetivos abaixo derivam. O CAPTCHA prejudica a usabilidade e os bots roubam a diversão e a emoção de nossas vendas ruins.
Bots estão batendo a nossa página principal dezenas de vezes por uma segunda tela raspando (e / ou escaneando nosso RSS) pela venda Random Crap. No momento em que veem isso, ele aciona um segundo estágio do programa que efetua login, clica em Quero um, preenche o formulário e compra a porcaria.
Avaliação
lc : No stackoverflow e em outros sites que usam esse método, eles quase sempre lidam com usuários autenticados (conectados), porque a tarefa que está sendo executada exige isso.
No Woot, usuários anônimos (não registrados) podem visualizar nossa página inicial. Em outras palavras, os bots slamming podem não ser autenticados (e essencialmente não rastreáveis, exceto pelo endereço IP).
Portanto, voltamos à varredura de IPs, que: a) é bastante inútil nessa era de redes em nuvem e zumbis spambot eb) captura muitos inocentes, dado o número de empresas provenientes de um endereço IP (sem mencionar os problemas com ISPs IP não estáticos e possíveis resultados de desempenho para tentar rastrear isso).
Ah, e ter pessoas nos ligando seria o pior cenário possível. Podemos que eles liguem para você?
BradC : Os métodos de Ned Batchelder parecem bem legais, mas são bem projetados para derrotar os bots criados para uma rede de sites. Nosso problema é que os bots são criados especificamente para derrotar nosso site. É possível que alguns desses métodos funcionem por um curto período de tempo até que os scripts desenvolvam seus bots para ignorar o honeypot, raspar a tela para nomes de rótulos próximos, em vez de identificações de formulário, e usar um controle de navegador compatível com javascript.
lc novamente : "A menos, claro, que o hype faça parte do seu esquema de marketing". Sim, definitivamente é. A surpresa de quando o item aparece, bem como a emoção de conseguir um, é provavelmente tão ou mais importante quanto a porcaria que você realmente acaba recebendo. Qualquer coisa que elimine o primeiro a chegar / primeiro a servir é prejudicial à emoção de 'vencer' a porcaria.
novatruste : E eu, por exemplo, dou as boas-vindas aos nossos novos senhores de bots. Na verdade, oferecemos feeds RSS para permitir que aplicativos de terceiros analisem nosso site em busca de informações sobre o produto, mas não antes do HTML do site principal. Se estou interpretando corretamente, sua solução ajuda a meta 2 (problemas de desempenho) sacrificando completamente a meta 1 e renunciando apenas ao fato de que os bots estarão comprando a maior parte do lixo. Votei positivamente sua resposta, porque seu pessimismo no último parágrafo parece exato para mim. Parece não haver bala de prata aqui.
O restante das respostas geralmente depende do rastreamento de IP, que novamente parece inútil (com redes de bots / zumbis / nuvem) e prejudicial (capturando muitos inocentes que vêm de destinos com o mesmo IP).
Alguma outra abordagem / idéia? Meus desenvolvedores continuam dizendo "vamos fazer o CAPTCHA", mas espero que haja métodos menos invasivos para todos os humanos de verdade que desejam um pouco da nossa porcaria.
Pergunta original
Digamos que você esteja vendendo algo barato que tenha um valor percebido muito alto e que tenha um valor muito limitado. Ninguém sabe exatamente quando você venderá este item. E mais de um milhão de pessoas vêm regularmente para ver o que você está vendendo.
Você acaba com scripts e bots tentando descobrir programaticamente quando você está vendendo o item mencionado, e [b] verifique se eles estão entre os primeiros a comprá-lo. Isso é péssimo por dois motivos:
- Seu site é atacado por não-humanos, tornando tudo lento para todos.
- Os roteiristas acabam 'ganhando' o produto, fazendo com que os frequentadores se sintam enganados.
Uma solução aparentemente óbvia é criar alguns obstáculos para que os usuários passem antes de fazer o pedido, mas há pelo menos três problemas com isso:
- A experiência do usuário é péssima para os seres humanos, pois eles precisam decifrar o CAPTCHA, escolher o gato ou resolver um problema de matemática.
- Se o benefício percebido for alto o suficiente e a multidão for grande o suficiente, alguns grupos encontrarão o caminho para qualquer ajuste, levando a uma corrida armamentista. (Isso é especialmente verdade quanto mais simples for o ajuste; o formulário 'comentários' ocultos, reorganizando os elementos do formulário, rotulando-os incorretamente, texto 'pegadinha' oculto, tudo funcionará uma vez e precisará ser alterado para combater a segmentação desse formulário específico .)
- Mesmo que os roteiristas não consigam 'resolver' o seu ajuste, isso não os impede de bater na sua primeira página e, em seguida, soar um alarme para o roteirista preencher o pedido manualmente. Dado que eles obtêm a vantagem de resolver [a], provavelmente ainda vencerão [b], pois serão os primeiros humanos a alcançar a página de pedidos. Além disso, 1. ainda acontece, causando erros no servidor e um desempenho reduzido para todos.
Outra solução é verificar se os IPs atingem com muita frequência, bloqueá-los do firewall ou impedi-los de fazer pedidos. Isso poderia resolver 2. e impedir [b], mas o desempenho atingido pela verificação de IPs é enorme e provavelmente causaria mais problemas como 1. do que os scripts estavam causando por conta própria. Além disso, a possibilidade de rede em nuvem e zumbis spambot torna a verificação de IP bastante inútil.
Uma terceira idéia, forçar o carregamento do formulário de pedidos por algum tempo (digamos, meio segundo) potencialmente retardaria o andamento dos pedidos rápidos, mas, novamente, os roteiristas ainda seriam as primeiras pessoas a qualquer velocidade não prejudicial para usuários reais.
Metas
- Venda o item para humanos que não são scripts.
- Mantenha o site funcionando a uma velocidade que não diminui a velocidade dos bots.
- Não incomode os usuários "normais" com nenhuma tarefa a concluir para provar que é humano.