Skip to Content

Django (Python)

Integrare ProxyTracer in un'applicazione Django è semplice grazie a un middleware Django standard. Questo elabora ogni richiesta in ingresso prima che raggiunga le viste (views).

Il Middleware

Questo middleware determina in sicurezza l'IP reale del client, utilizza la libreria standard requests per interrogare ProxyTracer e restituisce un HttpResponseForbidden per interrompere immediatamente il ciclo di vita della richiesta.

import os import requests from django.http import HttpResponseForbidden class ProxyTracerMiddleware: def __init__(self, get_response): self.get_response = get_response self.api_key = os.environ.get("PROXYTRACER_API_KEY") def get_client_ip(self, request): # 1. Estrai in modo sicuro l'IP reale dietro i load balancer/NGINX x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR') if x_forwarded_for: ip = x_forwarded_for.split(',')[0].strip() else: ip = request.META.get('REMOTE_ADDR') return ip def __call__(self, request): ip = self.get_client_ip(request) # Salta gli IP di sviluppo locale if ip and ip not in ['127.0.0.1', '::1']: try: # 2. Interroga l'API ProxyTracer con un timeout rigoroso response = requests.get( f"https://api.proxytracer.com/v1/check/{ip}", headers={"Authorization": f"Bearer {self.api_key}"}, timeout=0.5 # Timeout rigoroso di 500ms per prevenire colli di bottiglia ) if response.status_code == 200: data = response.json() # 3. Interrompi la connessione se viene rilevato un proxy/VPN if data.get("proxy") is True: return HttpResponseForbidden( '{"error": "Access Denied: VPN or Proxy detected."}', content_type="application/json" ) except requests.RequestException as e: # Fail open: registra l'errore e lascia passare la richiesta print(f"ProxyTracer validation failed: {e}") # 4. Il traffico è pulito, procedi alla view response = self.get_response(request) return response

Configurazione:

Aggiungi il middleware all'array MIDDLEWARE nel tuo file settings.py:

# settings.py MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', # ... 'your_app.middleware.ProxyTracerMiddleware', # ... ]
Ultimo aggiornamento il