J'ai accepté une réponse, mais malheureusement, je crois que nous sommes coincés avec notre pire scénario d'origine: CAPTCHA tout le monde sur les tentatives d'achat de la merde . Brève explication: les fermes de mise en cache / Web rendent impossible le suivi des hits, et toute solution de contournement (envoi d'une balise Web non mise en cache, écriture dans une table unifiée, etc.) ralentit le site pire que les bots. Il existe probablement du matériel coûteux de Cisco ou similaire qui peut aider à un niveau élevé, mais il est difficile de justifier le coût si CAPTCHA-ing tout le monde est une alternative. Je vais essayer une explication plus complète plus tard, ainsi que le nettoyage pour les futurs chercheurs (bien que d'autres soient invités à essayer, car c'est le wiki de la communauté).
Situation
Il s'agit des ventes de bag o 'crap sur woot.com. Je suis le président de Woot Workshop, la filiale de Woot qui fait la conception, écrit les descriptions de produits, les podcasts, les articles de blog et anime les forums. Je travaille avec CSS / HTML et je ne connais que très peu les autres technologies. Je travaille en étroite collaboration avec les développeurs et j'ai parlé de toutes les réponses ici (et de nombreuses autres idées que nous avons eues).
La convivialité fait partie intégrante de mon travail, et rendre le site passionnant et amusant est la majeure partie du reste. C'est là que dérivent les trois objectifs ci-dessous. CAPTCHA nuit à la convivialité et les robots volent le plaisir et l'excitation de nos ventes de merde.
Les bots claquent notre page d'accueil des dizaines de fois par seconde en grattant l'écran (et / ou en scannant notre RSS) pour la vente Random Crap. Au moment où ils voient cela, il déclenche une deuxième étape du programme qui se connecte, clique sur Je veux un, remplit le formulaire et achète la merde.
Évaluation
lc : Sur stackoverflow et d'autres sites qui utilisent cette méthode, ils traitent presque toujours avec des utilisateurs authentifiés (connectés), car la tâche tentée l'exige.
Sur Woot, les utilisateurs anonymes (non connectés) peuvent consulter notre page d'accueil. En d'autres termes, les robots claquants peuvent être non authentifiés (et essentiellement non traçables sauf par adresse IP).
Nous sommes donc de retour à la recherche d'adresses IP, qui a) est assez inutile à l'ère des réseaux cloud et des zombies spambots et b) attrape trop d'innocents étant donné le nombre d'entreprises qui proviennent d'une seule adresse IP (sans parler des problèmes avec FAI IP non statiques et performances potentielles pour essayer de suivre cela).
Oh, et avoir des gens qui nous appellent serait le pire scénario possible. Pouvons-nous les faire vous appeler?
BradC : Les méthodes de Ned Batchelder ont l'air plutôt cool, mais elles sont assez fermement conçues pour vaincre les bots conçus pour un réseau de sites. Notre problème est que les bots sont construits spécifiquement pour vaincre notre site. Certaines de ces méthodes pourraient probablement fonctionner pendant une courte période jusqu'à ce que les scripteurs développent leurs robots pour ignorer le pot de miel, gratter l'écran pour les noms d'étiquettes à proximité au lieu des identifiants de formulaire et utiliser un contrôle de navigateur compatible javascript.
lc à nouveau : "Sauf, bien sûr, le battage médiatique fait partie de votre plan de marketing." Oui, certainement. La surprise du moment où l'article apparaît, ainsi que l'excitation si vous parvenez à en obtenir un sont probablement autant ou plus importantes que la merde que vous finissez par obtenir. Tout ce qui élimine le premier arrivé / premier servi est préjudiciable au plaisir de «gagner» la merde.
novatrust : Et pour ma part, je souhaite la bienvenue à nos nouveaux suzerains de bots. En fait, nous proposons des flux RSS pour permettre aux applications tierces de scanner notre site pour obtenir des informations sur le produit, mais pas avant le code HTML du site principal. Si je l'interprète correctement, votre solution aide l'objectif 2 (problèmes de performances) en sacrifiant complètement l'objectif 1 et en démissionnant simplement du fait que les bots achèteront la majeure partie de la merde. J'ai voté contre votre réponse, car votre pessimisme du dernier paragraphe me semble juste. Il ne semble pas y avoir de solution miracle ici.
Le reste des réponses repose généralement sur le suivi IP, qui, encore une fois, semble à la fois inutile (avec des réseaux de zombies / zombies / cloud) et préjudiciable (attrapant de nombreux innocents qui viennent de destinations de même IP).
D'autres approches / idées? Mes développeurs n'arrêtent pas de dire "faisons simplement CAPTCHA" mais j'espère qu'il y a des méthodes moins intrusives pour tous les humains réels qui veulent une partie de notre merde.
Question d'origine
Disons que vous vendez quelque chose à bas prix qui a une valeur perçue très élevée, et que vous avez un montant très limité. Personne ne sait exactement quand vous vendrez cet article. Et plus d'un million de personnes viennent régulièrement voir ce que vous vendez.
Vous vous retrouvez avec des scripteurs et des robots qui tentent par programmation [a] de savoir quand vous vendez ledit article, et [b] assurez-vous qu'ils sont parmi les premiers à l'acheter. Cela craint pour deux raisons:
- Votre site est critiqué par des non-humains, ce qui ralentit tout pour tout le monde.
- Les scénaristes finissent par «gagner» le produit, ce qui fait que les habitués se sentent trompés.
Une solution apparemment évidente consiste à créer des cerceaux pour que vos utilisateurs puissent les parcourir avant de passer leur commande, mais cela pose au moins trois problèmes:
- L'expérience utilisateur craint pour les humains, car ils doivent déchiffrer CAPTCHA, choisir le chat ou résoudre un problème mathématique.
- Si l'avantage perçu est suffisamment élevé et que la foule est suffisamment nombreuse, certains groupes trouveront leur chemin dans n'importe quel ajustement, conduisant à une course aux armements. (Cela est particulièrement vrai plus le réglage est simple; formulaire de `` commentaires '' caché, réorganisation des éléments du formulaire, mauvais étiquetage, texte de `` gotcha '' caché tout fonctionnera une fois et devra ensuite être modifié pour lutter contre le ciblage de ce formulaire spécifique .)
- Même si les scripteurs ne peuvent pas `` résoudre '' votre tweak, cela ne les empêche pas de claquer votre page d'accueil, puis de sonner l'alarme pour que le scripteur remplisse la commande, manuellement. Étant donné qu'ils tirent parti de la résolution de [a], ils gagneront probablement toujours [b] car ils seront les premiers humains à atteindre la page de commande. En outre, 1. se produit toujours, provoquant des erreurs de serveur et une baisse des performances pour tout le monde.
Une autre solution consiste à surveiller les adresses IP qui frappent trop souvent, à les bloquer du pare-feu ou à les empêcher de passer une commande. Cela pourrait résoudre 2. et empêcher [b], mais les performances atteintes lors de l'analyse des adresses IP sont massives et causeraient probablement plus de problèmes comme 1. que les scripteurs ne provoquaient d'eux-mêmes. De plus, la possibilité de mise en réseau cloud et de zombies spambots rend la vérification IP assez inutile.
Une troisième idée, obligeant le bon de commande à être chargé pendant un certain temps (disons, une demi-seconde) ralentirait potentiellement la progression des commandes rapides, mais encore une fois, les scripteurs seraient toujours les premiers à entrer, à n'importe quelle vitesse qui ne nuirait pas à utilisateurs réels.
Buts
- Vendez l'objet à des humains sans script.
- Gardez le site en cours d'exécution à une vitesse non ralentie par les bots.
- Ne dérangez pas les utilisateurs «normaux» avec des tâches à accomplir pour prouver qu'ils sont humains.