Skip to Content

Laravel (PHP)

يعد دمج ProxyTracer في تطبيق Laravel بسيطاً للغاية. من خلال إنشاء برمجية وسيطة HTTP قياسية، يمكنك حماية تطبيقك بأكمله عالمياً أو تطبيقه اختيارياً على المسارات الحساسة (مثل /login أو /checkout).

البرمجية الوسيطة

تتعامل طريقة $request->ip() الأصلية في Laravel تلقائياً مع استخراج عناوين موازنات الحمل (بافتراض تكوين برمجية TrustProxies الوسيطة بشكل صحيح). نستخدم واجهة Http الأصلية للاستعلام من API وإسقاط الطلب إذا تم تمييزه.

<?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Log; use Symfony\Component\HttpFoundation\Response; class ProxyTracerMiddleware { /** * Handle an incoming request. */ public function handle(Request $request, Closure $next): Response { // 1. استخراج عنوان IP (يتعامل Laravel بأمان مع البروكسيات العكسية تلقائياً) $ip = $request->ip(); // تخطي عناوين IP للتطوير المحلي if (!in_array($ip, ['127.0.0.1', '::1'])) { try { // 2. الاستعلام من ProxyTracer API بمهلة صارمة قدرها 500 مللي ثانية $response = Http::withToken(env('PROXYTRACER_API_KEY')) ->timeout(0.5) ->get("https://api.proxytracer.com/v1/check/{$ip}"); if ($response->successful()) { // 3. قطع الاتصال إذا تم اكتشاف بروكسي if ($response->json('proxy') === true) { return response()->json([ 'error' => 'Access Denied: VPN or Proxy detected.' ], 403); } } } catch (\Exception $e) { // Fail open: تسجيل الخطأ والسماح بالطلب لضمان استمرار الجاهزية Log::warning("ProxyTracer validation failed: " . $e->getMessage()); } } // 4. حركة المرور نظيفة، المتابعة إلى المتحكم return $next($request); } }

التكوين:

أنشئ البرمجية الوسيطة باستخدام php artisan make:middleware ProxyTracerMiddleware.

لتطبيقها عالمياً، أضفها إلى مكدس البرمجيات الوسيطة لديك.

  • Laravel 11: أضفها داخل ملف bootstrap/app.php تحت $middleware->append().
  • Laravel 10 وما دون: أضفها إلى مصفوفة $middleware داخل ملف app/Http/Kernel.php.
آخر تحديث في