De ontwikkeling van de bot blacklist

Vorige week schreven we een blog over de nieuwste tool op het Hypernode platform: de bot blacklist. Het afgelopen half jaar hebben onze stagiaires Thomas en Sonny (beide derdejaars informatica studenten) hard gewerkt aan de ontwikkeling hiervan. In deze blog geven ze je een kijkje in de spreekwoordelijke development keuken van Byte.

Het idee voor de bot blacklist

Tijdens onze eerste dag kregen we gelijk te horen waar we aan zouden gaan werken: een tool die het makkelijk moet maken om bots te blokkeren. Dit was een wens vanuit verschillende klanten. Voorheen moest de klant zelf via de shell blacklist regels invoeren die de bots blokkeren. Dit kost zowel Byte als de klant veel extra tijd en daarom moest er iets komen waar de klant het zelf gemakkelijk via het Service Panel kon regelen. Het was dus de bedoeling dat aan het einde van onze stage klanten gemakkelijk op het Service Panel bots op hun Hypernode konden blokkeren.

Minder (ongewenste) bots voor betere performance

Bots zijn geautomatiseerde applicaties die verschillende functies kunnen hebben, maar vaak informatie ophalen. Klanten die hun website hosten bij Byte kunnen hinder ondervinden van deze bots doordat deze een vertragende werking hebben op je webshop. Overmatig botverkeer is de meest voorkomende reden voor een slecht presterende Magento shop. Dit heeft te maken met dat bots vast komen te zitten in de gelaagde navigatie structuur van Magento.

Fase 1: functionaliteiten van de bot blacklist

Aan het begin van onze stage zijn we gaan brainstormen over welke functionaliteit er in de tool moest komen. Uiteraard hadden wij zelf onze eigen ideeën hierover, maar zijn we ook in overleg gegaan met verschillende collega’s van verschillende afdelingen. Een mooi voorbeeld was het besluiten over het blokkeren op basis van IP-adressen of user agents. Uiteindelijk is er besloten om met user agents verder te gaan omdat hiermee een effectieve eerste versie gepresenteerd kon worden. Ook is dit besluit genomen omdat een bot meerdere IP-adressen kan hebben. Op basis van alle informatie die wij verzameld hadden, begonnen wij met het schrijven van een Software Development plan. Hierin staan ook mockups over onze eerste ideeën. In de eerste fase is vooral de focus gelegd op het ontwerp en de functionaliteit van de tool.

Fase 2: bots blokkeren

Voor het eerste deel van de opdracht moesten we de mogelijkheid maken om meerdere bots aan de hand van een standaardlijst te kunnen blokkeren en daarna het individueel blokkeren van bots. Hiervoor hadden we kennis nodig van de bestaande code. En omdat dit nogal wat code was, kun je je voorstellen dat dit wel even heeft geduurd. Ook met het testen van de code hadden wij beide niet veel ervaring, maar we werden goed begeleid hierbij.

Uiteindelijk was de eerste opdracht gelukt. De opdracht om bots individueel te kunnen blokkeren was een aardig karwei. Nadat we de mogelijkheid hadden gemaakt om gegevens op te halen via een API, moesten hierin veranderingen worden aangebracht. Vooral het inrichten van de database vergde veel tijd, wat moesten we opslaan? En hoe gingen wij het opslaan?

Fase 3: bots toevoegen aan de blacklist

Nadat we bovenstaande functionaliteiten hadden gemaakt (en getest), zijn we verder gaan werken aan het zelf kunnen toevoegen van een bot. We waren namelijk van mening dat het erg handig zou zijn als je zelf ook bots toe kon voegen. Bij deze opdracht kwam er een nieuwe uitdaging om de hoek kijken. Welke karakters laat je tenslotte toe voor het invullen van een user agent van de bot? Sommige karakters (bijvoorbeeld +, # en @) zorgen er namelijk voor dat de webserver crasht, en dat willen we natuurlijk niet hebben!

Fase 4: op naar staging én live

Na de vele brainstormsessies over het design is de knoop doorgehakt en is er een eerste versie uitgebracht. Voordat het daadwerkelijke “live” ging is de pagina eerst nog een week in een testfase geweest (staging), waarin de pagina nog één keer goed bekeken wordt om zo de de puntjes op de i te zetten. Tijdens de testfase kregen wij van collega’s nog feedback, bijvoorbeeld over de inleidende tekst en de verwijder knop (wat nu een prullenbakje is). Met het verwerken van de feedback en de vele tests die ons groen licht gaven, kon de eerste versie live gezet worden!

Samen programmeren kun je leren

Wij hebben besloten om gezamenlijk aan de opdracht te werken. Zo konden we beide kennis opdoen van de verschillende systemen. In het begin was dat nog wel even wennen, vooral omdat je je eigen manieren hebt wat betreft het programmeren. Gelukkig heeft Byte een flipperkast (waarop we soms onze frustaties konden botvieren) waardoor we er altijd goed uitgekomen zijn :-).

Tijdens de stage hebben we nog veel meer kunnen leren. Zo hebben we met weinig ervaring toch maar een tool kunnen maken die nu daadwerkelijk in gebruik is genomen. We hebben veel vrijheid gekregen om aan de opdrachten te werken. Wekelijks kwamen we met een aantal Byters bij elkaar om de voortgang te bespreken en o.a. te brainstormen over het design. Daarnaast konden we bij onze stagebegeleiders (Tim en Bono) en eigenlijk alle andere Byters terecht voor vragen.  Al met al zijn we erg tevreden geweest over de stage, als Byte nog stagiaires nodig heeft, zeker een aanrader dus!

 op

Merel is contentmarketeer en communicatiespecialist. In haar dagelijkse werkzaamheden stort ze zich vol enthousiasme op het schrijven van interessante content, het organiseren van evenementen en de communicatie van Byte. Buiten het werk staat Merel het liefst in de kroeg, op het voetbalveld of hangend op de bank voor een goede film of serie.