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")
使用不同的浏览器访问采集接口,可以看到数据库中采集到不同浏览器的信息
获取信息的接口
Django开发简单采集用户浏览器信息的小功能的更多相关文章
- Django实现简单的用户添加、删除、修改等功能
一. Django必要的知识点补充 1. templates和static文件夹及其配置 1.1 templates文件夹 所有的HTML文件默认都放在templates文件夹下. 1.2 stati ...
- 网站开发---js与java实现的一些小功能
记录一下网站开发过程中的一些小功能 1.js获取当前年份: <span>Copyright © 2017-<script>document.write( new Date(). ...
- 使用Django开发简单接口:文章增删改查
目录 1.一些准备工作 安装django 创建django项目 创建博客应用(app) 2.models.py 3.django admin 登录 创建超级用户 4.修改urls.py 5.新增文章接 ...
- Django开发简单博客流程
什么是Django? Django是一个基于python的高级web开发框架 它能够让开发人员进行高效且快速的开发 高度集成(不用自己造轮子), 免费并且开源 当前路径创建工程 django-admi ...
- django使用JWT保存用户登录信息
在使用前必须弄明白JWT的原理,原理可以看我的另一篇博文:https://www.cnblogs.com/chichung/p/9966027.html JWT的流程 1.签发JWT 在用户正确输入账 ...
- BeEF 获取同局域网内用户浏览器信息
1.将kali网络适配器改为桥接模式 打开网络适配器,获取权限 修改桥接模式,进行应用 重启网卡 /etc/init.d/networking restart 查看IP地址 查看网络通不通 2.开启B ...
- 【Java】Jsoup爬虫,一个简单获取京东商品信息的小Demo
简单记录 - Jsoup爬虫入门实战 数据问题?数据库获取,消息队列中获取中,都可以成为数据源,爬虫! 爬取数据:(获取请求返回的页面信息,筛选出我们想要的数据就可以了!) 我们经常需要分析HTML网 ...
- python3 用户登录验证的小功能
用户登录验证,记录一下,还需要修改黑名单不合理 #!/usr/bin/env python3 ''' 需求:编写登录接口 1.输入用户名和密码 2.验证用户密码成功后输出欢迎消息 3.3次没有验证通过 ...
- Java微信公众平台开发(十)--微信用户信息的获取
前面的文章有讲到微信的一系列开发文章,包括token获取.菜单创建等,在这一篇将讲述在微信公众平台开发中如何获取微信用户的信息,在上一篇我们有说道微信用户和微信公众账号之间的联系可以通过Openid关 ...
随机推荐
- DNS服务——域名解析容错
介绍 DNS服务至关重要,你我每天访问网站不可能是记忆IP地址.因此DNS服务器的可靠性至关重要.下面介绍DNS服务器容错机制,看图 为了防止DNS服务器故障不再提供服务,引入辅助DNS服务器.辅助D ...
- Windows——Thinkpad 开机显示pwmtr64v.dll找不到指定的模块
解决方法:进入设备管理器,展开系统设备分页,找到Lenovo Power Manager ,右键,更新驱动程序,浏览计算机上的驱动程序, 让我从计算机上的可用驱动程序列表中选取,选择Lenovo Po ...
- 运维开发笔记整理-QueryDict对象
运维开发笔记整理-QueryDict对象 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 客户端发送数据请求有很多种,相信运维人员已经很清楚了,如果不太清楚的话可以参考我之前的学习笔 ...
- es6 class extends
Class和普通构造函数有何区别 JS构造函数 function MathHandle(x, y){ this.x = x; this.y = y; } MathHandle.prototype. ...
- STM32 LoRaWAN探索板B-L072Z-LRWAN1入门指南
UM2159用户手册 基于STM32L0的超低功耗LoRa探索套件入门指南 前言 LoRa 探索套件(B-L072Z-LRWAN1)是一款RF探索开发板,采用了Murata公司的LoRa模块CMWX1 ...
- 轻院校赛-zzuli 2266: number【用每位的二进制的幂的和来进行hash(映射)处理】
zzuli 2266: number 大致题意: 给定n,问有多少数对<x, y>满足: x, y∈[1, n], x < y x, y中出现的[0, 9] ...
- TCP三次握手,四次回收的每一步的解释
三次握手 第一次握手:主机A发送位码为syn=1,随机产生seq number=10001的数据包到服务器,主机B由SYN=1知道,A要求建立联机,此时状态为SYN_SENT: 第二次握手:主机B收到 ...
- vs2017 c# 控制台 输出中文显示问号 ; vs2017 c# 控制台 输出中文显示乱码
问题: 解决: 在main方法最前面加一句就OK了! Console.OutputEncoding = Encoding.GetEncoding("gbk"); 或者 Consol ...
- mysql类型为varchar double类型字符串求和多出多个小数
-- 错误 SELECT SUM(price) FROM m_user -- 正确 SELECT TRUNCATE ( ) FROM m_user u; -- 正确 SELECT ) ) FROM m ...
- BZOJ 2699: 更新 (DP)
题目 对于一个数列A[1-N],一种寻找最大值的方法是:依次枚举A[2]到A[N],如果A[i]比当前的A[1]值要大,那么就令A[1]=A[i],最后A[1]为所求最大值.假设所有数都在范围[1, ...