Comment filtrer les demandes de l'application FLASK en fonction des agents utilisateur?

Jul 22, 2025Laisser un message

Salut! Si vous exécutez une application Flask, vous avez peut-être rencontré la nécessité de filtrer les demandes en fonction des agents utilisateur. Les agents utilisateur sont des chaînes qui identifient le navigateur, l'appareil ou l'application, ce qui fait la demande à votre serveur. Le filtrage basé sur les agents des utilisateurs peut être super utile pour diverses raisons, comme bloquer les robots malveillants, servir différents contenus à des navigateurs spécifiques ou simplement gérer le trafic.

En tant que fournisseur de flacon de filtrage, j'ai vu de première main à quel point il est important d'avoir un filtrage d'agent utilisateur efficace dans les applications Flask. Plongeons dans la façon dont vous pouvez y parvenir.

Pourquoi filtrer en fonction des agents utilisateur?

Tout d'abord, expliquons pourquoi vous souhaitez filtrer les demandes en fonction des agents utilisateur. Les bots malveillants sont un gros mal de tête pour les applications Web. Ils peuvent surcharger votre serveur, gratter vos données ou effectuer d'autres actions indésirables. En filtrant les agents des utilisateurs de robots connus, vous pouvez protéger votre application contre ces menaces.

Une autre raison est de servir différents contenus en fonction du navigateur ou de l'appareil. Par exemple, certains navigateurs plus anciens pourraient ne pas prendre en charge les technologies Web modernes. Vous pouvez détecter ces navigateurs via leurs agents utilisateur et leur servir une version simplifiée de votre application.

Comment obtenir l'agent utilisateur dans Flask

Avant de pouvoir filtrer les demandes, vous devez obtenir l'agent utilisateur à partir de la demande entrante. Dans Flask, c'est assez simple. Vous pouvez utiliser ledemandeObjet, qui est disponible dans chaque fonction d'itinéraire. Voici un exemple simple:

De FLASK IMPORT FLASK, demande App = FLASK (__ name__) @ app.Route ('/') def index (): user_agent = request.heders.get ('user-agent') return f'your user agent is: {user_agent} 'if __name__ ==' __main__ ': app.run (debug = true)

Dans ce code, nous obtenons leUtilisateur - agentEn-tête des en-têtes de demande. Ledemandeest un objet dictionnaire - comme l'objet qui contient tous les en-têtes envoyés avec la demande.

Utilisateur de base - filtrage des agents

Maintenant que nous pouvons obtenir l'agent utilisateur, commençons le filtrage. Un moyen simple consiste à vérifier si l'agent utilisateur contient certains mots clés. Par exemple, si vous souhaitez bloquer toutes les demandes d'un bot spécifique, vous pouvez faire quelque chose comme ceci:

De FLASK Import Flask, demande, aborte app = flask (__ name__) bloked_user_agents = ['badbot / 1.0'] @ app.Route ('/') def index (): user_agent = request.heders.get ('user-agent') Si user_agent et n'importe quel (bad_agent (ABORT) pour le bad_agent dans BLOCED_USER_AGENTS): ABORT (RETOUR Mon application Flask! Si __name__ == '__MAIN__': app.run (debug = true)

Dans ce code, nous avons une liste d'agents utilisateur bloqués. Nous vérifions si l'agent utilisateur entrant contient l'un des agents bloqués. Si c'est le cas, nous utilisons leavorterFonction Pour renvoyer un code d'état interdit 403.

En utilisant des expressions régulières pour un filtrage plus avancé

Parfois, vous avez besoin de plus de flexibilité dans votre filtrage. C'est là que les expressions régulières sont utiles. Les expressions régulières vous permettent de faire correspondre les modèles dans les chaînes. Par exemple, si vous souhaitez bloquer tous les robots qui commencent par "bot", vous pouvez utiliser une expression régulière.

Importer Re de Flask Importer Flask, Demande, Abort App = FLASK (__ Name__) Bot_Regex = Re.comPile (R '^ Bot. Si __name__ == '__MAIN__': app.run (debug = true)

Ici, nous utilisons leconcernantModule dans Python pour créer un modèle d'expression régulière. Le^le symbole signifie que le motif doit commencer par "bot" et le. *signifie qu'il peut être suivi par n'importe quel personnage.

Filtrage en fonction du navigateur ou de l'appareil

Vous pouvez également servir différents contenus en fonction du navigateur ou de l'appareil. Par exemple, s'il s'agit d'un appareil mobile, vous pouvez servir une version conviviale de votre application. Vous pouvez utiliser des bibliothèques commeIt - référencePour analyser l'agent utilisateur et obtenir des informations plus détaillées.

Tout d'abord, installez leIt - référencebibliothèque en utilisantpip install ua - analyseur. Ensuite, voici comment vous pouvez l'utiliser:

From Flask Import Flask, Demande de UA_Parser Import User_Agent_Parser App = FLASK (__ Name__) @ App.Route ('/') Def index (): user_agent = request.heders.get ('user-agent') if user_agent: parsed_ua = user_agent_parser.parse (user_agent) appareil PARSED_UA ['Disposip'] ['Family'] Si device_type dans ['iPhone', 'iPad']: Retour 'Bienvenue sur votre appareil Apple!' Sinon: Retournez «Bienvenue sur d'autres appareils! Retour 'Bienvenue!' Si __name__ == '__MAIN__': app.run (debug = true)

Dans ce code, nous utilisons leIt - référencebibliothèque pour analyser l'agent utilisateur. Nous vérifions ensuite la famille des appareils. S'il s'agit d'un iPhone ou d'un iPad, nous servons un message spécifique; Sinon, nous servons un message différent.

Clear glass Filtering FlaskLaboratory Filtering Flask

Quelques flacons de filtrage utiles pour votre laboratoire

Si vous êtes en laboratoire, nous proposons également de superbes flacons de filtrage. Découvrez notreFlacons de filtrage en verre transparent de laboratoire avec tubulature supérieureetVerre de laboratoire Forme conique Erlenmeyer Filtrage des flacons avec tubulation supérieure. Ces flacons sont conçus pour répondre à vos besoins de filtrage dans un environnement scientifique.

Contactez-nous pour vos besoins de filtrage

Que vous recherchiez des solutions de filtrage des applications Flask ou des flacons de filtrage de laboratoire de haute qualité, nous sommes là pour vous aider. Si vous êtes intéressé à acheter nos produits ou à discuter de vos exigences spécifiques, n'hésitez pas à tendre la main. Nous avons une équipe d'experts prêts à vous aider à trouver les meilleures solutions pour vos besoins.

Références

  • Documentation du flacon.
  • PythonconcernantDocumentation du module.
  • It - référenceDocumentation de la bibliothèque.