django 如何获取用户的ip地址
发布时间:2020-12-15 17:14:25 所属栏目:大数据 来源:网络整理
导读:在实际django开发过程中,有时候需要记录用户的ip信息,那么在django中如何获取用户真实ip信息? 第一种方法:通过HTTP_X_FORWARDED_FOR和REMOTE_ADDR获取 代码如下: def?get_client_ip(request):????x_forwarded_for?=?request.META.get('HTTP_X_FORWARDED
在实际django开发过程中,有时候需要记录用户的ip信息,那么在django中如何获取用户真实ip信息? 第一种方法:通过HTTP_X_FORWARDED_FOR和REMOTE_ADDR获取 代码如下: def?get_client_ip(request): ????x_forwarded_for?=?request.META.get('HTTP_X_FORWARDED_FOR') ????if?x_forwarded_for: ????????ip?=?x_forwarded_for.split(',')[0] ????else: ????????ip?=?request.META.get('REMOTE_ADDR') ????return?ip print?get_client_ip(request) >>>?http://www.chenxm.cc/article/865.html 注意:这个方法不是非常安全一种方法,对于非正常用户可以很轻松使用这个方法返回他们伪造的ip地址 参考:http://esd.io/blog/flask-apps-heroku-real-ip-spoofing.html 第二种方法:使用模块django-ipware 安装: pip?install?django-ipware 简单实例: ?#?可以利用view和middleware中request对象 ?from?ipware?import?get_client_ip ?client_ip,?is_routable?=?get_client_ip(request) ?if?client_ip?is?None: ????#?无法获取客户端的ip地址 ?else: ?????#?获取到客户的ip ?????if?is_routable: ?????????#?客户端的ip地址是一个公开地址 ?????else: ?????????#?客户端的ip地址是一个私有地址 ?#?优先顺序是(公共,私有,环回,无) 高级用法: 自定义头部信息 - 用于查看ipware的自定义请求标头 i,?r?=?get_client_ip(request,?request_header_order=['X_FORWARDED_FOR']) i,?request_header_order=['X_FORWARDED_FOR',?'REMOTE_ADDR']) 代理计数 -? Django服务器支持固定数量的代理 i,?proxy_count=1) 受信任的代理 -? Django服务器支持一个或多个已知和受信任的代理 i,?proxy_trusted_ips=('177.2.2.2')) #?对于多个代理,只需将它们添加到列表中即可 i,?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,?proxy_trusted_ips=('177.2.',?'177.3.')) 参考:https://stackoverflow.com/questions/4581789/how-do-i-get-user-ip-address-in-django (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |