AWS Lambda@Edge
AWS Lambda@Edge kullanarak trafiği CDN düzeyinde engellemek, ProxyTracer'ı kullanmanın en güvenli ve uygun maliyetli yoludur. AWS edge katmanında kötü amaçlı istekleri engelleyerek kaynak sunucularınızı botnet trafiğinden tamamen korur ve işlem maliyetlerinden tasarruf edersiniz.
Uygulama
Bu fonksiyon CloudFront Viewer Request olayına bağlanır. İstemci IP'sini doğrudan olay nesnesinden okur, ProxyTracer'a hızlı ve asenkron bir istek gönderir ve proxy algılanırsa doğrudan kullanıcıya yapılandırılmış bir 403 Forbidden yanıtı döndürür.
export const handler = async (event) => {
const request = event.Records[0].cf.request;
// 1. İstemci IP'sini doğrudan CloudFront'tan güvenli bir şekilde çıkarın
const clientIp = request.clientIp;
// Yerel test ortamındaysa veya IP bulunamadıysa doğrudan geçirin
if (!clientIp) {
return request;
}
try {
// 2. ProxyTracer API'sini sorgulayın (Lambda Node 18+ yerel fetch destekler)
const ptResponse = await fetch(`https://api.proxytracer.com/v1/check/${clientIp}`, {
method: 'GET',
headers: {
'Authorization': `Bearer ${process.env.PROXYTRACER_API_KEY}`
},
// Kesin bir 500ms zaman aşımı uygulamak için AbortController kullanma
signal: AbortSignal.timeout(500)
});
if (ptResponse.ok) {
const data = await ptResponse.json();
// 3. Proxy tespit edilirse bağlantıyı derhal kesin
if (data.proxy === true) {
// Özel bir yanıt döndürmek CloudFront isteğini erken sonlandırır
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: API zaman aşımına uğrarsa çalışma süresini korumak için trafiğe izin verin
console.error('ProxyTracer API Error:', error);
}
// 4. Trafik temiz, kaynak sunucuya yönlendirmeye devam etmek için request nesnesini döndürün
return request;
};Dağıtım Notu: CloudFront, tüm Lambda@Edge fonksiyonlarının küresel olarak çoğaltılmadan önce us-east-1 bölgesinden başlatılmasını gerektirdiğinden, bu Lambda fonksiyonunun us-east-1 bölgesine dağıtıldığından emin olun.
Son güncelleme tarihi