Aula 87 – Obtendo Endereço IP do User

Aula 87 – Obtendo Endereço IP do User

Loja Online - Django

Loja Online – Django

Voltar para página principal do blog

Todas as aulas desse curso

Aula 86                                   Aula 88

Redes Sociais:

facebook

Meus links de afiliados:

Hostinger

Digital Ocean

One.com

Melhore seu NETWORKING

https://digitalinnovation.one/

Participe de comunidades de desenvolvedores:

Fiquem a vontade para me adicionar ao linkedin.

E também para me seguir no https://github.com/toticavalcanti.

Código final da aula:

https://github.com/toticavalcanti

Quer aprender python3 de graça e com certificado? Acesse então:

https://workover.com.br/python-codigo-fluente

Canais do Youtube

Toti

Lofi Music Zone Beats

Backing Track / Play-Along

Código Fluente

Putz!

Vocal Techniques and Exercises

PIX para doações

PIX Nubank

PIX Nubank


 

Aula 87 – Obtendo Endereço IP do User

A questão da obtenção dos endereços IP pode ser um pouco complexa, especialmente quando se lida com os cabeçalhos relacionados a esses endereços.

É importante observar que os usuários não têm a capacidade de personalizar ou alterar seus endereços IP, tornando-os difíceis de rastrear.

Uma consideração adicional é que não estamos excessivamente preocupados com a obtenção de uma precisão de 100% nesse processo.

Embora possa haver maneiras de melhorar essa precisão, reconhecemos que não podemos controlar completamente as ações dos usuários em relação aos seus endereços IP.

No entanto, conseguimos obter esses endereços em vários servidores neste ponto de conexão, o que é suficiente para nossas necessidades.

Embora haja espaço para melhorias, nossa atenção não está inteiramente focada em alcançar a perfeição.

Em resumo, nossos endereços IP têm a capacidade de controlar certos aspectos, e agora podemos prosseguir na implementação.

Então bora lá!

Crie o arquivo django_ecommerce/e_commerce/analytics/utils.py.

django_ecommerce/e_commerce/analytics/utils.py


def get_client_ip(request):
    # Obtém o valor do cabeçalho 'HTTP_X_FORWARDED_FOR' do objeto 'request.META'.
    x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
    
    # Verifica se o cabeçalho 'HTTP_X_FORWARDED_FOR' está presente.
    if x_forwarded_for:
        # Se estiver presente, o cabeçalho pode conter uma lista de endereços IP separados por vírgulas.
        # Portanto, dividimos a string em uma lista usando ',' como delimitador e pegamos o primeiro elemento da lista,
        # que é o endereço IP do user.
        ip = x_forwarded_for.split(",")[0]
    else:
        # Se o cabeçalho 'HTTP_X_FORWARDED_FOR' não estiver presente, usamos o endereço IP do user
        # que está disponível em 'request.META["REMOTE_ADDR"]'.
        ip = request.META.get("REMOTE_ADDR")
    
    # Retornamos o endereço IP final.
    return ip

Observação antes da explicação do código:

O X-Forwarded-For (ou HTTP_X_FORWARDED_FOR em Django) é um cabeçalho HTTP usado para rastrear o endereço IP original do cliente quando uma solicitação HTTP passa por intermediários como proxies reversos, balanceadores de carga ou servidores de cache.

Esse cabeçalho é frequentemente usado para determinar o endereço IP real do cliente, especialmente em ambientes de rede complexos.

Já o request.META[“REMOTE_ADDR”]  é uma variável no Django que contém o endereço IP do cliente que fez a solicitação ao servidor.

Essa variável é uma parte do objeto de solicitação HTTP (request) e fornece o endereço IP do host que iniciou a solicitação HTTP.

Normalmente, request.META[“REMOTE_ADDR”] contém o endereço IP do cliente diretamente, sem levar em consideração proxies ou balanceadores de carga na frente do servidor.

Portanto, quando não há um proxy reverso ou balanceador de carga na frente do servidor, request.META[“REMOTE_ADDR”] geralmente fornece o endereço IP do cliente de forma direta.

Explicação de cada parte do código:

Função get_client_ip()

A função get_client_ip() é definida com um parâmetro request, que é uma instância do objeto de solicitação HTTP do Django.

Esta função tem a finalidade de extrair o endereço IP do cliente da solicitação.

x_forwarded_for = request.META.get(‘HTTP_X_FORWARDED_FOR’)

Esta linha tenta obter o valor do cabeçalho HTTP HTTP_X_FORWARDED_FOR do objeto request.META.

Este cabeçalho é frequentemente usado quando há um servidor proxy ou balanceador de carga na frente do aplicativo Django para capturar o endereço IP real do cliente.

if x_forwarded_for:

Este bloco verifica se o cabeçalho HTTP_X_FORWARDED_FOR está presente na solicitação.

ip = x_forwarded_for.split(“,”)[0]

Se o cabeçalho HTTP_X_FORWARDED_FOR estiver presente, pode conter uma lista de endereços IP separados por vírgulas.

Portanto, esta linha divide a string em uma lista usando ‘,‘ como delimitador e pega o primeiro elemento da lista, que é o endereço IP real do cliente.

else:

Se o cabeçalho HTTP_X_FORWARDED_FOR não estiver presente (ou seja, se x_forwarded_for for None ou vazio), este bloco será executado.

ip = request.META.get(“REMOTE_ADDR”)

Nesse caso, usamos o endereço IP do cliente disponível em request.META[“REMOTE_ADDR”].

Isso é útil quando o servidor proxy ou o balanceador de carga não passa o cabeçalho HTTP_X_FORWARDED_FOR.

Finalmente, a função retorna o endereço IP encontrado, que pode ser usado em outras partes do seu aplicativo Django.

Por essa aula é so!

Voltar para página principal do blog

Todas as aulas desse curso

Aula 86                                   Aula 88

Código final da aula:

https://github.com/toticavalcanti

Canais do Youtube

Toti

Backing Track / Play-Along

Código Fluente

Putz!

Vocal Techniques and Exercises

Dêem um joinha 👍 na página do Código Fluente no
Facebook.

Sigam o Código Fluente no Instagram e no TikTok.

Código Fluente no Pinterest.

Meus links de afiliados:

Hostinger

Digital Ocean

One.com

Nos vemos na próxima então, \o/  😉 Bons Estudos!

 

About The Author
-

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>