1. 程式人生 > >Django開發簡單采集用戶瀏覽器信息的小功能

Django開發簡單采集用戶瀏覽器信息的小功能

you 1.3 用戶 result tor not content ops nod

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環境

[[email protected] ~]# pip install Django==1.8.2

# 創建一個容器

[[email protected] opt]# cd python/

[[email protected] python]# ls

[[email protected] python]# django-admin startproject mydevops

# 在該容器下創建app

[[email protected] mydevops]# python manage.py startapp scanhosts

[[email protected] 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=uip地址, 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")

技術分享圖片

使用不同的瀏覽器訪問采集接口,可以看到數據庫中采集到不同瀏覽器的信息

技術分享圖片

技術分享圖片

獲取信息的接口

技術分享圖片

Django開發簡單采集用戶瀏覽器信息的小功能