前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >django 获取访问者外网ip地址

django 获取访问者外网ip地址

作者头像
Autooooooo
发布2020-11-09 11:26:05
3.6K0
发布2020-11-09 11:26:05
举报
文章被收录于专栏:CoxhuangCoxhuang

ip

#0 GitHub

代码语言:javascript
复制
https://github.com/Coxhuang/django-ip.git

#1 环境

代码语言:javascript
复制
python3.6
Django==2.0.7

#2 需求

  • 获取本地ip
  • 获取访问者ip

#3 获取本地ip

代码语言:javascript
复制
from django.shortcuts import HttpResponse
import requests
import re
import time

def get_localhost_ip(request):
    response = requests.get("http://" + str(time.localtime().tm_year) + ".ip138.com/ic.asp")
    ip = re.search(r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}", response.content.decode(errors='ignore')).group(0)
    print(ip)
    return HttpResponse("localhost_ip : %s"%ip)

localhost_ip : 61.145.167.223

#4 获取访问者ip

settings.py

代码语言:javascript
复制
ALLOWED_HOSTS = ["*"]

views.py

代码语言:javascript
复制
def get_request_ip(request):

    try:
        x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
        if x_forwarded_for:
            ip = x_forwarded_for.split(',')[0]  # 所以这里是真实的ip
        else:
            ip = request.META.get('REMOTE_ADDR')  # 这里获得代理ip
    except:
        ip = None

    return HttpResponse("request_ip : %s" % ip)

request_ip : 127.0.0.1

#4.1 注意

  • 如果是本地访问本地的接口,那么ip就是本机ip,不是本机对应的外网ip(127.0.0.1)
  • 如果是局域网访问,那么拿到的ip是局域网的ip,并不是局域网内PC对应的外网ip(192.168.x.xxx)
  • 如果是外网访问接口,那么拿到的ip就是访问者外网的ip(外网)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-01-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ip
  • #0 GitHub
  • #1 环境
  • #2 需求
  • #3 获取本地ip
  • #4 获取访问者ip
    • #4.1 注意
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档