From 154ec35384d54a601e379e6f475dbf260e5072af Mon Sep 17 00:00:00 2001 From: Ruslan Date: Tue, 28 Apr 2026 20:52:24 +0000 Subject: [PATCH] Block mobile devices: show desktop-only page --- app/main.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/app/main.py b/app/main.py index d8c0077..766be04 100644 --- a/app/main.py +++ b/app/main.py @@ -159,6 +159,52 @@ async def request_logging_middleware(request: Request, call_next): return response + +import re as _re_mob + +_MOBILE_UA_RE = _re_mob.compile( + r"(Mobile|Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|webOS)", + _re_mob.IGNORECASE, +) +_MOBILE_PAGE = ( + "" + '' + "" + '' + '' + "МОНТ - инфрастуктурный полигон" + "" + "" + "" + '' + '
🖥
' + "

Ресурс доступен
только с ПК

" + "

Пожалуйста, откройте эту страницу на компьютере или ноутбуке.

" + "" + "" +) + + +@app.middleware("http") +async def mobile_block_middleware(request: Request, call_next): + path = request.url.path + if path.startswith("/static/"): + return await call_next(request) + ua = request.headers.get("user-agent", "") + if _MOBILE_UA_RE.search(ua): + from starlette.responses import HTMLResponse as _HR + return _HR(content=_MOBILE_PAGE, status_code=200) + return await call_next(request) + class Base(DeclarativeBase): pass