J'ai accepté une réponse, mais malheureusement, je crois que nous sommes bloqués par notre pire scénario initial: CAPTCHA à tout le monde lors de tentatives d'achat de la merde . Brève explication: la mise en cache/les fermes 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 plus que ne le feraient les robots. 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 est une alternative. J'essaierai une explication plus complète plus tard, ainsi que de la nettoyer pour les futurs chercheurs (bien que d'autres personnes soient les bienvenues, car c'est le wiki de la communauté).
Il s’agit des ventes du sac o 'crap sur woot.com. Je suis le président de Woot Workshop, la filiale de Woot qui conçoit, écrit les descriptions de produits, les podcasts, les billets de blog et modère 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 discuté 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 les trois objectifs ci-dessous dérivent. CAPTCHA nuit à la convivialité et les bots volent le plaisir et l'excitation de nos ventes de merde.
Des robots claquent notre page d'accueil des dizaines de fois sur un deuxième écran en grattant (et/ou notre RSS) pour la vente au hasard. Au moment où ils voient cela, une deuxième étape du programme est déclenchée: elle se connecte, clique sur Je veux un, remplit le formulaire et achète la merde.
lc : Sur stackoverflow et les autres sites qui utilisent cette méthode, ils traitent presque toujours avec des utilisateurs authentifiés (connectés), car la tâche en cours de tentative l'exige.
Sur Woot, les utilisateurs anonymes (non connectés) peuvent consulter notre page d'accueil. En d'autres termes, les bots qui claquent peuvent être non authentifiés (et essentiellement non traçables sauf par adresse IP).
Nous sommes donc de nouveau à la recherche d’adresses IP, ce qui a) est relativement inutile à l’ère des réseaux en nuage et des zombies spambots, et b) attrape trop d’innocents étant donné le nombre d’entreprises provenant d’une seule adresse IP (sans parler des problèmes liés à des fournisseurs de services IP non statiques et des problèmes de performances potentiels pour tenter de le suivre).
Oh, et avoir des gens qui nous appellent serait le pire scénario possible. Pouvons-nous qu'ils vous appellent?
BradC : Les méthodes de Ned Batchelder ont l'air plutôt cool, mais elles sont plutôt bien conçues pour vaincre les bots conçus pour un réseau de sites. Notre problème est que les robots sont construits spécifiquement pour vaincre notre site. Certaines de ces méthodes pourraient probablement fonctionner pendant un court laps de temps, jusqu'à ce que les scripteurs fassent évoluer leurs robots pour ignorer le pot de miel, masquer l'écran pour les noms d'étiquettes à la place des identifiants de formulaire et utiliser un contrôle de navigateur prenant en charge javascript.
encore une fois : "À moins que le battage publicitaire fasse partie de votre stratégie marketing." Oui, c'est vraiment ça. La surprise du moment où le produit apparaît, de même que l'excitation que vous ressentez si vous parvenez à en obtenir un, sont probablement aussi importants ou plus importants que la merde que vous obtenez en fin de compte. Tout ce qui élimine le principe du premier arrivé/premier servi est préjudiciable au plaisir de "gagner" la merde.
novatrust : Et pour ma part, je souhaite la bienvenue à nos nouveaux seigneurs bot. Nous proposons effectivement des flux RSS pour permettre aux applications tierces d'analyser notre site pour obtenir des informations sur les produits, mais pas avant le code HTML du site principal. Si je comprends bien, votre solution aide l'objectif 2 (problèmes de performances) en sacrifiant complètement l'objectif 1 et en résiliant simplement le fait que les bots achèteront l'essentiel de la merde. J'ai voté contre votre réponse, car le pessimisme de votre dernier paragraphe me semble exact. Il ne semble pas y avoir de solution miracle ici.
Le reste des réponses s'appuie généralement sur le suivi IP, ce qui, une fois encore, semble à la fois inutile (réseaux de zombies/réseaux de zombies/cloud) et préjudiciable (attraper de nombreux innocents qui proviennent de destinations IP identiques).
D'autres approches/idées? Mes développeurs continuent à dire "faisons juste CAPTCHA" mais j'espère qu'il y a des méthodes moins intrusives pour tous les humains qui veulent une partie de notre merde.
Supposons que vous vendiez quelque chose de bon marché, qui a une valeur perçue très élevée et un montant très limité. Personne ne sait exactement quand vous allez vendre cet objet. 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 de déterminer, par programme, quand vous vendez ledit élément, et vous assurez qu'ils sont parmi les premiers à l'acheter. Cela craint pour deux raisons:
Une solution apparemment évidente consiste à créer des cerceaux que vos utilisateurs pourront parcourir avant de passer leur commande. Toutefois, il existe au moins trois problèmes:
Une autre solution consiste à surveiller les adresses IP frappant trop souvent, à les bloquer du pare-feu ou à les empêcher de commander. Cela pourrait résoudre 2. et empêcher [b], mais le résultat de l'analyse des adresses IP est énorme et causerait probablement plus de problèmes comme 1. que ceux causés par les scripteurs eux-mêmes. De plus, la possibilité de mise en réseau dans le nuage et de zombies par spam rend la vérification IP assez inutile.
Une troisième idée, forcer le chargement du bon de commande pendant un certain temps (par exemple, une demi-seconde) pourrait potentiellement ralentir la progression des commandes rapides, mais encore une fois, les scripteurs seraient toujours les premiers à entrer, à une vitesse ne nuisant pas à la utilisateurs réels.
Vous devriez avoir une trace des utilisateurs qui ont acheté le plus souvent BOC, pourquoi ne pas simplement interdire ces comptes ou quelque chose. Certes, les utilisateurs légitimes seront interdits dans ce processus, mais vous êtes une entreprise qui fournit un produit et qui subit des abus de la part d’un groupe d’utilisateurs et vous avez le droit de lui refuser le service. Vous avez beaucoup d'informations sur vos utilisateurs, y compris Paypal et des comptes bancaires, vous pouvez interdire ces comptes, forçant les utilisateurs de bot à obtenir de nouveaux comptes. Certes, je pourrais créer un script pour acheter BOC tout le temps ou tout simplement pour en télécharger un sur le net, mais ma moralité est meilleure. N'ayant jamais acheté BOC avec succès, je connais la frustration des utilisateurs légitimes qui souhaiteraient recevoir un BOC dans l'espoir d'obtenir beaucoup. Peut-être qu'au lieu d'offrir un BOC en tant qu'article individuel de temps en temps, vous pourriez simplement le donner à des utilisateurs aléatoires chaque jour. Lorsqu'ils reçoivent un article, ils reçoivent un petit mot et un article supplémentaire indiquant qu'ils ont également reçu un BOC. Alors, la seule façon d’obtenir un BOC est d’acquérir légitimement quelque chose que seul un être humain aurait voulu obtenir. Il n'y aurait rien de mieux que d'acheter une cafetière ou autre chose et de recevoir une télévision de 42 pouces ou quelque chose en plus de votre achat légitime. Je pense que la majorité des script kiddies ne seraient plus intéressés par votre site si vous vouliez obtenir un BOC ils devraient également s'engager dans un achat de plus de 10 dollars.
Pardonnez-moi si cette réponse a déjà été soumise. Il y a beaucoup de réponses pour essayer de les lire et les comprendre.
Pourquoi ne pouviez-vous pas simplement changer votre API d’achat de temps en temps? Cela ne serait-il pas complètement transparent pour les utilisateurs humains et tuerait-il à peu près la plupart des acheteurs de robots?
Une implémentation consisterait à modifier les noms des champs que l'utilisateur doit renseigner et soumettre sur la page après avoir cliqué sur le bouton "Je veux un". Combien de fois par an vendez-vous réellement du BOC? Pas si souvent. Cela ne représenterait donc pas un énorme fardeau de programmation d'avoir une API d'achat différente programmée, testée et prête à être utilisée chaque fois qu'une BOC est en vente.
Assurez-vous simplement que les robots qui utilisent l'ancienne et incorrecte API n'affaiblissent pas votre serveur. Vous pouvez également héberger l'API d'achat BOC sur un serveur différent à chaque fois. De cette façon, les robots peuvent détruire un serveur qui n'est pas utilisé par nos acheteurs humains.
à cette fin, j'utilise Cloudflare car cela n'affecte pas mon site, mais bloque automatiquement tout utilisateur malveillant avec CAPTCHA et vous offre davantage de fonctionnalités.
Si je comprends bien, votre plus gros problème est lié au grattage de l'écran, et non à l'achat automatisé lui-même.
Si tel est le cas, la solution la plus efficace consiste à éviter la suppression d'écran en codant de manière aléatoire la page afin qu'elle soit identique (en quelque sorte), mais qu'elle soit toujours différente au niveau du code. (utilisez des codes hexadécimaux, Java encodage, des images, modifiez la structure du code environnant ...)
Cela les obligerait à réécrire constamment leur code de grattage et le rendrait donc beaucoup plus cher pour eux d'acheter votre "merde" automatiquement. S'ils peuvent gérer. Ils continueraient probablement à consulter votre site Web pendant un certain temps jusqu'à ce qu'ils réalisent qu'ils ne peuvent rien en retirer et le laisser tomber.
L'inconvénient de brouiller les robots est que cela déroutera aussi les robots des moteurs de recherche.
Vous ferez assez aujourd'hui sur les lumières pour payer le programme CAPTCHA de Cisco! Nous y sommes tous habitués en achetant des billets de concert et d'autres choses .. Cela semble juste. La façon dont cela se fait aujourd'hui dérange certains et soulève des questions au sujet d'une loterie ou d'un tirage au sort. Je suis sûr que vous avez vérifié cela avant d'essayer, mais ce n'est pas vraiment une façon amusante d'acheter des BOC ... Cela enlève toute l'excitation!
Obtenir le BOC en premier ou un excellent produit même en étant visible attire les gens à Woot. S'il n'y a aucune raison de traîner et d'acheter des tonnes de choses dont vous n'avez pas besoin en attendant que le BOC aléatoire apparaisse, les ventes chuteront. Le CAPTCHA est peut-être le seul moyen de vaincre ces personnes tout en conservant l'excitation de Woot.
J'ai été l’un des premiers à avoir commandé un BOC la dernière fois et ma première commande a été prise avec le million d’expéditions d’expédition et la seconde a été passée, mais a été retirée de mon compte plus tard. J'étais énervé. J'ai quitté Woot et je n'ai pas acheté d'articles comme je l'avais fait par le passé. J'étais prêt à recommencer, de cette façon, aujourd'hui. Je doute que je vais à l'avenir sans CAPTCHA pour les choses amusantes.
De nombreux sites tentent de ressembler à Woot. Bien sûr, ils ne sont pas à la hauteur de votre niveau. Je me trouve en train de lire une description du produit, non pas parce que je veux le produit, mais je m'enregistre même pour rire. Je ne voudrais pas que quelqu'un propose un programme plus juste et enlève l'essentiel de vos affaires.
Juste mon avis. Je ne sais presque rien sur les bots et les ordinateurs puisque je suis infirmière .. Mais mon vote est de passer au niveau supérieur ... Les gars avec les bots devraient simplement s’aligner sur nous et c’est comme ça ça devrait être :) Lori
En ce qui concerne CAPTCHA pour tout le monde, pourquoi ne pas utiliser la solution Google consistant à n'exiger que des CAPTCHA provenant d'IP que vous suspectez d'être des bots, ou même que des utilisateurs qui martèlent le site? Je suis sûr que demander un CAPTCHA à un acheteur n’est pas si grave s’ils ont tout de même martelé le site, c’est à peu près la même chose que de rester debout et de frapper F5 à plusieurs reprises. Cela nécessite peut-être un CAPTCHA périodique lorsque l’on martèle, disons toutes les cent (peut-être plus petites?) Ou ainsi rafraîchit, afin d’empêcher les alarmes de fonctionner. Vous avez besoin d'une sorte de CAPTCHA pour empêcher le botting, mais vous devez également tenir compte du fait que vos vrais utilisateurs se comporteront comme des bots.
Pourquoi ne changez-vous pas le nom et l'image du BOC chaque fois que vous le proposez? Cela ferait partie du plaisir de commencer à regarder la dernière version du BOC.
En tant qu'utilisateur de longue date (4 ans) de Woot.com et acheteur de quelques sacs de merde, parmi les nombreux articles occupant maintenant de la place dans mon garage, il semble que la solution devrait faire partie du thème général de Woot.
Utilisez captcha, mais dans une veine humoristique. Tout comme la promotion de 1 000 000 $, créez un jeu en vous identifiant comme une personne. Cela a, dans le passé, retardé la "vente" de la BOC pendant un temps raisonnable, alors que des gens, comme moi, se démènent pour comprendre le casse-tête assez simple mais humoristique nécessaire pour entrer un code de coupon.
En outre, bien que les gens se plaignent sans cesse des erreurs du serveur, ils ne cessent de revenir. À mon avis, une partie du frisson d’un BOC réside dans le fait qu’il ya beaucoup de monde qui essaient de l’obtenir. Si les serveurs émettent une erreur ou une page géniale, cela signifie que je suis quelque part dans un groupe de trop de gens qui essaient de se procurer l'un des 1 500 produits.
Si vous mettez autant de créativité dans la construction du puzzle et qu'il est suffisamment original, cela retardera les robots suffisamment longtemps pour donner une chance à tous les autres. En incorporant un mot aléatoire capturé sous forme de code, en plaçant une page intermédiaire entre "I Want One" et la page d'achat, qui nécessite une interaction uniquement humaine, vous avez stoppé les robots, jusqu'à ce qu'ils sachent ce qui doit se passer.
• Vous n'avez pas implémenté de captcha ennuyeux et parfois péniblement difficile à lire • vous avez rendu le processus plus amusant, • vous avez réduit la charge sur le serveur d'achat sécurisé réel • vous formerez les utilisateurs dont ils auront besoin faire quelque chose pour obtenir un BOC • Vous allez arrêter les robots à la page intermédiaire, en retardant leurs achats jusqu'à ce que la plupart des gens aient au moins eu la chance d'essayer de résoudre ce casse-tête amusant, mais pas très difficile.
• Etant donné qu'être aléatoire est ce qu'est un COB, un puzzle/une tâche aléatoire et évolutif s'intégrerait simplement dans toute la hauteur d'un BOC.
Au fur et à mesure que vous expérimentez, la technologie derrière la page intermédiaire peut devenir plus avancée, avec des informations aléatoires pouvant être capturées pour être utilisées dans la page d'achat. Puisque
J'ai acheté, sans l'aide de robots, ni de scripts autres que wootalyzer, que je considère être une aide acceptable, 7 BOC depuis le 31/05/05. Le meilleur, que je n'ai pas eu, était le BOC Please Please Me. Les batteries de B & D étaient aussi amusantes, mais je suppose que cela n’a pas bouleversé les robots, mais seulement frustré les utilisateurs habituels.
Parfois, la meilleure solution à un problème technologique n’est pas plus technologique.
Et si vous randomisiez ou chiffriez les noms et les identifiants de formulaire, randomisiez l'ordre des champs de formulaire et transformiez les étiquettes de formulaire en une image captcha aléatoire, ce qui rendrait une attaque de script beaucoup plus difficile :-D
Faites de toute la page sanglante un CAPTCHA!
Un peu comme Sesame Street ... huit de ces choses n’appartiennent pas à ici ...
Mettez 9 éléments, 9 formulaires HTML, 9 boutons I WANT ONE à l’écran.
(9 est juste le numéro de la journée ... choisissez le numéro de votre choix pour que la présentation soit encore belle. 12 peut-être. Personnalisez-le éventuellement pour la résolution du navigateur de chargement ...)
Et brouille-les pour chaque personne.
Assurez-vous que le BOC doit être "vu" pour savoir lequel il s'agit ... bien sûr, cela signifie que les 8 autres doivent être "vus seulement" également, pour savoir qu'ils ne sont PAS le produit à acheter.
Assurez-vous de n'utiliser que des nombres complètement fous pour référencer tout ce qui se cache dans les coulisses de la source de la page. Très bien, le BOT voit l'heure BOC ... mais il sera difficile de choisir le bon formulaire HTML à soumettre pour traitement.
Vous savez, si vous publiez votre flux RSS à l'aide de pubsubhubbub, les utilisateurs n'auront pas à consulter votre page Web à plusieurs reprises pour voir la suite de l'événement dans le Woot-off, ils attendront simplement que celle-ci apparaisse sur Google. Lecteur.
Une solution potentielle à votre problème particulier (et non au problème général) serait d'exiger que les utilisateurs soient connectés s'ils veulent voir la "merde". Affichez uniquement les prix pour les utilisateurs qui se sont connectés. Tous les autres éléments peuvent rester visibles pour les utilisateurs non connectés, comme ils l'ont toujours été. Ensuite, vos utilisateurs fidèles ont priorité sur la merde.
Vous devrez évidemment en informer vos utilisateurs, peut-être avec une notification indiquant que cela est fait pour augmenter les chances que de vrais utilisateurs trouvent la merde.
Si votre problème spécifique concerne les robots collectant un type d’article, choisissez la solution la moins restrictive et ne vous défendre que contre cette attaque. Cette option empêcherait alors les captchyas et les problèmes d’utilisabilité qui vous préoccupent.
Si les robots se connectent et commencent à envoyer du spam, vous pouvez forcer leur déconnexion et verrouiller le compte.
S'ils ne sont là que pour obtenir le sac, ils partiront assez rapidement et votre page ne sera pas prise d'assaut. Oubliez les solutions hautement techniques.
2 choses:
solution de couche serveur: mod_evasive (si vous utilisez Apache)
http://www.zdziarski.com/projects/mod_evasive/
solution de couche avant: captcha inverse, ou autre captcha non intrusif
Créez une règle de pare-feu ip simple qui liste en noir l'adresse IP si vous détectez plus d'un max. nombre de demandes entrant par seconde.
Mises en garde initiales:
Je ne suis pas alphabète. Je n'ai pas lu beaucoup d'autres commentaires ici.
Je suis tombé sur la description de Woot ce matin. Je pensais que quelques commentaires d'un utilisateur modéré des sites woot (et d'un acheteur manuel à deux reprises de BOC) pourraient être utiles.
Woot est dans une position unique où il s'agit les deux d'un site marchand et d'une destination avec des utilisateurs fidèles, et je comprends la délicatesse perçue de cet équilibre. Mais personnellement, je pense que votre préoccupation au sujet de "l'impact négatif sur les utilisateurs" d'une Crap-CAPCHA ("CRAPCHA" - en quelque sorte, je doute que je sois la première à faire ce gag) sur les utilisateurs est beaucoup exagérée. En tant qu'utilisateur, je serais heureux de prouver que je suis un humain. Et je compte sur Woot pour rendre le processus amusant et intéressant, en l'intégrant dans l'expérience globale.
Cela conduira-t-il à la "course aux armements" posée? Je ne sais pas, mais cela ne peut que vous aider. Si, par exemple, des informations clés d'achat sont incluses dans l'image du produit ou impliquées dans la description du produit (de manière différente à chaque fois), le mieux qu'un script puisse faire serait d'ouvrir une page d'achat lors de la détection du mot C-Word. . En fait, je pense que c'est correct: vous devez toujours être en ligne et le principe du premier arrivé, premier servi s'applique également - Wootalyzer et des outils similaires ne font qu'augmenter sensibilisation plutôt que d'automatiser l'achat pendant que je dors ou travailler.
Bonne chance pour résoudre ce problème et continuez votre bon travail.
JGM
Vous faites ce chemin à dur. Je vais probablement me lancer moi-même depuis que je viens de gagner un BOC du site aujourd'hui avec un site de bot, mais je viens de mettre le texte RANDOM CRAP dans des captchas sur la page principale du site. Les robots recherchent tous le texte "RANDOM CRAP". Donc, en gros, vous évitez simplement de les déclencher. Quiconque regarde avec ses yeux verra qu'il est écrit "Merde aléatoire".
Pourquoi ne pas vendre des clés RSA à chaque utilisateur :) Hé, s’ils peuvent le faire pour WoW, vous devriez pouvoir le faire.
J'attends une BDC pour ma réponse;)
Pourquoi ne pas faire de la page de couverture un graphique mappé avec une image (une seule image sans étiquettes, étiquettes, etc.)? Facile à lire et à comprendre par pratiquement tous les appareils, impossible à interroger par un bot. Faites essentiellement de la page de couverture un captcha.
Il n’ya probablement pas de solution miracle pour prendre soin des Bots, mais une combinaison de ces suggestions peut les dissuader et les réduire à un nombre plus gérable.
S'il vous plaît laissez-moi savoir si vous avez besoin de clarification sur l'une de ces suggestions:
Je ne comprends probablement pas bien le problème, mais cette idée m’est venue à l’esprit. Utilisez AJAX pour dessiner et mettre à jour le contenu dynamique à un intervalle fixe tout en ralentissant le chargement de la page entière à l’aide de l’actualisation.
Par exemple, attendez que la page entière soit dessinée pendant la totalité de la page en 15 secondes, après quoi le contenu dynamique est actualisé automatiquement à l'aide de AJAX après un délai défini de, par exemple, 5 secondes. Ce serait un inconvénient majeur de recharger une page entière. Il se peut que la page affiche régulièrement de nouvelles informations (y compris des annonces), mais le redessinage d’une page complète à l’aide de reload serait considérablement plus lent.
Les script kiddies pourront comprendre et automatiser la requête AJAX, mais il serait également très facile de limiter le nombre de ces requêtes à partir du même IP. Étant donné qu’il n’existe pas de méthode classique permettant à un utilisateur humain standard d’introduire ces demandes à partir du navigateur, il serait évident que les demandes à haut débit destinées à l’URL AJAX à partir de la même adresse IP seraient lancées par une forme quelconque de serveur automatisé. système.
utilisez une limitation de connexion simultanée par adresse IP via iptables sur le serveur (s'il est basé sur Linux) ou utilisez un "routeur" dédié
Deux solutions, une high-tech, une low-tech.
Tout d’abord la technologie de pointe: les offres BOC se vendent en un instant car les bots en obtiennent beaucoup au cours des premières millisecondes. Donc, au lieu d'essayer de vaincre les robots, vendez-leur ce qu'ils recherchent: un sac de merde. Une merde sans valeur, bien sûr: des trombones pliés et des photos souillées de Rosie O'Donnell. Installez ensuite des délais aléatoires intégrés sur le serveur pendant quelques secondes à la fois. À mesure que la vente se poursuit, la valeur réelle du produit vendu augmentera, mais pas le prix de vente. De cette façon, les premiers acheteurs (les robots dans les premières millisecondes) obtiendront quelque chose de beaucoup moins cher que ce qu'ils ont payé (gâteaux à l'oignon brun?), Les prochains acheteurs (les robots plus lents ou les humains plus rapides) recevront quelque chose de peu spectaculaire acheté en consignation?), et les derniers acheteurs (presque tous les humains) obtiendront quelque chose de plus que le prix d'achat (champagne d'exception?). Cette télévision à écran plat pourrait être dans le dernier BOC acheté.
Ceux qui attendent trop longtemps manqueront une occasion, mais en même temps ceux qui achèteront trop vite se feront avoir. L'astuce consiste à attendre pendant un certain temps ... mais pas trop. Il y a un peu de chance impliqué, qui est comme il se doit.
La solution peu technique consisterait à changer le nom du BOC en quelque chose que les humains peuvent interpréter mais que les bots ne peuvent pas. Peau de veau d'excréments? Sac contenant des odeurs? Topologiquement une surface plane adjacente à des produits assortis? N'utilisez jamais le même nom deux fois, utilisez des images légèrement différentes et expliquez dans la description du produit ce qui est réellement vendu.
Une solution assez simple consiste à suivre la différence de temps entre le rendu des formulaires et l'obtention de la réponse: les bots ont généralement des temps de réponse extrêmement courts, en millisecondes, aucun utilisateur ne peut le faire; ou des temps de réponse extrêmement longs de plusieurs heures.
Un fragment Django _ le fait, avec une description plus détaillée: