Question Empêcher les scripteurs de claquer votre site Web


J'ai accepté une réponse, mais malheureusement, je crois que nous sommes coincés avec notre pire scénario initial: CAPTCHA tout le monde sur les tentatives d'achat de la merde. Explication succincte: 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 les bots. Il y a probablement un 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 nettoyer cela pour les futurs chercheurs (même si d'autres sont invités à essayer, comme c'est le wiki de la communauté).

Situation

C'est à propos de la vente de sac de merde sur woot.com. Je suis le président de Woot Workshop, la filiale de Woot qui réalise le design, écrit les descriptions de produits, les podcasts, les billets de blog et modère les forums. Je travaille avec CSS / HTML et je suis à peine familier avec 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é est une partie importante de mon travail et rendre le site passionnant et amusant est le reste du travail. 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.

Les robots bousculent notre page d'accueil des dizaines de fois en grattant un deuxième écran (et / ou en scannant notre RSS) pour la vente de Random Crap. Au moment où ils le voient, cela déclenche une deuxième étape du programme qui se connecte, clique sur le bouton Un, remplit le formulaire et achète la merde.

Évaluation

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 réalisation nécessite cela.

Sur Woot, les utilisateurs anonymes (non connectés) peuvent voir notre page d'accueil. En d'autres termes, les bots slamming peuvent être non-authentifiés (et essentiellement non-trackable sauf par adresse IP).

Nous sommes donc retournés à la recherche d'adresses IP, qui est assez inutile à l'ère des réseaux de nuage et des zombies spambot et b) attire trop d'innocents étant donné le nombre d'entreprises qui proviennent d'une adresse IP (sans parler des problèmes avec les fournisseurs de services Internet IP non statiques et les performances potentielles à la poursuite de cette tâche).

Oh, et que les gens nous appellent serait le pire scénario possible. Pouvons-nous les faire vous appeler?

BradCLes méthodes de Ned Batchelder ont l'air plutôt cool, mais elles sont plutôt conçues pour vaincre les robots construits 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 fonctionner pendant une courte période jusqu'à ce que les scripteurs développent leurs bots pour ignorer le pot de miel, gratter l'écran pour les noms d'étiquettes à proximité au lieu des identifiants de formulaires, et utiliser un contrôle de navigateur compatible javascript.

lc encore: "Sauf si, bien sûr, le battage médiatique fait partie de votre plan de marketing." Oui, c'est définitivement le cas. La surprise de l’apparition de l’objet, ainsi que l’émotion si vous parvenez à en obtenir un, sont probablement aussi importantes ou plus importantes que les conneries que vous obtenez. Tout ce qui élimine le premier arrivé / premier servi est préjudiciable au plaisir de «gagner» la merde.

novatrust: Et, pour ma part, bienvenue à nos nouveaux suzerains bot. En fait, nous proposons des flux RSS pour permettre aux applications tierces d'analyser notre site afin d'obtenir des informations sur les produits, mais pas avant le site HTML principal. Si je l'interprète correctement, votre solution aide le but 2 (problèmes de performance) en sacrifiant complètement le but 1, et en démissionnant simplement du fait que les bots achèteront la plupart des conneries. J'ai voté pour votre réponse, parce que votre dernier paragraphe pessimiste me semble exact. Il ne semble pas y avoir de solution miracle ici.

Le reste des réponses repose généralement sur le suivi IP, qui, à nouveau, semble être à la fois inutile (avec botnets / zombies / cloud computing) et nuisible (attraper de nombreux innocents qui proviennent de destinations IP même).

D'autres approches / idées? Mes développeurs continuent à dire "faisons juste du CAPTCHA" mais j'espère qu'il y aura des méthodes moins intrusives pour tous les humains qui veulent une partie de notre merde.

Question originale

