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")

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

获取信息的接口

Django开发简单采集用户浏览器信息的小功能的更多相关文章

  1. Django实现简单的用户添加、删除、修改等功能

    一. Django必要的知识点补充 1. templates和static文件夹及其配置 1.1 templates文件夹 所有的HTML文件默认都放在templates文件夹下. 1.2 stati ...

  2. 网站开发---js与java实现的一些小功能

    记录一下网站开发过程中的一些小功能 1.js获取当前年份: <span>Copyright © 2017-<script>document.write( new Date(). ...

  3. 使用Django开发简单接口:文章增删改查

    目录 1.一些准备工作 安装django 创建django项目 创建博客应用(app) 2.models.py 3.django admin 登录 创建超级用户 4.修改urls.py 5.新增文章接 ...

  4. Django开发简单博客流程

    什么是Django? Django是一个基于python的高级web开发框架 它能够让开发人员进行高效且快速的开发 高度集成(不用自己造轮子), 免费并且开源 当前路径创建工程 django-admi ...

  5. django使用JWT保存用户登录信息

    在使用前必须弄明白JWT的原理,原理可以看我的另一篇博文:https://www.cnblogs.com/chichung/p/9966027.html JWT的流程 1.签发JWT 在用户正确输入账 ...

  6. BeEF 获取同局域网内用户浏览器信息

    1.将kali网络适配器改为桥接模式 打开网络适配器,获取权限 修改桥接模式,进行应用 重启网卡 /etc/init.d/networking restart 查看IP地址 查看网络通不通 2.开启B ...

  7. 【Java】Jsoup爬虫,一个简单获取京东商品信息的小Demo

    简单记录 - Jsoup爬虫入门实战 数据问题?数据库获取,消息队列中获取中,都可以成为数据源,爬虫! 爬取数据:(获取请求返回的页面信息,筛选出我们想要的数据就可以了!) 我们经常需要分析HTML网 ...

  8. python3 用户登录验证的小功能

    用户登录验证,记录一下,还需要修改黑名单不合理 #!/usr/bin/env python3 ''' 需求:编写登录接口 1.输入用户名和密码 2.验证用户密码成功后输出欢迎消息 3.3次没有验证通过 ...

  9. Java微信公众平台开发(十)--微信用户信息的获取

    前面的文章有讲到微信的一系列开发文章,包括token获取.菜单创建等,在这一篇将讲述在微信公众平台开发中如何获取微信用户的信息,在上一篇我们有说道微信用户和微信公众账号之间的联系可以通过Openid关 ...

随机推荐

  1. yum nginx最新版安装

    去官方站点获取yum仓库 [root@web01 ~]# cat /etc/yum.repos.d/nginx.repo [nginx] name=nginx repo baseurl=http:// ...

  2. HDU-5728-PowMod-求phi(i*n)前缀和+指数循环节

    HDU-5728-PowMod-求phi(i*n)前缀和+指数循环节 [Problem Description] 令\(k=\sum_{i=1}^m \varphi(i\cdot n)\ mod \ ...

  3. 分享一个自制的USB转HART模块

    HART协议是一种用于现场智能仪表和控制室设备之间的通讯协议.使用USB转HART模块可以很方便的对HART总线上的数据进行监控,并且可以远程控制.操作和校准HART设备.设计的模块主要采用的是USB ...

  4. python数据类型:dict(字典)

    一.字典的简单介绍 字典(dict)是python中唯一的一个映射类型.他是以{}括起来的键值对组成. 语法: {key1:value1,key2:value2......} 注意:key必须是不可变 ...

  5. chrome 調試 node 代碼

    (1)node --inspect-brk debug/demo (2)通过 chrome 进行调试    (3) chrome://inspect 进入chrome调试界面    --inspect ...

  6. 关于request.getServletPath(),request.getContextPath()的总结

    1. getServletPath():获取能够与“url-pattern”中匹配的路径,注意是完全匹配的部分,*的部分不包括. 2.getContextPath():获取项目的根路径

  7. [AGC028B]Removing Blocks 概率与期望

    考虑算每一个位置在所有情况的期望值乘以全排列似乎就是答案. 那么对于 $i$,如果要由 $j$ 来贡献的话就要满足 $j$ 在 $i....j-1$ 之前先拿. 而在拿 $j$ 时,先于 $i...j ...

  8. luogu 3702 [SDOI2017]序列计数 矩阵乘法+容斥

    现在看来这道题真的不难啊~ 正着求不好求,那就反着求:答案=总-全不是质数 这里有一个细节要特判:1不是质数,所以在算全不是质数的时候要特判1 code: #include <bits/stdc ...

  9. [报错解决] "MySQL server has gone away" 解决思路

    大概的4个思路 1.超时,超时的阀值有wait_timeout这个参数控制 2.连接被人为的kill 3.发送的SQL语句过大超过max_allowed_packet的大小. (操作的sql语句太长了 ...

  10. 关于.eslintrc.js代码检测的一些配置

    配置参数 rules: { "规则名": [规则值, 规则配置] }  规则值: "off"或者0 //关闭规则关闭 "warn"或者1 / ...