How do I get the client Remote Port number in a Django?

Viewed 166

I know I can use request.META['REMOTE_ADDR'] to get the client's IP in my django view function. However, I have no idea how to get the client remote port number.

For example, you can see your own remote port number on the site below:

https://www.myip.com/

Remote Port

here is sample of view.py:

if request.user.is_authenticated:
        gelenIleti = request.META.get('HTTP_X_FORWARDED_FOR')
        if gelenIleti:
            ip = gelenIleti.split(',')[0]
        else:
            ip = request.META.get('REMOTE_ADDR')
            portNumarasi = request.META['SERVER_PORT']
        logger.info(' ' + 'LOG KAYDI :' + ' ' + ' KULLANICI : ' + request.user.username + ' ' + ' IP : ' + ip + ' ' + ' SERVER PORT : ' + portNumarasi)
1 Answers

You can get the IP and PORT through WSGIRequest connected socket.

Django 1.11:

sock = request._stream.stream._sock
client_ip, port = sock.getpeername()

Django 2.1:

sock = request._stream.stream.raw._sock
client_ip, port = sock.getpeername()

Django 2.2 and 3.1:

sock = request._stream.stream.stream.raw._sock
client_ip, port = sock.getpeername()

UPDATE

if request.user.is_authenticated:
    sock = request._stream.stream.stream.raw._sock
    client_ip, port = sock.getpeername()

    logger.info(' LOG KAYDI : KULLANICI : %s IP : %s SERVER PORT : %s' % (request.user.username, client_ip, port))
Related