Een Twitter-bot bouwen voor groei
Steve Jonk, een frontend developer, nam ons mee in zijn project waarin hij een Twitter follow-bot en scraper bouwde voor een klant die simpelweg “meer volgers wilde”. Wat begon als een relatief simpele opdracht, bleek uiteindelijk een traject vol technische obstakels en slimme oplossingen.
Doelen van de bot
Het project had twee doelen: allereerst het opslaan van alle volgers van een specifiek Twitteraccount, en daarna het automatisch volgen van die accounts. De aanpak? Eerst de volgers ophalen en opslaan in een database, vervolgens willekeurig accounts uit die database volgen.
Gebruikte tools
- n8n – voor workflow automation
- Puppeteer – om browserinteracties te automatiseren
- Twitter API – beperkte toegang tot Twitter-data
- PostgreSQL – voor het opslaan van data
- Docker – om alles te containeriseren
- Ubuntu – als serveromgeving
Obstakels & oplossingen
Het project draaide vooral om creatief omgaan met beperkingen. Twitter laat namelijk niet zomaar toe dat je automatisch mensen volgt of ontvolgt.
1. Anti-botmaatregelen van Twitter
Twitter probeert bots te detecteren en blokkeren. De oplossing was om alles zo menselijk mogelijk te laten lijken. Steve randomiseerde acties op zowel micro- als macroniveau, introduceerde wachttijden en pauzes, en zorgde ervoor dat de bot reageerde op errors door tijdelijk te stoppen.
2. De API is extreem gelimiteerd (tenzij je veel betaalt)
De gratis Twitter API gaf amper toegang: geen volgers ophalen, maximaal één actie per tien minuten, en toegang tot slechts 10% van de endpoints. Steve besloot daarom de frontend zelf te gebruiken als bron, met behulp van scraping.
3. Scrapen via de webinterface met Puppeteer
De enige manier om een volledige volgerslijst te zien, is via de webinterface van Twitter. Steve gebruikte Puppeteer om dit proces te automatiseren. Omdat n8n Node-gebaseerd is, kon hij een custom Docker image maken met Puppeteer erin. Zo kon hij de scraper zelf hosten.
4. Frontend laat niet alle volgers zien
Ook via de frontend zag je niet meteen alle volgers. Steve loste dit op door het netwerkverkeer te onderscheppen en de paginatie-cursors te gebruiken om steeds de volgende batch volgers op te halen.
5. Inloggen & displayproblemen
Omdat de bot moest inloggen, bouwde hij een login-automatisatie en sloeg hij inloggegevens veilig op
als secrets. Daarnaast had de Ubuntu-server geen grafische interface, dus gebruikte hij
Xvfb
om een virtuele display te creëren waarop de browser kon draaien.
Het eindresultaat
Uiteindelijk werkte het hele systeem: volgers werden automatisch gescrapet, opgeslagen en willekeurig gevolgd. Alles draaide zelfstandig op een server in een Dockercontainer met n8n als orkestratie. Een project vol technische uitdagingen, waarin creatieve oplossingen centraal stonden.