跳转到主要内容

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.datGeoIPCity.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_CACHEGEOIP_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 (1.9 MB 查看哈希值)

上传时间 源代码

由以下支持