Django的基础访客跟踪和黑名单
项目描述
django-tracking 是一个简单的尝试,用于跟踪Django驱动的网站的访客。它还提供了基本的黑名单功能。
django-tracking 的官方仓库位于 http://bitbucket.org/codekoala/django-tracking。请在那里提交任何工单。
功能
跟踪以下关于访客的信息
会话密钥
IP地址
用户代理
是否为注册用户并已登录
他们从哪里来(http-referer)
他们在您的网站上最后访问的页面
他们在您的网站上访问了多少页面
允许用户代理过滤访客跟踪
自动清理旧的访客记录
可以禁止某些IP地址,使来自这些IP地址的访客无法使用网站(非常适合阻止垃圾邮件)
在网站上提供活跃用户的实时流
模板标签来
显示网站上有多少活跃用户
确定您网站上有多少活跃用户在同一页面上
可选的“活跃访客地图”,查看访客在世界各地的位置
要求
据我所知,django-tracking运行所需的唯一条件是Django的现代版本。我在Django 1.0 alpha 2和beta 1上开发了该项目。它旨在与newforms-admin功能一起工作。
如果您希望使用Google Map来显示访客可能的位置,您必须有一个Google Maps API密钥,这是免费的。您需要安装GeoIP C API库。除非您是付费的MaxMind客户,否则您可能想要获取GeoLite City二进制文件。这是django-tracking用来将IP地址转换成地球上位置的文件。稍后会讨论此功能的配置。
安装
使用以下方法之一下载django-tracking
pip
您可以从CheeseShop下载该包或使用
pip install django-tracking
下载并安装django-tracking。
easy_install
您可以从CheeseShop下载该包或使用
easy_install django-tracking
下载并安装django-tracking。
从BitBucket/GitHub/Google Code检出
使用以下命令之一
hg clone http://bitbucket.org/codekoala/django-tracking git clone http://github.com/codekoala/django-tracking.git hg clone http://django-tracking.googlecode.com/hg/ django-tracking
包下载
从下载部分下载最新的.tar.gz文件,并将其提取到您记得的位置。
配置
首先,您必须将此项目添加到您的settings.py中的INSTALLED_APPS列表
INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', ... 'tracking', ... )
运行manage.py syncdb。这将创建几个数据库表,这对于操作是必要的。
根据您希望如何使用此应用程序,您有一些选项
访客跟踪
将tracking.middleware.VisitorTrackingMiddleware添加到您的settings.py中的MIDDLEWARE_CLASSES。它必须在AuthenticationMiddleware之下,这样request.user就存在。
自动访客清理
如果您希望Django自动从数据库中清理过去的访客信息,请将tracking.middleware.VisitorCleanUpMiddleware放入您的MIDDLEWARE_CLASSES。
IP禁止
将tracking.middleware.BannedIPMiddleware添加到您的settings.py中的MIDDLEWARE_CLASSES。我建议将其作为MIDDLEWARE_CLASSES中的第一个项目,这样被禁止的用户就不需要在Django意识到他们不属于您的网站之前穿透任何其他中间件。
页面上的访客(模板标签)
请确保django.core.context_processors.request在您的TEMPLATE_CONTEXT_PROCESSORS元组中某个地方。此上下文处理器使得request对象可用于您的模板。此应用程序使用request对象在模板标签中确定用户正在查看的页面。
活跃访客地图
如果您对在特定时间点查看访客的位置感兴趣,您可能会喜欢活跃访客地图功能。请确保您已添加以下行到您的main URLconf中
from django.conf.urls.defaults import * urlpatterns = patterns('', .... (r'^tracking/', include('tracking.urls')), .... )
然后,在您的settings.py中设置几个设置
GOOGLE_MAPS_KEY:您自己的Google Maps API密钥
TRACKING_USE_GEOIP:将此设置为True以在地图上查看标记
GEOIP_PATH:将此设置为文件系统中GeoIP.dat、GeoIPCity.dat或任何文件的绝对路径。通常类似于/usr/local/share/GeoIP.dat或/usr/share/GeoIP/GeoIP.dat。
GEOIP_CACHE_TYPE:处理GeoIP数据时使用的缓存类型
0:从文件系统读取数据库,使用最少的内存。
1:将数据库加载到内存中,性能更快但使用更多内存。
2:检查数据库是否已更新。如果数据库已更新,则重新加载文件句柄和/或内存缓存。
4:仅缓存数据库中最常访问的索引部分,查找速度比GEOIP_STANDARD更快,但比GEOIP_MEMORY_CACHE使用的内存更少 - 对于像GeoIP Organization和GeoIP City这样的大型数据库很有用。注意,对于GeoIP Country、Region和Netspeed数据库,GEOIP_INDEX_CACHE与GEOIP_MEMORY_CACHE等效。默认值
DEFAULT_TRACKING_TEMPLATE:生成访客地图时使用的模板。默认为tracking/visitor_map.html。
完成这些后,你应该可以访问你网站上的/tracking/map/(将tracking替换为你URLconf中选择的任何前缀)。默认模板依赖于jQuery来实现其强大功能,但你可以使用任何你喜欢的。
用法
要在模板中显示活动用户数量,请确保你的模板中某处有{% load tracking_tags %},然后进行如下操作
{% visitors_on_site as visitors %} <p> {{ visitors }} active user{{ visitors|pluralize }} </p>
如果你还想显示有多少人在查看同一页面
{% visitors_on_page as same_page %} <p> {{ same_page }} of {{ visitors }} active user{{ visitors|pluralize }} {% ifequal same_page 1 %}is{% else %}are{% endifequal %} reading this page </p>
如果你不想跟踪你网站的特定区域,你可以在你的settings.py中定义一个使用NO_TRACKING_PREFIXES的前缀列表。例如,如果你不想跟踪网站/family/部分的访问,将NO_TRACKING_PREFIXES设置为['/family/']。
如果你不想计算某些用户代理,例如Yahoo!的Slurp和Google的Googlebot,你可以在Django管理界面中添加关键词到访客跟踪。寻找“未跟踪用户代理”并添加一个区分特定用户代理的关键词。任何用户代理字符串中含有该关键词的访客都不会被跟踪。
默认情况下,活动用户包括过去10分钟内的任何访客。如果你想覆盖此设置,只需在settings.py中将TRACKING_TIMEOUT设置为所需的分钟数。
对于自动访客清理,默认情况下删除24小时前的任何记录。如果你想覆盖此设置,在settings.py中将TRACKING_CLEANUP_TIMEOUT设置为所需的小时数。
祝你好运!请与我联系,如果你有任何关于项目的问题或疑虑!
项目详情
django-tracking-0.4.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0193e4fe3b20c9816da2600c97879591a69dfb30010a684e6722dc0d072d4bfe |
|
MD5 | acbc9c6918b434a9212a4c98417d8db7 |
|
BLAKE2b-256 | 70adeddc3d307f82b874c0c8215200cfdd2ce60c6ee2e26dd0e9cedf5c761f7c |