Вы можете использовать django-ipware , который поддерживает Python 2 & amp; 3 и обрабатывает IPv4 & amp; IPv6.
Установить:
pip install django-ipware
blockquote> blockquote>Простое использование:
Чтобы получить IP-адрес клиента.
blockquote> blockquote># In a view or a middleware where the `request` object is available from ipware import get_client_ip ip, is_routable = get_client_ip(request) if ip is None: # Unable to get the client's IP address else: # We got the client's IP address if is_routable: # The client's IP address is publicly routable on the Internet else: # The client's IP address is private # Order of precedence is (Public, Private, Loopback, None)
Расширенное использование:
Пользовательский заголовок - Пользовательский заголовок запроса для ipware для просмотра
blockquote> blockquote>i, r = get_client_ip(request, request_header_order=['X_FORWARDED_FOR']) i, r = get_client_ip(request, request_header_order=['X_FORWARDED_FOR', 'REMOTE_ADDR'])
Количество прокси-серверов - сервер Django находится за фиксированным числом прокси-серверов
blockquote> blockquote>i, r = get_client_ip(request, proxy_count=1)
Доверенные прокси - сервер Django находится за одним или несколькими известными & amp; доверенные прокси
blockquote> blockquote>i, r = get_client_ip(request, proxy_trusted_ips=('177.2.2.2')) # For multiple proxies, simply add them to the list i, r = get_client_ip(request, proxy_trusted_ips=('177.2.2.2', '177.3.3.3')) # For proxies with fixed sub-domain and dynamic IP addresses, use partial pattern i, r = get_client_ip(request, proxy_trusted_ips=('177.2.', '177.3.'))