Встречается на собеседованиях • сегодня
Как запретить обслуживание пользователей из какой-то страны по 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. Обязательно логгируйте блокировки для анализа
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы