Bots en scalpers

Bots en scalpers tegenhouden bij je drop

Je kunt de discussie over botdetectie winnen en de drop alsnog verliezen. Beloont de wachtrij wie het eerst aankomt, en is aankomen precies waar een script goed in is, dan geeft een volmaakt eerlijke regel de voorraad nog steeds aan doorverkopers.

Het probleem is toewijzing, niet verkeer

Gaat een drop naar doorverkopers, dan is de klacht steevast “de bots waren er eerder”. Dat klopt, en het wijst naar de verkeerde oplossing.

Bots blokkeren is een detectieprobleem, en detectie is een wapenwedloop tegen mensen die het fulltime doen. Elke verbetering die je maakt, is iets waar zij omheen gaan, en zodra jouw detectie goed genoeg is om te willen verslaan, gaat het verkeer dat haar verslaat er menselijker uitzien. Je zult nooit kunnen aankondigen dat je hebt gewonnen.

Ondertussen is de echte fout simpeler. Je wachtrij beloofde: wie het eerst komt. Er kwam iets als eerste. Dat was een script, want een script is beter in aankomen dan een mens, en de wachtrij deed precies wat hij zei.

Een eerlijke regel leverde een oneerlijke uitkomst op. Dát is het punt om aan te vallen.

Waar controle aan de deur voor is, en waarvoor niet

Wij doen een botcontrole voordat iemand in de rij komt, en die doet echt werk: hij houdt het grove, hoogvolume scriptverkeer buiten de rij, wat uitmaakt omdat een rij vol scripts een rij is waarin de positie van een echt mens niets betekent.

Wat we niet doen, is er een getal op plakken. We publiceren geen detectiecijfer, geen “blokkeert 99% van de bots”, geen teller van gevangen bots. Wie zo’n getal noemt, noemt een getal dat hij niet kan onderbouwen tegen een tegenstander die zich nog aanpast — en op een pagina die vertrouwd moet worden is dat erger dan niets zeggen.

Controle is noodzakelijk. Ze is niet voldoende, en een leverancier die haar als voldoende verkoopt, verkoopt je de wapenwedloop.

De beloning weghalen in plaats van de race aangaan

Het alternatief is om als eerste aankomen niets waard te maken.

Bij een presale-drop staat de inschrijving open gedurende een venster — een uur, een dag, zo lang je wilt. Zolang het openstaat krijgt niemand een positie. Als de drop begint, worden alle posities in één keer toegekend via een sleutelgebonden pseudowillekeurige permutatie. Wie zich in de eerste milliseconde inschreef en wie zich 47 minuten later inschreef hebben dezelfde verwachte positie.

Denk na over wat dat doet met de economie aan de andere kant. Het hele voordeel van een script is snelheid. Koopt snelheid niets, dan blijft alleen volume over — meer inschrijvingen, meer identiteiten — en dat is een veel duurdere, veel zichtbaardere aanval dan snel zijn, en precies het soort dat controle wél goed vangt.

Je hebt de tegenstander niet uitgeschakeld. Je hebt het gevecht verplaatst naar terrein waar je niet structureel verliest.

Wees duidelijk over de reikwijdte: dit is wat een presale doet. Een gewone wachtrij is hier op volgorde van ticketnummer, net als bij iedereen. En we zijn niet uniek met een loting — Queue-it levert ook randomisatie bij de start van een event. Ongebruikelijk is dat het bij ons standaard is in plaats van een enterprise-functie, en dat we het mechanisme in het openbaar uitleggen.

Eén toelating mag geen vijf bestellingen worden

De andere helft van het probleem speelt na de deur. Iemand komt rechtmatig binnen en zet daarna één toelating om in een handvol bestellingen — parallelle sessies, een gedeelde link, een bewijs doorgestuurd naar een groepschat.

