Встречается на собеседованиях • сегодня

Как запретить обслуживание пользователей из какой-то страны по IP адресу

Для блокировки пользователей по стране можно использовать библиотеку geoip2 для определения страны по IP. Пример реализации с Flask:

python
from flask import Flask, request, abort
import geoip2.database

app = Flask(__name__)
reader = geoip2.database.Reader('GeoLite2-Country.mmdb')
BLOCKED_COUNTRIES = {'RU', 'CN', 'KP'}  # Коды стран ISO 3166-1

@app.before_request
def block_countries():
ip = request.remote_addr
try:
country = reader.country(ip).country.iso_code
if country in BLOCKED_COUNTRIES:
abort(403, "Access denied for your country")
except:
pass # Логируем ошибку, но разрешаем доступ

... остальное приложение ...

text

Важные моменты:
1. Нужна база GeoLite2 от MaxMind (бесплатная версия)
2. IP может быть прокси или VPN - блокировка не 100% надежна
3. Лучше делать на уровне Nginx, если возможно - это эффективнее
4. Обязательно логгируйте блокировки для анализа
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы