Skip to Content
Documentationحوسبة الحافةAWS Lambda@Edge

AWS Lambda@Edge

يعد اعتراض حركة المرور على مستوى CDN باستخدام AWS Lambda@Edge الطريقة الأكثر أماناً وفعالية من حيث التكلفة لاستخدام ProxyTracer. من خلال إسقاط الطلبات الخبيثة عند حافة AWS، فإنك تحمي خوادمك الأصلية تماماً من حركة مرور شبكات البوتات وتوفر تكاليف الحوسبة.

التطبيق البرمجي

ترتبط هذه الدالة بحدث Viewer Request في CloudFront. تقرأ IP العميل مباشرة من كائن الحدث، وتجري جلباً غير متزامن فائق السرعة إلى ProxyTracer، وترجع استجابة 403 Forbidden مباشرة للمستخدم إذا تم اكتشاف بروكسي.

export const handler = async (event) => { const request = event.Records[0].cf.request; // 1. استخراج عنوان IP للعميل بأمان مباشرة من CloudFront const clientIp = request.clientIp; // التمرير في حالة الاختبار المحلي أو عدم العثور على IP if (!clientIp) { return request; } try { // 2. الاستعلام من ProxyTracer API (يدعم Lambda Node 18+ دالة fetch الأصلية) const ptResponse = await fetch(`https://api.proxytracer.com/v1/check/${clientIp}`, { method: 'GET', headers: { 'Authorization': `Bearer ${process.env.PROXYTRACER_API_KEY}` }, // استخدام AbortController لفرض مهلة صارمة قدرها 500 مللي ثانية signal: AbortSignal.timeout(500) }); if (ptResponse.ok) { const data = await ptResponse.json(); // 3. قطع الاتصال فوراً إذا تم اكتشاف بروكسي if (data.proxy === true) { // إرجاع استجابة مخصصة يختصر طلب CloudFront 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، اسمح بحركة المرور لضمان استمرار الجاهزية console.error('ProxyTracer API Error:', error); } // 4. حركة المرور نظيفة، إرجاع كائن الطلب لمتابعة التوجيه إلى الأصل return request; };

ملاحظة النشر: تأكد من نشر دالة Lambda هذه في منطقة us-east-1، حيث تتطلب CloudFront تهيئة جميع دوال Lambda@Edge هناك قبل نسخها عالمياً.

آخر تحديث في