Bottene ble solgt videre for 70.000,- hver: «Absurd»

- Jeg får ofte spørsmål om dette er lovlig, og det kan sies å være en gråsone, skriver "sneaker-bot" skaperen Bajar Karaman.

Bajar Karaman lagde systemene InSilence og Lunar AIO for å hjelpe folk med å kjøpe opp haugevis av sjeldne varer, blant annet sko. Praksisen er omdiskutert, for å si det forsiktig, men interessant rent teknisk. 📸: Privat / kode24
Bajar Karaman lagde systemene InSilence og Lunar AIO for å hjelpe folk med å kjøpe opp haugevis av sjeldne varer, blant annet sko. Praksisen er omdiskutert, for å si det forsiktig, men interessant rent teknisk. 📸: Privat / kode24 Vis mer

Mitt navn er Bajar Karaman, også kjent under aliaset Seraphpy. Mellom 2017 og 2023 var jeg en av de ledende personene som bidro til at sneaker bots ble en millionindustri, og den eneste som gjorde det i Norge.

Jeg ønsker å dele historien og erfaringer med dere, i håp om å inspirere andre teknologi-entusiaster og programmerere som kanskje nøler med å satse på sine små prosjekter.

Min historie omfatter alt fra å aldri ha kodet før, til å drive et fulltidsprosjekt fra stua, reversere bot-beskyttelser, finne store sårbarheter i de største bedriftenes nettsider som solgte begrensede sko, og hjelpe folk med å tjene nok penger til å betale ned utdanningen eller Teslaen sin.

«På den tiden kunne du kjøpe et par Yeezys Adidas-sko for 2.200 kr og selge dem for 5.000 kr, noe som ga en absurd fortjeneste.»

Sneaker cookgroup

I 2017 var etterspørselen etter sneakers høyere enn noensinne. Markedet var på topp mellom 2017 og 2020. Sneaker bots, eller automatiseringsverktøy som jeg liker å kalle det, har lenge vært kjent, men få visste hvor kraftige disse verktøyene kunne være.

Mange gamere vet at det finnes bots som kan automatisere ulike ting i spill, og på samme måte kan man gjøre det samme i nettleseren din, noe som gjør at du blir ekstremt mye raskere enn alle andre du "konkurrerer" mot.

Det "nye" som kom rundt 2017 var sneaker cookgroup-konseptet. En sneaker cookgroup er en online gruppe av sneaker-entusiaster som deler informasjon og strategier for å kjøpe begrensede og ettertraktede sneakers.

Gruppene gir medlemmene tilgang til eksklusive oppdateringer om lanseringsdatoer, restocks og annen informasjon om sneakersalg. De gir vanligvis tips om hvordan man kan øke sjansene for å kjøpe ønskede sneakers gjennom automatisert programvare og annen teknologi.

På den tiden kunne du kjøpe et par Yeezys (Adidas sko) for 2200 kr og selge dem for 5000 kr, noe som ga en absurd fortjeneste. Hvis man satte opp ting riktig for brukerne, kunne de få 5-10 par per person.

InSilence
InSilence Vis mer

Gjennom Discord

Jeg drev en gruppe som het InSilence fra 2017. Gruppen var tilgjengelig gjennom Discord:

Brukere abonnerte på nettsiden min og fikk deretter en Discord-lenke. Inne i denne Discord-serveren var det alt fra informasjon til webskrapere som postet informasjon om forskjellige sko som var aktuelle. Det var en kanal per side som lanserte sko. Når denne siden hadde en endring, ville mine skrapere gjøre et oppslag i databasen min og se om det var noe nytt, dette kunne være nye produkter eller størrelser.

Hvis det var en endring, ble det postet i en egen kanal i Discord-serveren. Alle brukerne ville da få en notifikasjon om en "restock" eller et nytt "instock" produkt. Dette gjorde at du ikke trengte å sitte og oppdatere siden hele tiden selv, og du hadde muligheten til å være på alle de populære sidene samtidig. Dette kalte vi for monitors/sneaker monitors.

Det var vanlig å bruke proxyer for disse monitorene og botene. Det endte opp med at vanlige folk startet egne bedrifter for å selge tilpassede proxyer spesifikt for denne bruken. Vi som drev grupper hadde som regel en avtale med disse leverandørene og fikk tilgang til flere tusen IP-adresser. Dette gjorde det veldig enkelt å omgå forskjellige brannmurer som var satt opp på nettsidene.

