Skip to Content
DocumentationEdge ComputeAWS Lambda@Edge

AWS Lambda@Edge

Het onderscheppen van verkeer op CDN-niveau met behulp van AWS Lambda@Edge is de meest veilige en kostenefficiënte manier om ProxyTracer te gebruiken. Door kwaadaardige verzoeken aan de AWS-edge te weren, scherm je je origin-servers volledig af van botnetverkeer en bespaar je op rekenkosten.

De Implementatie

Deze functie haakt in op het CloudFront Viewer Request-event. Het leest het client-IP rechtstreeks uit het event-object, voert een snelle asynchrone fetch uit naar ProxyTracer en retourneert direct een samengestelde 403 Forbidden-respons naar de gebruiker als er een proxy wordt gedetecteerd.

export const handler = async (event) => { const request = event.Records[0].cf.request; // 1. Extraheer het client-IP-adres veilig rechtstreeks uit CloudFront const clientIp = request.clientIp; // Doorlaten bij lokaal testen of als er geen IP-adres is gevonden if (!clientIp) { return request; } try { // 2. Raadpleeg de ProxyTracer API (Lambda Node 18+ ondersteunt native fetch) const ptResponse = await fetch(`https://api.proxytracer.com/v1/check/${clientIp}`, { method: 'GET', headers: { 'Authorization': `Bearer ${process.env.PROXYTRACER_API_KEY}` }, // Gebruik van een AbortController om een strikte timeout van 500ms af te dwingen signal: AbortSignal.timeout(500) }); if (ptResponse.ok) { const data = await ptResponse.json(); // 3. Verbreek de verbinding onmiddellijk als er een proxy wordt gedetecteerd if (data.proxy === true) { // Het retourneren van een aangepaste response sluit het CloudFront-verzoek direct kort return { status: '403', statusDescription: 'Forbidden', headers: { 'content-type': [{ key: 'Content-Type', value: 'application/json' }] }, body: JSON.stringify({ error: "Access Denied: VPN or Proxy detected." }) }; } } } catch (error) { // Fail open: Als de API een timeout geeft, laat verkeer door om uptime te garanderen console.error('ProxyTracer API Error:', error); } // 4. Verkeer is schoon, retourneer het request-object om routing naar de origin voort te zetten return request; };

Deployment-opmerking: Zorg ervoor dat deze Lambda-functie wordt geïmplementeerd in de regio us-east-1, aangezien CloudFront vereist dat alle Lambda@Edge-functies van daaruit worden geïnitieerd voordat ze wereldwijd worden gerepliceerd.

Laatst bijgewerkt op