Disons que vous vendez quelque chose de bon marché 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 allez vendre 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 essayant de programmer [a] quand vous vendez cet objet, et [b] assurez-vous qu'ils sont parmi les premiers à l'acheter. Cela craint pour deux raisons:

  1. Votre site est critiqué par des non-humains, ralentissant tout pour tout le monde.
  2. Les scripteurs 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 que vos utilisateurs doivent parcourir avant de passer leur commande, mais cela pose au moins trois problèmes:

  • L'expérience utilisateur est désastreuse pour les humains, car ils doivent déchiffrer CAPTCHA, choisir le chat ou résoudre un problème mathématique.
  • Si le bénéfice perçu est suffisamment élevé et que la foule est suffisamment nombreuse, un groupe trouvera son chemin dans tout ajustement menant à une course aux armements. (Ceci est d'autant plus vrai que le tweak est simple: forme des 'commentaires' cachés, réorganisation des éléments du formulaire, erreur d'étiquetage, texte caché 'gotcha' tout va fonctionner une fois et doit être changé pour combattre le ciblage de cette forme 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 déclencher une alarme pour que le scripteur puisse remplir la commande, manuellement. Étant donné qu'ils ont l'avantage de résoudre [a], ils continueront probablement à gagner [b] puisqu'ils seront les premiers humains à atteindre la page de commande. En outre, 1. se produit toujours, causant des erreurs de serveur et une baisse des performances pour tout le monde.

Une autre solution consiste à surveiller les IP 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 la recherche d'adresses IP est énorme et causerait probablement plus de problèmes comme 1. que les scripteurs causaient par leurs propres moyens. En outre, la possibilité de réseaux en nuage et de zombies spambot rend la vérification des adresses IP relativement inutile.

Une troisième idée, obligeant le chargement du formulaire de commande à être chargé pendant un certain temps (disons une demi-seconde), pourrait ralentir la progression des commandes rapides, mais encore une fois, les scénaristes seraient toujours les premiers à ne pas nuire à utilisateurs réels.

Buts

  1. Vendre l'article à des humains non scripteurs.
  2. Gardez le site à une vitesse qui ne soit pas ralentie par les robots.
  3. Ne harcelez pas les utilisateurs «normaux» avec des tâches à accomplir pour prouver qu'ils sont humains.

480
2018-02-08 20:45


origine


Réponses:


Que diriez-vous de mettre en œuvre quelque chose comme SO avec les CAPTCHA?

Si vous utilisez le site normalement, vous ne le verrez probablement jamais. S'il vous arrive de recharger trop souvent la même page, de poster des commentaires successifs trop rapidement, ou autre chose qui déclenche une alarme, faites-leur prouver qu'ils sont humains. Dans votre cas, il s'agirait probablement de rechargements constants de la même page, suivant rapidement chaque lien sur une page, ou de remplir un formulaire de commande trop rapidement pour être humain.

S'ils échouent à la vérification x fois sur une ligne (disons 2 ou 3), attribuez à cette adresse IP un délai ou une autre mesure de ce type. Puis, à la fin du délai d'expiration, replacez-les à nouveau dans le chèque.


Comme vous avez des utilisateurs non enregistrés qui accèdent au site, vous n'avez que des adresses IP à utiliser. Vous pouvez émettre des sessions sur chaque navigateur et suivre ce chemin si vous le souhaitez. Et bien sûr, lancez un test humain si trop de sessions sont (re) créées en succession (dans le cas où un bot continue à supprimer le cookie).

En ce qui concerne la capture d’un trop grand nombre d’innocents, vous pouvez afficher une clause de non-responsabilité sur cette page: "Cette page peut également apparaître si un trop grand nombre d’utilisateurs anonymes consultent notre site au même endroit. ce." (Ajustez le libellé de manière appropriée.)

En outre, quelles sont les chances que X personnes chargent la même page au même moment depuis une même adresse IP? Si elles sont élevées, vous avez peut-être besoin d'un mécanisme de déclenchement différent pour votre alarme de bot.


Edit: Une autre option est si elles échouent trop souvent et si vous avez confiance en la demande du produit, de les bloquer et de les appeler personnellement à supprimer le bloc.

Avoir des gens qui appellent semble être une mesure inusitée, mais s'assure qu'il y a un humain quelque part derrière l'ordinateur. La clé est de faire en sorte que le bloc ne soit en place que pour une condition qui ne devrait presque jamais se produire, à moins qu’il ne s’agisse d’un bot (par exemple, échec de la vérification plusieurs fois de suite). Ensuite, FORCE l'interaction humaine - pour décrocher le téléphone.

En réponse au commentaire de les avoir appelé moi, il y a évidemment ce compromis ici. Êtes-vous assez inquiet de voir à ce que vos utilisateurs acceptent des appels téléphoniques lorsqu'ils sont en vente? Si je m'inquiétais tellement d'un produit destiné aux utilisateurs humains, je devrais prendre cette décision, en sacrifiant peut-être un peu de mon temps.

Comme il semble que vous soyez déterminé à ne pas laisser les robots prendre le dessus, je pense que le téléphone peut être une bonne option. Comme je ne fais pas de profit sur votre produit, je n'ai aucun intérêt à recevoir ces appels. Si vous partagiez une partie de ce profit, je serais peut-être intéressé. Comme il s’agit de votre produit, vous devez décider quel montant vous souhaitez et mettre en œuvre en conséquence.


Les autres façons de libérer le bloc ne sont pas aussi efficaces: un timeout (mais ils finiraient par claquer votre site après, rinse-repeat), un long timeout (si c'était vraiment un humain essayant d'acheter votre produit, ils seraient SOL et punis pour avoir échoué le contrôle), email (facilement fait par des robots), fax (même), ou courrier postal (prend trop longtemps).

Bien entendu, vous pourriez, par contre, augmenter le délai d'expiration par adresse IP à chaque fois que vous obtenez un délai d'expiration. Assurez-vous simplement de ne pas punir les vrais humains par inadvertance.


221
2018-02-07 18:47



Vous devez trouver un moyen de faire en sorte que les bots achètent des choses qui sont massivement trop chères: 12mm. Voyez combien de bots se cassent avant que les scénaristes décident que vous les jouez.

Utilisez les bénéfices pour acheter plus de serveurs et payer pour la bande passante.


189



Ma solution serait de rendre inutile la recherche d’écran en prévoyant un délai d’environ 10 minutes pour les bots et les scripts.

Voici comment je le ferais:

  • Connectez-vous et identifiez les frappeurs répétés.

Vous n'avez pas besoin de consigner chaque adresse IP sur chaque hit. Ne suivez qu'un sur 20 hits environ. Un récidiviste apparaîtra toujours dans un suivi aléatoire aléatoire.

  • Gardez un cache de votre page d'environ 10 minutes plus tôt.

  • Lorsqu'un répétiteur / bot frappe votre site, donnez-lui l'ancienne page en cache de 10 minutes.

Ils ne sauront pas immédiatement qu'ils ont un ancien site. Ils seront en mesure de le rattraper, et tout, mais ils ne gagneront plus aucune course, parce que les «vraies personnes» auront une longueur d'avance de 10 minutes.

Avantages:

  • Pas de problème ou de problèmes pour les utilisateurs (comme les CAPTCHA).
  • Implémenté entièrement côté serveur. (pas de confiance en Javascript / Flash)
  • Servir une page plus ancienne et mise en cache devrait être moins exigeante en performances qu'une page en direct. Vous pouvez effectivement diminuer la charge sur vos serveurs de cette façon!

Désavantages

  • Nécessite le suivi de certaines adresses IP
  • Nécessite de conserver et de maintenir un cache de pages plus anciennes.

Qu'est-ce que tu penses?


158



Jeter un coup d'œil à cet article par ned Batchelder ici. Son article est sur l'arrêt des spambots, mais les mêmes techniques pourraient facilement s'appliquer à votre site.

Plutôt que d’arrêter les bots en ayant   les gens s'identifient, nous pouvons   arrêter les robots en le rendant difficile   pour eux de faire un post réussi, ou   en les faisant identifier par inadvertance   eux-mêmes en tant que robots. Cela supprime le   fardeau des gens, et laisse la   formulaire de commentaire sans anti-spam visible   les mesures.

Cette technique est comment je préviens   spambots sur ce site. Ça marche. le   méthode décrite ici ne regarde pas   le contenu du tout.

Quelques autres idées:

  • Créé un officiel mécanisme de notification automatique (flux RSS? Twitter?) auquel les gens peuvent s'abonner lorsque votre produit est mis en vente. Cela réduit la avoir besoin pour que les gens fassent des scripts.
  • Changez votre technique d'obfuscation juste avant un nouvel article est mis en vente. Donc, même si les scripteurs peuvent intensifier la course aux armements, ils sont toujours à un jour de retard.

EDIT: Pour être totalement clair, l'article de Ned ci-dessus décrit des méthodes pour empêcher l'ACHAT automatisé d'articles en empêchant un BOT de passer par les formulaires pour soumettre une commande. Ses techniques ne seraient pas utiles pour empêcher les robots de gratter la page d'accueil afin de déterminer quand un bandeau de carottes sera mis en vente. Je ne suis pas sûr que cela soit vraiment possible.

En ce qui concerne vos commentaires sur l'efficacité des stratégies de Ned: Oui, il parle des pots de miel, mais je ne pense pas que ce soit sa stratégie la plus forte. Sa discussion de la FILEUR est la raison originale que j'ai mentionné son article. Désolé je ne l'ai pas rendu plus clair dans mon post original:

Le spinner est un champ caché utilisé pour   quelques choses: il hash ensemble un   nombre de valeurs qui empêchent   falsification et replays, et est utilisé pour   noms de champs obscurs. Le spinner est un   MD5 hash de:

  • L'horodatage,
  • L'adresse IP du client,
  • L'identifiant de l'entrée de blog commentée et
  • Un secret.

Voici comment vous pouvez l'implémenter chez WOOT.com:

Changer la valeur "secrète" qui est utilisée dans le hachage chaque fois qu'un nouvel article est mis en vente. Cela signifie que si quelqu'un va concevoir un BOT pour acheter automatiquement des articles, il ne fonctionnerait que jusqu'à la prochaine vente de l'article suivant!!

Même si quelqu'un est capable de reconstruire rapidement son bot, tous les autres utilisateurs auront déjà acheté un BOC, et votre problème est résolu!

L'autre stratégie qu'il discute est de changement la technique des pots de miel de temps en temps (encore une fois, changez-la quand un nouvel article est mis en vente):

  • Utilisez des classes CSS (randomisées bien sûr) pour définir les champs ou un élément contenant à afficher: none.
  • Colorez les champs de la même façon (ou très similaire) à l'arrière-plan de la page.
  • Utilisez le positionnement pour déplacer un champ hors de la zone visible de la page.
  • Rendre un élément trop petit pour afficher le champ de pot de miel contenu.
  • Laissez les champs visibles, mais utilisez le positionnement pour les recouvrir d'un élément masquant.
  • Utilisez Javascript pour effectuer l'une de ces modifications, nécessitant qu'un bot dispose d'un moteur Javascript complet.
  • Laissez les pots de miel affichés comme les autres champs, mais dites aux gens de ne rien entrer dedans.

Je pense que mon idée générale est de CHANGER LA CONCEPTION DE FORMULAIRE lorsque chaque nouvel article est mis en vente. Ou au moins, changez-le quand un nouveau BOC sera mis en vente.

Quel est quoi, quelques fois / mois?

Si vous acceptez cette réponse, me direz-vous quand le prochain sera dû? :)