Sårbarheter og beskyttelse

Etter hvert ble det flere og flere grupper, og det ble enda mer seriøst. Når det kom flere grupper, måtte man prøve å ha en fordel over de andre gruppene for å beholde eller få flere kunder.

Der kommer sårbarhetene inn. Alle sider hadde en form for sårbarhet som kunne hjelpe oss med å få informasjon om produkter raskere eller tidligere. Det kunne gå ut på at man kunne få tilgang til interne API-er til nettsidene ved å gjøre et domeneoppslag.

Så snart en liten endring ble gjort, kunne du være foran alle og gi den informasjonen til kundene dine før alle andre gruppene postet det.

Reklamemateriell for InSilence
Reklamemateriell for InSilence Vis mer

Flere og flere nettsteder begynte å bevege seg mot bot-beskyttelse eller brannmurer/WAF. Det var sent i 2018 at det ble mer vanlig på populære nettsteder. Det satte et helt nytt aspekt på hvordan man jobbet med forskjellige sider. Det startet veldig enkelt med at de validerte f.eks. HTTP-Headers til forespørslene du sendte til nettsiden deres, eller at de gjorde kanskje en liten JavaScript-utfordring som validerte at du var en nettleser og ikke bare et program.

Det satte en stopper for oss som ønsket å være raskest og få informasjon raskest – tid var penger. Hvis du postet fem sekunder etter en annen gruppe, var du plutselig ikke på toppen lenger. Det var et ekstremt konkurranseutsatt marked. Så som en utvikler av et slikt produkt, må du konstant være på og prøve å finne mer effektive løsninger for å få tak i informasjon raskere.

InSilence
InSilence Vis mer

Åpen API-nøkkel

En av tjenestene jeg var kjent for var det vi kalte for en "stock checker". Størrelser er utrolig viktig innenfor videresalg av sko spesielt. Du vil helst gå for de størrelsene det er færrest av, for det gir mer verdi.

Et av de største merkene hadde et køsystem. I dette køsystemet ble det gjort et oppslag på produktet mens man sto i køen. Hvis produktet ble utsolgt, ville man bli kastet ut av køen og få beskjed om at det var utsolgt.

Utviklerne for denne nettsiden hadde gjort en feil ved å legge igjen en API-nøkkel på nettsiden i et JavaScript-skript, noe som ikke skulle være tilgjengelig for oss. Dette ga oss tilgang til deres interne API, som tillot oss å hente mer detaljert informasjon om lanseringsdatoer og produkter.

Dette ga meg en idé om å lage en Discord-bot der man kunne skrive "!stock ARTIKKELNUMMER", og boten ville gi direkte informasjon om antall tilgjengelige størrelser for artikkelen globalt på nettsiden.

LunarAIO i Python og Golang

Etter hvert som jeg ble flinkere til å kode og ønsket å ta fatt på større utfordringer, gikk jeg fra å lage noe som ga informasjon til kundene mine til å automatisere denne informasjonen. Det var da jeg lagde sneakerboten LunarAIO i 2019.

AIO står for "all in one", og konseptet er at programmet skal kunne automatisere hele prosessen fra å gå til nettsiden, legge produktet i handlekurven og betale for det. Jeg har alltid vært fascinert av programvare som hovedsakelig kjører i terminalen, da det ser utrolig kult ut. De fleste automatiseringsverktøyene og sneakerbots har en grafisk brukergrensesnitt (GUI), men jeg valgte å lage mitt i terminalen (TUI). Dette var noe ingen andre hadde gjort i vårt marked.

Lunar var skrevet i Python og Golang og kunne kjøre på alle operativsystemer med en terminal. Fordelen med å ha en TUI i stedet for en GUI var at jeg kunne fokusere helt på selve prosessen i stedet for å bruke mange timer på å lage og fikse det grafiske.

Man fylte inn CSV-filer med ønsket informasjon, lage en "Task list", og legge inn produktets side, lenke, størrelse og betalingsprofil man ønsket å bruke. Man kunne kopiere og lage så mange oppgaver man ville, noe som betydde at én person kunne ha 3000 "kopier" av seg selv som prøvde å kjøpe produktet for dem. Dette åpnet en helt ny verden for meg og brukerne mine.

Det var tilfeller der flere av brukerne mine fikk tak i over 100 par ettertraktede produkter, alt fra sko til PlayStation 5 og klær.

LunarAIO
LunarAIO Vis mer
«Det var tilfeller der flere av brukerne mine fikk tak i over 100 par ettertraktede produkter, alt fra sko til PlayStation 5 og klær.»

