Django开发简单采集用户浏览器信息的小功能

Django开发简单采集用户浏览器信息的小功能

Django开发简单采集用户浏览器信息的小功能

 

Centos环境准备

yum install –y python-pip

 

export http_proxy=http://10.11.0.148:808

export https_proxy=https://10.11.0.148:808

 

pip install --upgrade pip

pip install ipython

 

安装django

 

Centos7环境

[root@es01 ~]# pip install Django==1.8.2

 

# 创建一个容器

[root@es01 opt]# cd python/

[root@es01 python]# ls

[root@es01 python]# django-admin startproject mydevops

 

# 在该容器下创建app

[root@es01 mydevops]# python manage.py startapp scanhosts

[root@es01 mydevops]# ls

manage.py  mydevops  scanhosts

 

windows环境

创建工程和应用

创建第一个devops工程,采集和获取用户浏览器信息

功能:记录Http访问ip及用户UA信息

对于工程的主要配置文件settings.py如果有不清楚的地方可以打印信息

要想django工程使用到新添加的应用需要修改配置如下:

# Application definition

 

INSTALLED_APPS = (

    'django.contrib.admin',

    'django.contrib.auth',

    'django.contrib.contenttypes',

    'django.contrib.sessions',

    'django.contrib.messages',

    'django.contrib.staticfiles',

       'scanhosts',

)

修改数据库链接

DATABASES = {

    'default': {

        'ENGINE': 'django.db.backends.mysql',

        'NAME': 'mydevops',

        'USER': 'admin',

        'PASSWORD': 'admin',

        'HOST': '127.0.0.1',

        'PORT': '',

        'OPTIONS': {},

        'init_command': 'SET storage_engine=INNODB,'

                        'SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED, autocommit=1, names "utf8";',

    }

}

Model模型

常用数据类型

定义用户模型

 

 

因为用到了中文,需要定义编码为 utf-8

# -*- coding:utf-8 -*-
from django.db import models

# Create your models here.

class UserIPInfo(models.Model):
    ip = models.CharField(max_length=40, default='',verbose_name=u'ip地址', null=True)
    time = models.DateTimeField(verbose_name=u"更新时间", auto_now=True)

    class Meta:
        verbose_name = u"用户访问地址信息表"
        verbose_name_plural = verbose_name
        db_table = "useripinfo"

class BrowseInfo(models.Model):
    useragent = models.CharField(max_length=100, default='', verbose_name=u'用户浏览器agent信息',null = True)
    models.CharField(max_length=256, verbose_name=u"唯一设备id", default='')

    userip = models.ForeignKey("UserIPInfo")

    class Meta:
        verbose_name = u'用户浏览器信息'
        verbose_name_plural = verbose_name
        db_table = "browseinfo"

# 执行迁移

先安装mysqldb依赖

pip install mysqlclient==1.3.4

D:\python\mydevops>python manage.py makemigrations

转化为sql语句

D:\python\mydevops>python manage.py migrate

工程设计

 

采集和获取信息接口

Mydevops/scanhosts/views.py

from django.shortcuts import render

from django.http import JsonResponse, HttpResponse
from .models import *
import json


def user_info(request):
    # print ".........",request.META
    ip_addr = request.META['REMOTE_ADDR']
    user_ua = request.META['HTTP_USER_AGENT']

    user_obj = UserIPInfo.objects.filter(ip = ip_addr)
    if not user_obj:
        res = UserIPInfo.objects.create(ip = ip_addr)
        ip_add_id = res.id
    else:
        ip_add_id = user_obj[0].id

    BrowseInfo.objects.create(useragent=user_ua, userip_id=ip_add_id)

    result = {"STATUS":"success",
              "INFO":"User info",
              "IP":ip_addr,
              "UA":user_ua}

    return HttpResponse(json.dumps(result), content_type="application/json")


def user_history(request):
    ip_lst = UserIPInfo.objects.all()
    infos = {}
    for item in ip_lst:
        infos[item.ip] = [ b_obj.useragent for b_obj in BrowseInfo.objects.filter(userip_id=item.id) ]

    result = {"STATUS":"success", "INFO":infos}

    return HttpResponse(json.dumps(result), content_type="application/json")

 

使用不同的浏览器访问采集接口,可以看到数据库中采集到不同浏览器的信息

获取信息的接口

 

posted @ 2019-05-15 18:16 reblue520 阅读( ...) 评论( ...) 编辑 收藏
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值