Laravel (PHP)
Integrar o ProxyTracer em uma aplicação Laravel é incrivelmente simples. Ao criar um HTTP Middleware padrão, você pode proteger toda a sua aplicação globalmente ou aplicá-lo seletivamente a rotas sensíveis (como /login ou /checkout).
O Middleware
O método nativo $request->ip() do Laravel lida automaticamente com a extração de IPs atrás de balanceadores de carga (desde que seu middleware TrustProxies esteja configurado corretamente). Utilizamos a facade nativa Http para consultar a API e descartar a requisição caso seja sinalizada.
<?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. Extraia o IP (o Laravel lida automaticamente com proxies reversos com segurança)
$ip = $request->ip();
// Ignorar IPs de desenvolvimento local
if (!in_array($ip, ['127.0.0.1', '::1'])) {
try {
// 2. Consulte a API do ProxyTracer com um timeout rigoroso de 500ms
$response = Http::withToken(env('PROXYTRACER_API_KEY'))
->timeout(0.5)
->get("https://api.proxytracer.com/v1/check/{$ip}");
if ($response->successful()) {
// 3. Encerre a conexão se um proxy for detectado
if ($response->json('proxy') === true) {
return response()->json([
'error' => 'Access Denied: VPN or Proxy detected.'
], 403);
}
}
} catch (\Exception $e) {
// Fail-open: Registre o erro e permita a requisição para garantir a disponibilidade
Log::warning("ProxyTracer validation failed: " . $e->getMessage());
}
}
// 4. O tráfego é legítimo, prossiga para o controller
return $next($request);
}
}Configuração:
Gere o middleware usando php artisan make:middleware ProxyTracerMiddleware.
Para aplicá-lo globalmente, adicione-o à sua pilha de middlewares.
-
Laravel 11: Adicione-o dentro do seu arquivo
bootstrap/app.phpem$middleware->append(). -
Laravel 10 e anteriores: Adicione-o ao array
$middlewaredentro do seu arquivoapp/Http/Kernel.php.
Última atualização