2

ユーザーのパブリックIPを取得するためにdjango-ipwareを使用しています

https://github.com/un33k/django-ipware

私のサイトは、仮想マシンによってホストされていますdjnago , mod_wsgi , apache

これは私のコードです

    g = GeoIP()
    ip_address = get_ip_address_from_request(self.request)
    raise Exception(ip_address)

それは私にくれました127.0.0.1

同じネットワーク上の他のコンピューターからアクセスしています。

パブリック IP を取得するにはどうすればよいですか

私もこれもやってみました

PRIVATE_IPS_PREFIX = ('10.', '172.', '192.', )

def get_client_ip(request):
"""get the client ip from the request
"""
remote_address = request.META.get('REMOTE_ADDR')
# set the default value of the ip to be the REMOTE_ADDR if available
# else None
ip = remote_address
# try to get the first non-proxy ip (not a private ip) from the
# HTTP_X_FORWARDED_FOR
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
if x_forwarded_for:
    proxies = x_forwarded_for.split(',')
    # remove the private ips from the beginning
    while (len(proxies) > 0 and
            proxies[0].startswith(PRIVATE_IPS_PREFIX)):
        proxies.pop(0)
    # take the first ip which is not a private one (of a proxy)
    if len(proxies) > 0:
        ip = proxies[0]

return ip

192.168.0.10ローカルコンピューターのIPが返されました

4

1 に答える 1