Akamai Bot Manager

Det mest spennende med dette prosjektet var alle utfordringene det medførte. Det gikk ikke en dag uten at det var noe å gjøre. Pandemien ga oss ekstra tid til å jobbe, og det bidro nok til prosjektets suksess. Mange trengte å finne en sidejobb for å tjene litt ekstra penger ved å selge sko og andre ettertraktede varer.

Å jobbe med dette prosjektet gjorde at jeg raskt ble vant til å takle alle slags utfordringer, selv om de virket umulige. Et av de første store hinderne var Akamai Bot Manager. De fleste som har jobbet med IT eller servere har hørt om Akamai. De er et stort selskap og investerte mye i sin bot-manager. Alt fra Ticketmaster til banker bruker den i dag.

Vi fikk også smake litt på den.

Akamai Bot Manager fungerte ved å validere at du var en nettleser ved å gjøre mange små utfordringer på nettleseren din, som nettleseren din utfører automatisk. Hver gang du klikket et sted på en nettside med deres bot manager, sendte den en pakke til serveren deres og validerte den. Hvis den var OK, fikk du tilbake en cookie.

Denne cookien var som en nøkkel du hadde for å kunne bevege deg rundt på nettsiden. Hvis du ikke hadde denne cookien, ble du nektet adgang, og hvis du gjorde det mange ganger, ble IP-adressen din utestengt. Vi måtte finne ut hvordan vi kunne automatisere dette med verktøyene våre når vi navigerte på nettsidene deres.

LunarAIO
LunarAIO Vis mer

Dekryptere skriptet

Første steg for å løse dette var å dekryptere skriptet som utførte disse utfordringene. De som har jobbet med omvendt utvikling (reverse engineering) vet at dette kan være ganske slitsomt. Vi reverserte hele skriptet og kunne da bevege oss fritt ved å generere disse strengene, slik at vi kunne fungere på disse sidene.

Det som var spennende, var at dette skriptet brukte ekte data fra nettleseren din: skjermstørrelse, musebevegelser, antall klikk, hva du hadde klikket på, hva du hadde tastet inn, hvilket grafikkort du hadde, hvilken nettleser du brukte, og mye mer.

Det som gjorde dette så vanskelig, var at all dataen du produserte måtte stemme overens. Du kunne ikke bare legge til masse tilfeldig informasjon; Akamai brukte den faktiske dataen de mottok og validerte den, og kunne deretter sammenligne den med det du sendte inn.

Vår løsning ble å lage et "collector" skript. Det var et skript som vi kunne legge på populære sider som fikk mange klikk, som samlet all den dataen Akamai brukte for deres bot manager. Vi kunne da lage profiler som vi kunne simulere i deres skript og dermed få en cookie som vi kunne gi til brukerne våre.

Men det stoppet ikke der!

LunarAIO
LunarAIO Vis mer

TLS-fingerprinting

Akamai fikk selvfølgelig vite om at vi hadde knekt koden, så de la til enda strengere regler. Sent i 2021 lanserte de et nytt system som mange slet med. Plutselig fungerte nesten ingen bots på de populære sidene lenger, og ingen skjønte hvorfor det ikke virket mer. Det var en veldig tørr periode for oss utviklere, og det la mye press på oss.

Etter mye forskning og testing fant vi ut at de hadde begynt å snoke i TLS-delen av pakkene vi sendte. De hadde begynt å validere og sjekke om vi faktisk sendte informasjon fra Chrome, Safari, Opera eller Firefox. Det gjorde vi selvfølgelig ikke; vi sendte pakker fra Python osv.

De hadde begynt med noe som heter TLS-fingerprinting. Hver gang vi utførte en SSL-håndtrykk (handshake), analyserte de den dataen og samlet den. Ved å gjøre dette lenge nok, kan man raskt finne ut hvem som er hvem! Dette kalles en JA3-hash. Den lager en streng basert på verdiene du sender under en håndtrykk som viser hvem du er og deretter sammenligne den.

Alle botene våre sendte nesten den samme verdien, så de kunne enkelt stoppe oss fra å nå sidene deres.

LunarAIO
LunarAIO Vis mer

Løst med Go

Løsningen på dette ble utrolig avansert fordi de fleste programmeringsspråk ikke gir deg tilgang til å endre denne informasjonen, siden det egentlig ikke er nødvendig. Python, som jeg skrev Lunar i, hadde ikke evnen til å gå så dypt inn og endre TLS-informasjonen uten å lage noe veldig spesialtilpasset.

Etter mange dager fant vi ut at Golang var perfekt for dette, fordi det allerede hadde et bibliotek som lot deg simulere informasjonen til f.eks. Chrome. Men jeg kunne ikke bygge om Lunar i Golang, for det ville tatt altfor lang tid. Så jeg laget en backend for Lunar i Golang.

Når du startet Lunar, startet du også en Golang-klient som tok imot forespørsler gjennom sockets fra Lunar-programmet om å utføre forskjellige HTTP-forespørsler.

Golang-klienten ga oss muligheten til å representere oss som Chrome og lignende, noe som gjorde at vi ikke ble stoppet lenger.

«Dette virker kanskje absurd, men hvis du visste hvordan og hva du skulle bruke programmet til, kunne du tjene dobbelt så mye som verdien du kjøpte det for.»

Bot solgt for 70.000,-

Da du kjøpte Lunar, fikk du en serienøkkel som var bundet til din Discord-brukerkonto. Du kunne imidlertid overføre denne nøkkelen til andre brukere hvis du ønsket å selge eller låne ut Lunar. På samme måte som fysiske produkter hadde bots også en ettermarkedverdi.

Som bot-eiere måtte vi sørge for å ikke slippe inn for mange kunder, da dette ville føre til økt bruk av programmet og mulig patching av sårbarheter på nettsidene.

Vi prøvde å holde kontrollen ved å sette begrensninger på antall oppgaver man kunne lage per nettside. Målet var å skjule seg blant de vanlige menneskene på nettsidene for å unngå å bli oppdaget og operere lenger.

Begrensningene førte til at verdien til programmet økte, og det åpnet opp for et helt nytt marked som vi ikke visste om tidligere: Flere valgte å kjøpe bots og holde på dem for å selge dem når de gjorde det bra på forskjellige lanseringer.

Det høyeste jeg så Lunar bli solgt for var 70 000 kroner. Dette virker kanskje absurd, men hvis du visste hvordan og hva du skulle bruke programmet til, kunne du tjene dobbelt så mye som verdien du kjøpte det for.

LunarAIO
LunarAIO Vis mer

Lovlig med bots?

Jeg får ofte spørsmål om dette var/er lovlig, og det kan sies å være en gråsone.

Det finnes ingen universell lov som gjelder for bruk av bots, og lovligheten vil variere fra land til land. Imidlertid kan bruk av bots for å kjøpe eller selge billetter til konserter, sportsarrangementer eller andre arrangementer være ulovlig i visse jurisdiksjoner.

I USA ble for eksempel "BOTS Act" vedtatt i 2016 for å forby bruk av automatiserte verktøy som bots for å kjøpe billetter til arrangementer med en kapasitet på over 200 personer. På samme måte ble det i Storbritannia vedtatt en lignende lovgivning, kalt "Digital Economy Act 2017", for å hindre ulovlig oppkjøp og videresalg av billetter ved hjelp av automatiserte verktøy.

Fallende marked

I 2022 begynte vi å merke at markedet begynte å falle, og du måtte nå kjøpe kanskje 30-50 par per lansering for å få en ordentlig profitt. Flere nettsider begynte å bruke andre lansering metoder som raffle/lotteri, som gjorde det vanskelig for oss å utnytte mulighetene.

Jeg bestemte meg for å avslutte Lunar sent i 2022 og jobbe med en av mine konkurrenter, GaneshBot. GaneshBot er et av de ledende automatiserings verktøyene i Europa og har vært med siden starten. Min rolle i Ganesh var å opprettholde programvaren, og jeg ønsket å jobbe i et team for første gang. Jeg hadde jobbet selvstendig de siste fem årene.

Det var utrolig spennende og utfordrende og jobbe i Ganesh, Ganesh var et mye større produkt, de hadde rundt 6.000 brukere da jeg jobbet der så det satte et helt nytt perspektiv på hvordan man jobbet, Man hadde mye mer press på seg men selv en liten endring kunne gi et større resultat når du har så mange som bruker bruket ditt.

Jeg sluttet i Ganeshbot i starten av 2023. Akkurat nå så har jeg ingen prosjekter på gang, men jeg ser frem til å finne noe nytt og spennende å jobbe med.

Jeg ønsker å utforske andre områder og bruke min erfaring på en måte som kan ha en positiv innvirkning.