专栏首页Coxhuangdjango 获取访问者外网ip地址

django 获取访问者外网ip地址

ip

#0 GitHub

https://github.com/Coxhuang/django-ip.git

#1 环境

python3.6
Django==2.0.7

#2 需求

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

#3 获取本地ip

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

ALLOWED_HOSTS = ["*"]

views.py

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(外网)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python中MongoDB使用

    Coxhuang
  • CentOS6.5将shell脚本设置为服务和开机启动的方法 service

    Coxhuang
  • Mac 搭建SVN服务器

    Coxhuang
  • 微信小程序获取用户所在城市

    在微信小程序中, 获取用户的地理位置是需要权限的, 如果只是获取用户所在的城市信息, 那只需查看用户ip所在的城市就好了, 下面我们就完成获取用户ip的小程序逻...

    Javanx
  • 微信小程序通过ip获取用户所在城市

    zhaoolee
  • django request 获取请求的 IP 地址

    KEVINGUO_CN
  • 用Python爬虫抓取免费代理IP

    -- Illustrations by Ash Thorp & Maciej Kuciara --

    Python中文社区
  • 调用python-nmap实现扫描局域网

    使用环境:Raspberry 3b+ +netifaces+python-nmap+nmap

    py3study
  • 听说你的爬虫被封了?

    网上有许多代理ip,免费的、付费的。大多数公司爬虫会买这些专业版,对于普通人来说,免费的基本满足我们需要了,不过免费有一个弊端,时效性不强,不稳定,所以我们就需...

    Python攻城狮
  • python实现主机批量管理

        在日常的运维工作中批量对主机的是很常见的,市面上也有许多主机批量管理的软件,但有时候这些软件并不能完全的满足我们的需求。python中刚好提供了关于主机...

    py3study

扫码关注云+社区

领取腾讯云代金券