Elk bewijs is hier ondertekend en eenmalig, en op WooCommerce wordt dat afgedwongen bij de bestelling, niet alleen bij de pagina: de plugin verbruikt het bewijs zodra de betaling bevestigd is, dus een gebruikt bewijs kan niet worden hergebruikt, doorgestuurd of uitgewaaierd. De edge-connector doet de andere helft van het werk — hij vangt de menigte op bij Cloudflare zodat wachtend verkeer je winkel nooit bereikt — maar hij kent geen bestellingen en bewaakt de toewijzing niet zelf. Beide samen is de sterkste opstelling, en de WooCommerce-pagina zegt precies welke helft wat doet.

Het toelatingstempo is een botafweermaatregel, en niemand verkoopt het als zodanig

Hier zit het deel dat wordt gemist. Hoe snel je mensen binnenlaat, bepaalt hoeveel een bot waard is.

Laat 500 stuks los bij 200 toelatingen per minuut en de drop is in tweeënhalve minuut voorbij — een venster smal genoeg dat milliseconden beslissend zijn, precies de omstandigheid waar een script voor gebouwd is. Rek dezelfde 500 stuks over een uur uit en snelheid is niet langer het verschil.

Dat getal is bij sommige leveranciers een ondergrens. Een Cloudflare-wachtkamer kan niet onder 200 toelatingen per minuut worden ingesteld; het minimum staat in hun eigen documentatie. CrowdHandlers instaptarief begrenst de uitstroom op 60 per minuut, wat een ander probleem is — je kunt het ook niet versnellen.

Hier is het een knop zonder ondergrens en zonder limiet, gelijk bij elk pakket. Het staat als kolom op de prijspagina omdat het een dropbesturingsfunctie is, en het is toevallig de nuttigste hefboom tegen scalpers die je hebt.

Eerlijkheid is een merkveiligheidsaankoop

Droppubliek bestaat uit gemeenschappen, en die praten. Een drop waarvan breed geloofd wordt dat hij doorgestoken kaart was, doet schade die de voorraad overleeft, en “we gebruikten een wachtrij” stelt op zichzelf niemand meer gerust — er bestaat een levendige nevenindustrie van proxyleveranciers, CAPTCHA-oplossers en handleidingen om de rij over te slaan rond de gevestigde partijen, wat je ongeveer vertelt hoeveel vertrouwen wachtrijen genieten.

Daarom staat het mechanisme in het openbaar opgeschreven in plaats van omschreven als bedrijfsgeheim. Een wachtrij die niemand kan controleren, is een wachtrij die niemand gelooft.

Presale-loting

Bij een presale-loting voorspelt je aanmeldmoment niet je plek.

Acht shoppers melden zich op verschillende momenten aan tijdens een presale-venster. Niemand heeft nog een positie. Zodra de drop start, krijgt elke aanmelding in één keer een willekeurige plek in de rij. Loot het zelf, zo vaak als je wilt.

Aangemeld Gelote plek
  1. 1e 10:00:00.041 Plek 5
  2. 2e 10:00:00.930 Plek 8
  3. 3e 10:00:07 Plek 2
  4. 4e 10:02 Plek 7
  5. 5e 10:11 Plek 1
  6. 6e 10:24 Plek 4
  7. 7e 10:47 Plek 6
  8. 8e 10:59 Plek 3
Voorbeeldloting

Nog niet geloot. De getoonde plekken zijn één voorbeeldloting.

Dit is wat een presale-drop doet. Een gewone rij is hier op volgorde van aankomst, per ticketnummer, net als bij iedereen — de loting is een stand die je voor een drop aanzet.

In het echt is de schudbeurt een gesleutelde permutatie die wordt berekend op het moment dat de drop omslaat, en houdt één browseridentiteit één plek per presale: opnieuw aanmelden geeft dezelfde plek terug, geen nieuwe.

Aan de slag

In drie stappen naar je eerste eerlijke drop.

Geen DNS-wijziging, geen reverse proxy en geen omgeleid verkeer. De adapter is open source — lees hem voor je hem installeert.

  1. Installeer de adapter Cloudflare Worker of WooCommerce-plugin.
  2. Plak je setup-code Eén string uit de console. Er is verder niets in te stellen.
  3. Zet de wachtrij open Aanmelding, loting en toelating draaien allemaal vanuit het dashboard.