内容正在载入中,请稍后……
公告
搜索
统计
其他
24 Sep.2011

使用django来获取用户访问的IP地址 晴

作者: 我就是个世界   分类:技术&学习 » Django   出处:本站原创            | |
使用django来获取用户访问的IP地址,如果用户是正常情况下,未使用代理访问,则
request.META['REMOTE_ADDR']


可以获得用户的IP地址。但是有些网站服务器会使用ngix等代理http,或者是该网站做了负载均衡,导致使用remote_addr抓取到的是1270.0.1,这时使用HTTP_X_FORWARDED_FOR才获得是用户的真实IP。推荐使用以下代码:

if req.META.has_key('HTTP_X_FORWARDED_FOR'):
    ip =  req.META['HTTP_X_FORWARDED_FOR']
else:
    ip = req.META['REMOTE_ADDR']

但是,也不是这样就一定能够获得IP,所以最好把代码用 try: .. except: ..包围起来,避免获取失败的时候给用户不好的体验。

try:
    if req.META.has_key('HTTP_X_FORWARDED_FOR'):
        ip =  req.META['HTTP_X_FORWARDED_FOR']
    else:
        ip = req.META['REMOTE_ADDR']
except:
    pass


更好一点的:

    try:
        real_ip = request.META['HTTP_X_FORWARDED_FOR']
        regip = real_ip.split(",")[0]
    except:
        try:
            regip = request.META['REMOTE_ADDR']
        except:
            regip = ""
分享到QQ空间
时间:16:55 评论(0) 引用(0) 阅读(5265) Tags: ,
发表评论
  昵称 [注册]
  密码 (游客无需密码)
  网址
  电邮
OpenID登入 权限选项 表情