¿Cómo filtrar las solicitudes de la aplicación Flask en función de los agentes de los usuarios?

Jul 22, 2025Dejar un mensaje

¡Hola! Si está ejecutando una aplicación Flask, es posible que haya encontrado la necesidad de filtrar solicitudes según los agentes de los usuarios. Los agentes de los usuarios son cadenas que identifican el navegador, el dispositivo o la aplicación que realiza la solicitud a su servidor. El filtrado basado en agentes de usuarios puede ser muy útil por varias razones, como bloquear bots maliciosos, servir contenido diferente a navegadores específicos o simplemente administrar el tráfico.

Como proveedor de matraz de filtrado, he visto de primera mano lo importante que es tener un filtrado efectivo de usuarios de agentes en aplicaciones frascos. Vamos a sumergirnos en cómo puedes lograr esto.

¿Por qué filtrar según los agentes de los usuarios?

En primer lugar, hablemos de por qué desea filtrar solicitudes basadas en agentes de usuarios. Los bots maliciosos son un gran dolor de cabeza para aplicaciones web. Pueden sobrecargar su servidor, raspar sus datos o realizar otras acciones no deseadas. Al filtrar los agentes de usuarios de BOT conocidos, puede proteger su aplicación de estas amenazas.

Otra razón es servir contenido diferente basado en el navegador o dispositivo. Por ejemplo, algunos navegadores más antiguos podrían no admitir tecnologías web modernas. Puede detectar estos navegadores a través de sus agentes de usuario y servirles una versión simplificada de su aplicación.

Cómo poner al agente de usuario en Flask

Antes de que pueda filtrar las solicitudes, debe obtener el agente de usuario de la solicitud entrante. En Flask, es bastante sencillo. Puedes usar elpedidoobjeto, que está disponible en cada función de ruta. Aquí hay un ejemplo simple:

Desde Flask Import Flask, solicitud app = frask (__ name__) @app.route ('/') def index (): user_agent = request.headers.get ('user-agent') return f'your user agente es: {user_agent} 'if __name__ ==' __Main__ ': app.run (debug = verdadero)

En este código, estamos obteniendo elUsuario - Agenteencabezado de los encabezados de solicitud. ElSolicitarioses un diccionario, como el objeto que contiene todos los encabezados enviados con la solicitud.

Usuario básico: filtrado de agente

Ahora que podemos obtener el agente de usuario, comencemos a filtrar. Una forma simple es verificar si el agente de usuarios contiene ciertas palabras clave. Por ejemplo, si desea bloquear todas las solicitudes de un bot específico, puede hacer algo como esto:

Desde frasco importar frasco, solicitud, abort App = Flask (__ name__) blocked_user_agents = ['badbot/1.0'] @app.route ('/') def index (): user_agent = request.headers.get ('user-agent') si user_agent y cualquier (bad_agent en user_agent para bad_agent en blocked_user_agents) ¡Mi aplicación Flask! Si __name__ == '__main__': app.run (debug = true)

En este código, tenemos una lista de agentes de usuario bloqueados. Verificamos si el agente de usuario entrante contiene alguno de los agentes bloqueados. Si lo hace, usamos elabortarfunción para devolver un código de estado prohibido 403.

Uso de expresiones regulares para un filtrado más avanzado

A veces, necesita más flexibilidad en su filtrado. Ahí es donde las expresiones regulares son útiles. Las expresiones regulares le permiten hacer coincidir los patrones en cadenas. Por ejemplo, si desea bloquear todos los bots que comienzan con "Bot", puede usar una expresión regular.

Importar re de frask import frask, request, abort app = frask (__ name__) bot_regex = re.compile (r '^bot.*') @app.route ('/') def index (): user_agent = request.headers.get ('user-agent') si user_agent y bot_egex.match (user_agent): abort (403) returning ') Si __name__ == '__main__': app.run (debug = true)

Aquí estamos usando elreMódulo en Python para crear un patrón de expresión regular. El^El símbolo significa que el patrón debe comenzar con "bot" y el.*significa que puede ser seguido por cualquier personaje.

Filtrado basado en el navegador o el dispositivo

También es posible que desee servir contenido diferente en función del navegador o dispositivo. Por ejemplo, si se trata de un dispositivo móvil, puede servir una versión amigable móvil de su aplicación. Puedes usar bibliotecas comoIt - referirPara analizar el agente de usuario y obtener información más detallada.

Primero, instale elIt - referirbiblioteca usandoPIP Instale UA - analizador. Entonces, así es como puedes usarlo:

Desde Flask Import Flask, solicite UA_PARSER IMPORD USER_AGENT_PARSER APP = Flask (__ name__) @App.Route ('/') def index (): user_agent = request.headers.get ('user-agent') si user_agent: parsed_ua = user_agent_parser.parse (user_agent) dispositivo_type = = parsed_ua ['dispositivo'] ['Family'] if dispositivo_type en ['iPhone', 'iPad']: return 'bienvenido en su dispositivo Apple!' Else: Regrese '¡Bienvenido en otros dispositivos!' Regrese '¡Bienvenido!' Si __name__ == '__main__': app.run (debug = true)

En este código, estamos usando elIt - referirBiblioteca para analizar el agente de usuario. Luego revisamos la familia del dispositivo. Si es un iPhone o iPad, servimos un mensaje específico; De lo contrario, servimos un mensaje diferente.

Clear glass Filtering FlaskLaboratory Filtering Flask

Algunos matraces de filtrado útiles para su laboratorio

Si está en un entorno de laboratorio, también ofrecemos excelentes matraces de filtrado. Mira nuestroLaboratorio de matraces de filtrado de vidrio transparente con tubulatura superioryForma cónica de vidrio de laboratorio Erlenmeyer Filtrando matraces con tubulación superior. Estos frascos están diseñados para satisfacer sus necesidades de filtrado en un entorno científico.

Contáctenos para sus necesidades de filtrado

Ya sea que esté buscando usuarios de aplicaciones de frasco (soluciones de filtrado de agentes o matraces de filtrado de laboratorio de alta calidad, estamos aquí para ayudarlo. Si está interesado en comprar nuestros productos o discutir sus requisitos específicos, no dude en comunicarse. Tenemos un equipo de expertos listos para ayudarlo a encontrar las mejores soluciones para sus necesidades.

Referencias

  • Documentación del frasco.
  • PitónreDocumentación del módulo.
  • It - referirDocumentación de la biblioteca.