In dit artikel hebben we geprobeerd antwoord te geven op alle belangrijke vragen. De eerste stap bij het oplossen van het vraagstuk is vaststellen welk beveiligingssysteem wordt gebruikt. Daarvoor kun je de lijst met populaire captcha’s en anti-botbeveiligingssystemen raadplegen, met visuele voorbeelden en kernkenmerken die je helpen snel te bepalen waarmee je te maken hebt.
Als je ontdekt dat je website Amazon AWS WAF gebruikt, is de volgende stap om de eigenschappen en werking ervan uitgebreider te bestuderen. In dit artikel vind je ook een handleiding voor het integreren van Amazon AWS WAF, zodat je volledig begrijpt hoe het systeem op je website werkt. Zo kun je niet alleen de huidige bescherming beter doorgronden, maar ook het onderhoud ervan goed plannen.
AWS WAF (Amazon Web Services Web Application Firewall) is een cloud-webfirewall van Amazon die websites, API's en webapplicaties beschermt tegen aanvallen en schadelijk verkeer. Simpel gezegd is het een filter dat voor uw site of API staat en beslist welk bezoekersverkeer wordt doorgelaten en welk verkeer wordt geblokkeerd.
Als Challenge/CAPTCHA is ingeschakeld op de site, kan de bezoeker een aparte verificatiepagina zien. Er wordt gevraagd om een taak uit te voeren, bijvoorbeeld het selecteren van alle afbeeldingen uit één categorie, om te bevestigen dat het geen bot is.
Bij het testen van bronnen die door AWS WAF worden beschermd, is het belangrijk om ervoor te zorgen dat de bescherming correct werkt en goed is geïntegreerd.
U kunt de werking van de bescherming handmatig controleren:
Na een succesvolle controle stelt AWS WAF cookies in die bevestigen dat de gebruiker of client de controle heeft doorstaan en dat vertrouwd verkeer is toegestaan.
Voor automatische captcha-herkenning kunt u gespecialiseerde diensten gebruiken, bijvoorbeeld CapMonster Cloud — een tool die captcha-parameters accepteert, deze op zijn servers verwerkt en kant-en-klare cookies of een token retourneert. Deze kunnen in de browser worden geplaatst om de controle zonder tussenkomst van de gebruiker te doorstaan.
Werken met CapMonster Cloud via de API bestaat doorgaans uit de volgende stappen:
In het verzoek om AWS WAF op te lossen, moeten de volgende parameters worden opgegeven:
type - AmazonTask;
websiteURL - adres van de hoofdpagina waar de captcha wordt opgelost;
challengeScript - link naar challenge.js;
De volgende parameters worden uit window.gokuProps gehaald (allemaal van het type string):
captchaScript - link naar captcha.js (kan ontbreken als u alleen een Challenge heeft);
cookieSolution - standaard false — als antwoord ontvangt u "captcha_voucher" en "existing_token". Als u "aws-waf-token" cookies nodig heeft, geef dan true op.;
userAgent - User-Agent van de browser. Geef alleen een actuele UA van Windows OS door;
Ook is voor deze taak het gebruik van uw proxy's vereist:
proxyType :
proxyAddress - IP-adres van de proxy IPv4/IPv6;
proxyPort - proxy-poort;
proxyLogin - gebruikersnaam proxy-server;
proxyPassword - wachtwoord proxy-server.
https://api.capmonster.cloud/createTask{
"clientKey": "API_KEY",
"task": {
"type": "AmazonTask",
"websiteURL": "https://example.com/index.html",
"websiteKey": "h15hX7brbaRTR...Za1_1",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36",
"captchaScript": "https://234324vgvc23.yejk.captcha-sdk.awswaf.com/234324vgvc23/jsapi.js",
"cookieSolution": true,
"proxyType": "http",
"proxyAddress": "8.8.8.8",
"proxyPort": 8080,
"proxyLogin": "proxyLoginHere",
"proxyPassword": "proxyPasswordHere"
}
}{
"errorId":0,
"taskId":407533072
}https://api.capmonster.cloud/getTaskResult{
"clientKey":"API_KEY",
"taskId": 407533072
}{
"errorId":0,
"status":"ready",
"solution": {
"cookies": {
"aws-waf-token": "10115f5b-ebd8-45c7-851e-cfd4f6a82e3e:EAoAua1QezAhAAAA:dp7sp2rXIRcnJcmpWOC1vIu+yq/A3EbR6b6K7c67P49usNF1f1bt/Af5pNcZ7TKZlW+jIZ7QfNs8zjjqiu8C9XQq50Pmv2DxUlyFtfPZkGwk0d27Ocznk18/IOOa49Rydx+/XkGA7xoGLNaUelzNX34PlyXjoOtL0rzYBxMAQy0D1tn+Q5u97kJBjs5Mytqu9tXPIPCTSn4dfXv5llSkv9pxBEnnhwz6HEdmdJMdfur+YRW1MgCX7i3L2Y0/CNL8kd8CEhTMzwyoXekrzBM="
},
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36"
}
}De gegevens die van CapMonster Cloud zijn ontvangen (geldige AWS WAF-cookies) kunnen in de browsercontext of HTTP-client worden geplaatst. Hierna beschouwt de site het verzoek als geverifieerd en kunt u doorgaan met werken zonder extra controles of challenge-pagina's.
Voor automatisering en testen is het handig om Puppeteer, Selenium of Playwright te gebruiken — hiermee kunt u:
Zo kan de correcte werking van de bescherming worden gecontroleerd en kunt u er zeker van zijn dat de site geldige AWS WAF-cookies correct accepteert en verwerkt.
Belangrijk: deze codevoorbeelden gebruiken cookieSolution=False. Als u als resultaat cookies moet ontvangen, stel dan cookieSolution=True in.
// npm install playwright @zennolab_com/capmonstercloud-client
// npx playwright install chromium
import { chromium } from "playwright";
import { CapMonsterCloudClientFactory, ClientOptions, AmazonRequest } from "@zennolab_com/capmonstercloud-client";
const API_KEY = "YOUR_API_KEY";
const CAPTCHA_URL = "https://example.com";
// Proxy-instellingen
const PROXY = {
proxyType: "http",
proxyAddress: "PROXY_HOST",
proxyPort: 1234,
proxyLogin: "PROXY_USER",
proxyPassword: "PROXY_PASS"
};
(async () => {
// 1) We openen de pagina via proxy en verzamelen AWS WAF-parameters
const browser = await chromium.launch({
headless: false,
proxy: {
server: `http://${PROXY.proxyAddress}:${PROXY.proxyPort}`,
username: PROXY.proxyLogin,
password: PROXY.proxyPassword
}
});
const page = await browser.newPage();
await page.goto(CAPTCHA_URL, { waitUntil: "networkidle" });
// wachten op het laden van challenge- en captcha-scripts
await page.waitForFunction(() => {
const scripts = Array.from(document.querySelectorAll("script")).map(s => s.src || "");
return scripts.some(src => src.includes("challenge")) && scripts.some(src => src.includes("captcha"));
});
// AWS WAF-parameters extraheren (sleutel, context, iv, links naar scripts)
const params = await page.evaluate(() => {
const gokuProps = window.gokuProps || {};
const scripts = Array.from(document.querySelectorAll("script")).map(s => s.src || "");
return {
websiteKey: gokuProps.key || null,
context: gokuProps.context || null,
iv: gokuProps.iv || null,
challengeScript: scripts.find(src => src.includes("challenge")),
captchaScript: scripts.find(src => src.includes("captcha"))
};
});
await browser.close();
// 2) We lossen AWS WAF op via CapMonster Cloud
const client = CapMonsterCloudClientFactory.Create(new ClientOptions({ clientKey: API_KEY }));
const req = new AmazonRequest({
websiteURL: CAPTCHA_URL,
websiteKey: params.websiteKey,
challengeScript: params.challengeScript,
captchaScript: params.captchaScript,
context: params.context,
iv: params.iv,
cookieSolution: true,
proxy: PROXY
});
const solved = await client.Solve(req);
const wafToken = solved.solution.cookies["aws-waf-token"];
// 3) We plaatsen aws-waf-token en schonen oude op
const browser2 = await chromium.launch({
headless: false,
proxy: {
server: `http://${PROXY.proxyAddress}:${PROXY.proxyPort}`,
username: PROXY.proxyLogin,
password: PROXY.proxyPassword
}
});
const context2 = await browser2.newContext();
// opschonen van oude aws-waf-token voor uw domein
const existingCookies = await context2.cookies();
const filteredCookies = existingCookies.filter(c => !(c.name === "aws-waf-token" && c.domain.endsWith(".your-domain")));
await context2.clearCookies();
await context2.addCookies(filteredCookies);
// instellen van de nieuwe aws-waf-token
await context2.addCookies([{
name: "aws-waf-token",
value: wafToken,
domain: ".your-domain",
path: "/",
httpOnly: false,
secure: true
}]);
const page2 = await context2.newPage();
const response = await page2.goto(CAPTCHA_URL, { waitUntil: "networkidle" });
console.log("Final page status:", response.status());
console.log("Final page URL:", page2.url());
await browser2.close();
})();
AWS WAF kan niet rechtstreeks op een site worden geïnstalleerd. Het werkt alleen via AWS-bronnen:
Stap 1. Maak een AWS-account aan (als u er geen heeft)
Ga naar: https://portal.aws.amazon.com/billing/signup. Maak een account aan > bevestig e-mail en telefoon.
Stap 2. U kunt de standaard of nieuwe AWS WAF-interface gebruiken:
Stap 3. Maak een protection pack (web ACL) aan
Dit is de set beschermingsregels voor uw bron.
Stap 4. Configureer de applicatiecategorie:
In het blok Tell us about your app:
Deze parameters zijn nodig zodat AWS optimale regels kan voorstellen.
Stap 5. Selecteer de bronnen die beschermd moeten worden
Als uw site op CloudFront staat > kies CloudFront distributions
Als uw backend op ALB staat > kies Regional resourcesAls API > kies API Gateway REST APIVink de gewenste bron aan > klik op Add.
Stap 6. Selecteer een start-regelset.
AWS zal voorstellen:
Recommended for you — de beste optie voor beginners
Het bevat:Klik op Next.
Stap 7. Configuratie (optioneel)
Op het scherm Customize protection pack (web ACL):
Hoofdparameters:
Logging
Kies waar logs worden weggeschreven:
(S3 + Athena wordt aanbevolen).
Stap 8. Web ACL aanmaken
Klik op: Add protection pack (web ACL)
AWS maakt de regels aan en koppelt ze aan uw bron.
Verificatie
Om er zeker van te zijn dat de bescherming werkt:
In elke regel > Action > CAPTCHA / Challenge
Dit vermindert botverkeer en beschermt login- en formulierpagina's.
In de sectie Rule groups kunt u toevoegen:
Als je een website in beheer krijgt waarop al een captcha of een ander beveiligingssysteem is geïnstalleerd en je geen toegang hebt tot de code, is dat geen probleem! Het is vrij eenvoudig te bepalen welke technologie precies wordt gebruikt. Voor het controleren of alles correct werkt, kun je de herkenningsservice CapMonster Cloud in een geïsoleerde testomgeving gebruiken, zodat je zeker weet dat het tokenverwerkingsmechanisme en de validatielogica correct functioneren.
In het geval van Amazon AWS WAF is het voldoende om het systeem te herkennen, het gedrag te analyseren en te bevestigen dat de beveiliging correct werkt. In het artikel hebben we laten zien hoe je Amazon AWS WAF kunt herkennen en waar je instructies vindt om het te koppelen of opnieuw te configureren, zodat je de bescherming met vertrouwen kunt onderhouden en de werking onder controle kunt houden.