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.
آخر تحديث في