54



Q: Comment empêcheriez-vous les scripteurs de claquer votre site des centaines de fois par seconde?
A: Vous n'avez pas. Il n'y a aucun moyen de prévenir ce comportement par des agents externes.

Vous pourriez utiliser une vaste gamme de technologies pour analyser les demandes entrantes et tenter heuristiquement de déterminer qui est et n'est pas humain ... mais cela échouerait. Finalement, si ce n'est pas immédiatement.

La seule solution viable à long terme est de changer le jeu de sorte que le site ne soit pas adapté aux robots ou moins attrayant pour les scripteurs.

Comment tu fais ça? Eh bien, c'est une question différente! ;-)

...

OK, certaines options ont été données (et rejetées) ci-dessus. Je ne suis pas intimement familier avec votre site, je ne l'ai examiné qu'une seule fois, mais comme les gens peuvent lire du texte dans des images et que les robots ne peuvent pas le faire facilement, changez l'annonce pour en faire une image. Pas un CAPTCHA, juste une image -

  • générer l'image (en cache bien sûr) lorsque la page est demandée
  • Gardez le même nom de source d'image, ce qui ne vous empêche pas de jouer
  • la plupart du temps, l'image contiendra du texte ordinaire et sera alignée pour sembler faire partie de la page HTML intégrée
  • lorsque le jeu est activé, l'image change en texte d'annonce
  • le texte de l'annonce révèle une URL et / ou un code qui doit être entré manuellement pour acquérir le prix. CAPTCHA le code si vous le souhaitez, mais ce n'est probablement pas nécessaire.
  • pour plus de sécurité, le code peut être un jeton unique généré spécifiquement pour la requête / IP / agent, de sorte que les demandes répétées génèrent des codes différents. Ou vous pouvez pré-générer un tas de codes aléatoires (un tampon à usage unique) si la génération à la demande est trop taxante.

