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環境
[[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=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")
使用不同的瀏覽器訪問采集接口,可以看到數據庫中采集到不同瀏覽器的信息
獲取信息的接口
Django開發簡單采集用戶瀏覽器信息的小功能