Bot UA filter
Middleware edge blocca user-agent noti di scraper prima ancora di entrare nella route.
middleware.ts intercetta ogni richiesta a /api/chat e controlla lo header user-agent contro una blocklist regex: curl, wget, python-requests, scrapy, axios, go-http-client, okhttp, selenium, puppeteer, playwright, headlesschrome, phantomjs, e altri.
UA che matcha o stringa vuota → risposta 403 immediata, nessuna invocazione della route e quindi zero costo computazionale. È il filtro più economico perché vive a livello edge.
Il localhost è esente (dev flessibile). In produzione il filtro è sempre attivo. Nota: un bot determinato può falsificare lo UA — questo è il primo layer, non l'ultimo. Si combina con rate limit e Turnstile per alzare il costo di attacco.