Exécutez des essais temporels sur des personnes réelles qui réagissent à cela et ignorez les réponses («oups, une erreur est survenue, désolé! Veuillez réessayer») plus rapidement que (disons) la moitié de ce temps. Cet événement devrait également déclencher une alerte aux développeurs pour qu'au moins un bot ait compris le code / jeu, il est donc temps de changer le code / jeu.

Continuez à changer le jeu périodiquement de toute façon, même si aucun bots ne le déclenche, juste pour gâcher le temps des scripteurs. Finalement, les scénaristes devraient se lasser du jeu et aller ailleurs ... nous espérons ;-)

Une dernière suggestion: quand une demande pour votre page principale arrive, mettre dans une file d'attente et répondre aux demandes dans un processus séparé (vous devrez peut-être pirater / étendre le serveur Web pour ce faire, mais cela en vaut probablement la peine). Si une autre demande du même IP / agent intervient alors que la première requête est dans la file d'attente, ignorez-la. Cela devrait automatiquement éliminer la charge des robots.

EDIT: une autre option, en dehors de l'utilisation des images, est d'utiliser javascript pour remplir le texte d'achat / non-achat; les robots interprètent rarement le javascript, ils ne le verront donc pas


44



Je ne sais pas si c'est faisable: ... aller à l'offensive.

