Как да филтрирате заявките на приложението на Flask на базата на потребителски агенти?

Jul 22, 2025Остави съобщение

Ей там! Ако използвате приложение за колба, може да се натъкнете на необходимостта от филтриране на заявки въз основа на потребителски агенти. Потребителските агенти са низове, които идентифицират браузъра, устройството или приложението, отправяйки заявката до вашия сървър. Филтрирането на базата на потребителски агенти може да бъде супер полезно по различни причини, като блокиране на злонамерени ботове, обслужване на различно съдържание на конкретни браузъри или просто управление на трафика.

Като доставчик на филтриране на колбата видях от първа ръка колко е важно да имате ефективно филтриране на потребителите - агенти в приложения за колба. Нека се потопим как можете да постигнете това.

Защо да филтрирате въз основа на потребителски агенти?

Първо, нека поговорим защо бихте искали да филтрирате заявки въз основа на потребителски агенти. Злоуличните ботове са голямо главоболие за уеб приложения. Те могат да претоварят вашия сървър, да изстържат вашите данни или да извършват други нежелани действия. Чрез филтриране на известни потребителски агенти на BOT можете да защитите приложението си от тези заплахи.

Друга причина е да се обслужва различно съдържание въз основа на браузъра или устройството. Например, някои по -стари браузъри може да не поддържат съвременни уеб технологии. Можете да откриете тези браузъри чрез техните потребители и да им обслужвате опростена версия на вашето приложение.

Как да получите потребителския агент в колбата

Преди да можете да филтрирате заявките, трябва да получите потребителския агент от входящата заявка. В FLASK е доста просто. Можете да използватезаявкаобект, който е наличен във всяка функция на маршрута. Ето един прост пример:

От колбата за импортиране на колбата, заявка за приложение = колба (__ name__) @app.route ('/') def index (): user_agent = request.headers.get ('user-agent') return f'your потребителски агент е: {user_agent} ', ако __name__ ==' __main__ ': app.run (debug = true)

В този код получавамеПотребител - агентзаглавие от заглавките на заявката. Theзаявка.Headersе речник - като обект, който съдържа всички заглавки, изпратени с заявката.

Основен потребител - филтриране на агенти

Сега, когато можем да вземем потребителския агент, нека започнем да филтрираме. Един прост начин е да проверите дали потребителският агент съдържа определени ключови думи. Например, ако искате да блокирате всички заявки от конкретен бот, можете да направите нещо подобно:

from flask import Flask, request, abort app = Flask(__name__) BLOCKED_USER_AGENTS = ['BadBot/1.0'] @app.route('/') def index(): user_agent = request.headers.get('User-Agent') if user_agent and any(bad_agent in user_agent for bad_agent in BLOCKED_USER_AGENTS): abort(403) return 'Welcome към моето приложение за колба! ' Ако __name__ == '__main__': app.run (debug = true)

В този код имаме списък с блокирани потребителски агенти. Проверяваме дали входящият потребителски агент съдържа някой от блокираните агенти. Ако това стане, ние използвамеабортфункция за връщане на 403 Забранен код на състоянието.

Използване на редовни изрази за по -напреднало филтриране

Понякога се нуждаете от повече гъвкавост при филтрирането си. Именно там са полезни редовни изрази. Редовните изрази ви позволяват да съвпадате с модели в струни. Например, ако искате да блокирате всички ботове, които започват с „Bot“, можете да използвате редовен израз.

Импортирайте повторно от колбата на колбата, заявка, abort app = колба (__ name__) bot_regex = re.compile (r '^bot.*') @app.route ('/') def index (): user_agent = request.headers.get ('user-agent'), ако user_agent и bot_regex.match (user_agent): abor arf ary (403) Завършване на моя флока ('user-agent): abor arf ary and bot_regex.match (user_agent): abor arf ary (403) Завършване' Ако __name__ == '__main__': app.run (debug = true)

Тук използвамеReмодул в Python, за да създадете редовен модел на изразяване. The^символ означава, че моделът трябва да започне с "бот", а.*означава, че може да бъде последван от всякакви герои.

Филтриране въз основа на браузър или устройство

Можете също така да искате да обслужвате различно съдържание въз основа на браузъра или устройството. Например, ако това е мобилно устройство, можете да сервирате мобилна версия на вашето приложение. Можете да използвате библиотеки катоТо - препращанеЗа да анализирате потребителския агент и да получите по -подробна информация.

Първо, инсталирайтеТо - препращанеБиблиотека с помощта наPIP Install UA - анализатор. След това, ето как можете да го използвате:

От колбата на колбата, заявка от ua_parser import user_agent_parser app = flask (__ name__) @app.route ('/') def index (): user_agent = request.headers.get ('user-agent') if user_agent: parsed_ua = user_agent_parser.parse (user_agent) duje_type = PARSED_UA ['устройство'] ['семейство'], ако device_type в ['iPhone', 'iPad']: върнете 'добре дошли на вашето устройство на Apple!' ELSE: Върнете „Добре дошли на други устройства!“ Върнете се „Добре дошли!“ Ако __name__ == '__main__': app.run (debug = true)

В този код използвамеТо - препращанебиблиотека за анализ на потребителския агент. След това проверяваме семейството на устройството. Ако това е iPhone или iPad, ние сервираме конкретно съобщение; В противен случай ние обслужваме различно съобщение.

Clear glass Filtering FlaskLaboratory Filtering Flask

Някои полезни филтриращи колби за вашата лаборатория

Ако сте в лабораторна обстановка, ние предлагаме и няколко страхотни филтриращи колби. Вижте нашитеЛабораторни прозрачни стъклени филтриращи колби с горна тубулатураиЛабораторно стъкло конична форма Erlenmeyer филтриращи колби с горна тръба. Тези колби са проектирани да отговарят на вашите нужди за филтриране в научна среда.

Свържете се с нас за вашите нужди за филтриране

Независимо дали търсите потребителски решения за филтриране на Application Flask или висококачествени лабораторни филтриращи колби, ние сме тук, за да ви помогнем. Ако се интересувате от закупуване на нашите продукти или обсъждане на вашите специфични изисквания, не се колебайте да се свържете. Имаме екип от експерти, готови да ви помогнат в намирането на най -добрите решения за вашите нужди.

ЛИТЕРАТУРА

  • Документация на колбата.
  • PythonReДокументация на модула.
  • То - препращанеБиблиотечна документация.