Skip to Content

Laravel (PHP)

ProxyTracer'ı bir Laravel uygulamasına entegre etmek son derece basittir. Standart bir HTTP Middleware oluşturarak uygulamanızın tamamını global olarak koruyabilir veya hassas rotalara (/login veya /checkout gibi) seçici olarak uygulayabilirsiniz.

Middleware

Laravel'in yerel $request->ip() metodu, yük dengeleyici IP çıkarımını otomatik olarak yönetir (TrustProxies middleware'inizin doğru yapılandırıldığı varsayılarak). API'yi sorgulamak ve işaretlenmişse isteği düşürmek için yerel Http facade'ını kullanırız.

<?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'yi çıkarın (Laravel ters proxy'leri otomatik ve güvenli bir şekilde işler) $ip = $request->ip(); // Yerel geliştirme IP'lerini atlayın if (!in_array($ip, ['127.0.0.1', '::1'])) { try { // 2. Kesin bir 500ms zaman aşımı ile ProxyTracer API'sini sorgulayın $response = Http::withToken(env('PROXYTRACER_API_KEY')) ->timeout(0.5) ->get("https://api.proxytracer.com/v1/check/{$ip}"); if ($response->successful()) { // 3. Proxy tespit edilirse bağlantıyı kesin if ($response->json('proxy') === true) { return response()->json([ 'error' => 'Access Denied: VPN or Proxy detected.' ], 403); } } } catch (\Exception $e) { // Fail open: Hatayı günlüğe kaydedin ve çalışma süresini korumak için isteğe izin verin Log::warning("ProxyTracer validation failed: " . $e->getMessage()); } } // 4. Trafik temiz, controller'a devam edin return $next($request); } }

Yapılandırma:

php artisan make:middleware ProxyTracerMiddleware komutunu kullanarak middleware'i oluşturun.

Bunu global olarak uygulamak için middleware yığınınıza ekleyin.

  • Laravel 11: bootstrap/app.php dosyanızda $middleware->append() altına ekleyin.
  • Laravel 10 ve altı: app/Http/Kernel.php dosyanızın içindeki $middleware dizisine ekleyin.
Son güncelleme tarihi