Déterminez les données recherchées par les robots. Nourrissez-leur les données qu'ils recherchent lorsque vous ne vendez pas la merde. Faites-le d'une manière qui ne dérange pas ou ne perturbe pas les utilisateurs humains. Lorsque les bots déclenchent la deuxième phase, ils se connectent et remplissent le formulaire pour acheter 100 $ roombas au lieu de BOC. Bien sûr, cela suppose que les robots ne sont pas particulièrement robustes.

Une autre idée consiste à appliquer des baisses de prix aléatoires au cours de la période de vente des sacs. Qui achèterait un sac aléatoire de merde pour 150 $ quand vous déclarez clairement que cela ne vaut que 20 $? Personne d'autre que des bots trop zélés. Mais 9 minutes plus tard, cela coûte 35 dollars, puis 17 minutes plus tard, 9 dollars. Ou peu importe.

Bien sûr, les rois zombies seraient en mesure de réagir. Le point est de faire en sorte que leurs erreurs deviennent très coûteuses pour eux (et de les faire payer pour les combattre).

Tout ceci suppose que vous voulez faire chier certains seigneurs de bot, ce qui peut ne pas être 100% conseillé.


29



Le problème semble donc vraiment être le suivant: les robots recherchent leur «sac à dos» parce qu’ils ont une valeur perçue élevée à un faible prix perçu. Vous offrez parfois cet objet et les bots se cachent, attendant de voir si c'est disponible et ensuite ils achètent l'article.

Comme il semble que les propriétaires de bot réalisent un profit (ou réalisent potentiellement un profit), l’astuce consiste à rendre cela non rentable pour eux en encourageant d'acheter la merde.

Premier, toujours offrir le "sac 'o crap".

Deuxièmement, assurez-vous que la merde est généralement de la merde.

Troisièmement, faites tourner la merde fréquemment.

Simple, non?

Vous aurez besoin d'un permanent "pourquoi est notre merde parfois merde?" lien à côté de l'offre pour expliquer aux humains ce qui se passe.

Quand le bot voit qu'il y a de la merde et que la merde est automatiquement achetée, le destinataire va être terriblement fâché d'avoir payé 10 $ pour un cure-dent cassé. Et puis un sac poubelle vide. Et puis de la saleté au bas de votre chaussure.

S'ils achètent assez de cette merde dans une période de temps relativement courte (et vous avez de grands avertissements partout expliquant pourquoi vous faites cela), ils vont perdre un juste "sac" ou de l'argent "sur votre" sac 'o merde'. Même une intervention humaine de leur part (vérifier que la merde n'est pas de la merde) peut échouer si vous faites tourner la merde assez souvent. Heck, peut-être les robots remarqueront-ils et n'achèteront-ils pas quelque chose qui a été en rotation depuis trop peu de temps, mais cela signifie que les humains achèteront la non-merde.

Heck, vos clients réguliers pourraient être tellement amusés que vous pouvez transformer cela en une énorme victoire marketing. Commencer à afficher combien de la carpe "merde" est vendu. Les gens reviendront juste pour voir à quel point les robots ont été mordus.

Mettre à jour:  Je pense que vous pourriez recevoir quelques appels à l'avance avec des gens qui se plaignent. Je ne pense pas que vous pouvez arrêter cela complètement. Cependant, si cela tue les robots, vous pouvez toujours l'arrêter et le redémarrer plus tard.


20



  1. Vendre l'article à des humains non scripteurs.

  2. Gardez le site à une vitesse qui ne soit pas ralentie par les robots.

  3. Ne harcelez pas les utilisateurs «normaux» avec des tâches à accomplir pour prouver qu'ils sont humains.

Vous ne voulez probablement pas entendre cela, mais les n ° 1 et 3 sont mutuellement exclusifs.

On the Internet, nobody knows you're a dog

Eh bien, personne ne sait que vous êtes un robot non plus. Il n'y a pas de moyen programmatique pour dire s'il y a un humain à l'autre bout de la connexion sans que la personne doive faire quelque chose. Empêcher les scripts / bots de faire des choses sur le Web est la raison principale pour laquelle les CAPTCHA ont été inventés. Ce n'est pas comme si c'était un nouveau problème qui n'a pas fait l'objet de beaucoup d'efforts. S'il y avait une meilleure façon de le faire, celle qui n'impliquait pas la difficulté pour les utilisateurs réels qu'un CAPTCHA fait, tout le monde l'utiliserait déjà.

Je pense que vous devez faire face au fait que si vous voulez garder les bots sur votre page de commande, un bon CAPTCHA est le seul moyen de le faire. Si la demande pour votre merde aléatoire est suffisamment élevée pour que les gens soient prêts à faire tout ce qu'ils peuvent pour l'obtenir, les utilisateurs légitimes ne seront pas rebutés par un CAPTCHA.


15



La méthode que Woot utilise pour combattre ce problème change littéralement le jeu. Lorsqu'ils vendent un article extrêmement souhaitable, ils obligent les utilisateurs à jouer à un jeu vidéo pour le commander.

Non seulement cela combat efficacement les bots (ils peuvent facilement apporter des modifications mineures au jeu pour éviter les joueurs automatiques, ou même fournir un nouveau jeu pour chaque vente) mais cela donne aussi l'impression aux utilisateurs de "gagner" l'objet désiré tout en ralentissant le processus de commande.

Il se vend encore très rapidement, mais je pense que la solution est bonne: réévaluer le problème et modifier les paramètres ont conduit à une stratégie réussie où les solutions strictement techniques n'existaient tout simplement pas.


Votre modèle d'entreprise entier est basé sur le principe «premier arrivé, premier servi». Vous ne pouvez pas faire ce que les stations de radio ont fait (ils ne font plus le premier appelant le gagnant, ils font le 5ème, 20ème ou 13ème appelant le gagnant) - il ne correspond pas à votre fonction principale.

Non, il n'y a aucun moyen de le faire sans changer l'expérience de commande pour les utilisateurs réels.

Disons que vous mettez en œuvre toutes ces tactiques. Si je décide que c'est important, je vais simplement faire travailler 100 personnes avec moi, nous allons construire un logiciel pour travailler sur nos 100 ordinateurs séparés, et frapper votre site 20 fois par seconde (5 secondes entre les accès pour chaque utilisateur / cookie / compte / adresse IP).

Vous avez deux étapes:

  1. Regarder la première page
  2. Commande

Vous ne pouvez pas mettre un captcha bloquant # 1 - cela va perdre de vrais clients ("Quoi? Je dois résoudre un captcha chaque fois que je veux voir le dernier woot?!?").

Donc, mon petit groupe regarde, chronométré ensemble, nous recevons environ 20 chèques par seconde, et quiconque voit le changement alerte d'abord tous les autres (automatiquement), qui va charger la page d'accueil, suivre le lien de la commande et effectuer la transaction ( ce qui peut également se produire automatiquement, sauf si vous implémentez captcha et le changez pour chaque wootoff / boc).

Vous pouvez placer un captcha en face de # 2, et même si vous ne tenez pas à le faire, c'est peut-être le seul moyen de s'assurer que même si les robots regardent la première page, les vrais utilisateurs obtiennent les produits.

Mais même avec captcha, mon petit groupe de 100 aurait encore un avantage considérable en tant que premier intervenant - et il est impossible de dire que nous ne sommes pas des humains. Si vous commencez à chronométrer nos accès, nous ajouterons simplement de la gigue. Nous pourrions sélectionner au hasard l’ordinateur à rafraîchir pour que l’ordre des accès change constamment, mais cela reste assez humain.

D'abord, débarrassez-vous des robots simples

Vous devez avoir un pare-feu adaptatif qui surveille les demandes et si quelqu'un fait la chose stupide évidente - rafraîchir plus d'une fois par seconde à la même adresse IP puis employer des tactiques pour les ralentir (abandonner les paquets, renvoyer refusé ou 500 erreurs, etc. ).

Cela devrait considérablement diminuer votre trafic et modifier les tactiques employées par les utilisateurs du bot.

Deuxièmement, rendre le serveur très rapide.

Tu ne veux vraiment pas entendre ça ... mais ...

Je pense que ce dont vous avez besoin est une solution entièrement personnalisée de bas en haut.

Vous n'avez pas besoin de manipuler la pile TCP / IP, mais vous devrez peut-être développer un serveur personnalisé très, très, très rapide, conçu pour corréler les connexions utilisateur et réagir de manière appropriée à diverses attaques.

Apache, lighthttpd, etc. sont tous parfaits pour être flexibles, mais vous exploitez un site Web à usage unique, et vous devez vraiment être capable de faire plus que ce que les serveurs actuels sont capables de faire (à la fois ).

En desservant une page Web largement statique (mises à jour toutes les 30 secondes environ) sur un serveur personnalisé, vous ne devez pas seulement gérer 10 fois le nombre de requêtes et le trafic (car le serveur ne fait rien d'autre que recevoir la requête et lire la page de la mémoire dans le tampon TCP / IP), mais elle vous donnera également accès à des mesures qui pourraient vous aider à ralentir les robots. Par exemple, en corrélant les adresses IP, vous pouvez simplement bloquer plus d'une connexion par seconde par IP. Les humains ne peuvent pas aller plus vite que cela, et même les personnes utilisant la même adresse IP NATed ne seront que rarement bloquées. Vous voudriez faire un bloc lent - laissez la connexion toute seule pendant une seconde avant de terminer officiellement la session. Cela peut alimenter un pare-feu pour donner des blocs à plus long terme à des délinquants particulièrement flagrants.

Mais la réalité est que peu importe ce que vous faites, il n'y a aucun moyen de distinguer un humain d'un bot lorsque le bot est construit sur mesure par un humain pour un seul but. Le bot n'est qu'un proxy pour l'humain.

Conclusion

À la fin de la journée, vous ne pouvez pas distinguer un humain et un ordinateur pour regarder la première page. Vous pouvez arrêter les bots à l'étape de la commande, mais les utilisateurs du bot ont toujours un avantage de premier arrivé, et vous avez encore une énorme charge à gérer.

Vous pouvez ajouter des blocs pour les bots simples, ce qui augmentera la barre et moins de gens avec la peine. Cela peut suffire.

Mais sans changer votre modèle de base, vous n'avez pas de chance. Le mieux que vous puissiez faire est de prendre en charge les cas simples, de rendre le serveur si rapide que les utilisateurs réguliers ne le remarquent pas et de vendre tellement d’éléments que même si vous disposez de quelques millions de bots, .

Vous pourriez envisager de mettre en place un pot de miel et de marquer les comptes d'utilisateurs en tant qu'utilisateurs de bot, mais cela aura une énorme réaction négative de la part de la communauté.

Chaque fois que je pense à un "bien, qu'en est-il de faire ça ..." je peux toujours le contrer avec une stratégie de bot appropriée.

Même si vous faites de la page d'accueil un captcha pour accéder à la page de commande ("Le bouton de commande de cet objet est bleu avec des brillants roses, quelque part sur cette page"), les robots ouvriront simplement tous les liens de la page De retour avec une page de commande. C'est juste pas moyen de gagner ça.

Rendez les serveurs rapides, installez un reCaptcha (le seul que j'ai trouvé qui ne peut pas être facilement trompé, mais il est probablement beaucoup trop lent pour votre application) sur la page de commande et réfléchissez aux moyens de modifier légèrement le modèle les utilisateurs réguliers ont autant de chance que les utilisateurs de bot.

-Adam


13