voerro / laravel-visitor-tracker
Laravel 5的访客跟踪和统计
Requires
- php: >=7.0
- guzzlehttp/guzzle: ~6.0
- illuminate/bus: 5.5.* | 5.6.* | 5.7.*
- illuminate/contracts: 5.5.* | 5.6.* | 5.7.*
- illuminate/database: 5.5.* | 5.6.* | 5.7.*
- illuminate/http: 5.5.* | 5.6.* | 5.7.*
- illuminate/queue: 5.5.* | 5.6.* | 5.7.*
- illuminate/support: 5.5.* | 5.6.* | 5.7.*
- piwik/device-detector: ^3.9
Requires (Dev)
- orchestra/testbench: ^3.5
- phpunit/phpunit: ^6.5 | ^7.0
README
跟踪认证和未认证访客、登录尝试、AJAX请求等。包括控制器、一系列路由和视图来显示统计信息,以及一个帮助类来轻松获取统计信息(如果您想自行显示统计信息)。
安装 - 基础
- 使用composer安装此包
composer require voerro/laravel-visitor-tracker
- 运行迁移以安装包的表格来记录访问,执行以下操作
php artisan migrate
- 将中间件添加到
app/Http/Kernel.php
protected $middlewareGroups = [ ... 'web' => [ ... \Voerro\Laravel\VisitorTracker\Middleware\RecordVisits::class, ], ... ];
- Laravel 5.5有包自动发现功能。如果您使用的是旧版本,请在
config/app.php中注册服务提供者
... 'providers' => [ ... Voerro\Laravel\VisitorTracker\VisitorTrackerServiceProvider::class, ... ], ...
如果您想自行获取和显示访客统计信息,请在该文件中注册外观
... 'aliases' => [ ... 'VisitStats' => Voerro\Laravel\VisitorTracker\Facades\VisitStats::class, ... ], ...
- 通过运行以下命令发布配置文件、资产和视图
php artisan vendor:publish
在提供的列表中选择Voerro\Laravel\VisitorTracker\VisitorTrackerServiceProvider
安装 - Geoapi
跟踪器使用外部API获取地理位置数据。要关闭geoapi,将配置文件中的geoip_on设置设置为false。要更改提供商,更改geoip_driver字段。支持的驱动程序在配置文件中列出。您可能需要根据所选驱动程序填写额外的API密钥。
由于从外部API获取数据需要时间,因此操作被排队并异步执行。这是通过Laravel作业完成的,可能不支持共享主机。支持多个驱动程序。我们将描述如何设置数据库驱动程序。
首先,在您的.env文件中设置以下内容
QUEUE_DRIVER=database
然后依次运行以下命令
php artisan queue:table php artisan queue:failed-table php artisan migrate
最后,您需要启动一个工人来处理队列。运行以下命令并保持其运行
php artisan queue:work
有关队列和作业的更多信息,请参阅Laravel文档。 本节描述了如何在进程失败时自动重新启动队列工人。
提示:每次您更改包的配置文件时,都需要重新启动工人。
配置
查看config/visitortracker.php文件。它有很好的注释,不需要额外的说明。您可以在其中排除某些用户组、单个用户和某些请求的跟踪,以及其他事项。
测试
在测试环境中禁用了外部API调用以检索地理位置信息。否则,由于跟踪器跟踪所有请求,测试将运行得非常慢。
显示统计信息
该软件包包含一个控制器以及一组用于显示统计数据的路由和视图。您可以使用VisitStats类自行获取和显示统计数据,但我们会稍后讨论。提供的视图简单且使用标准Bootstrap类进行样式设置。
要安装内置路由,请将以下行添加到您的routes.php文件中
VisitStats::routes();
您可以将此行放在一个组内,以通过中间件限制访问或为路由添加前缀。例如,如下所示
Route::middleware('auth')->prefix('admin')->group(function () { VisitStats::routes(); });
您可以将视图集成到现有的布局中。查看配置文件的Views部分。所有路由都进行了命名,因此您可以轻松添加和设置所有页面的链接。以下是完整的路由列表。
| 路由名称 | 描述 |
|---|---|
| visitortracker.summary | 一个小型摘要页面 |
| visitortracker.all_requests | 所有请求的列表 |
| visitortracker.visits | 页面访问列表(与所有请求相同,但减去AJAX调用、机器人访问和登录尝试) |
| visitortracker.ajax_requests | AJAX请求列表 |
| visitortracker.bots | 来自机器人/爬虫的访问列表 |
| visitortracker.login_attempts | 登录尝试列表(请参阅配置文件的“跟踪登录尝试”部分) |
| visitortracker.countries | 按最后访问日期排序的访问次数和独特访客数量的国家列表 |
| visitortracker.os | 按最后访问日期排序的访问次数和独特访客数量的操作系统列表 |
| visitortracker.browsers | 按最后访问日期排序的访问次数和独特访客数量的浏览器列表 |
| visitortracker.languages | 按最后访问日期排序的访问次数和独特访客数量的浏览器语言列表 |
| visitortracker.unique | 按最后访问日期排序的独特访客(独特IP)列表 |
| visitortracker.users | 按最后访问日期排序的注册用户列表,以及按访问次数排序的总访问次数 |
| visitortracker.urls | 按最后访问日期排序的URL列表,包括总访问次数和独特访客数量 |
收集的信息
这是跟踪器正在收集的数据。
| 数据库字段 | 描述 |
|---|---|
| user_id | 执行请求的认证用户的ID |
| ip | 例如,'127.0.0.1' |
| method | 例如,'GET' |
| is_ajax | 请求是否是AJAX请求 |
| url | 例如,'http://voerro.com' |
| referer | 例如,'http://google.com' |
| user_agent | 例如,'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0' |
| is_desktop | 请求是否来自桌面 |
| is_mobile | 请求是否来自移动设备 |
| is_bot | 访客是否是机器人/爬虫 |
| bot | 例如,'Googlebot' |
| os_family | 例如,'linux' |
| os | 例如,'Ubuntu' |
| browser_family | 例如,'firefox' |
| browser | 例如,'Firefox 58.0' |
| is_login_attempt | 请求是否是登录尝试 |
| country | 例如,'Russia' |
| country_code | 例如,'RU' |
| city | 例如,'Moscow' |
| lat | 纬度 |
| long | 经度 |
| browser_language_family | 例如,'en' |
| browser_language | 例如,'en-US' |
| created_at | 标准Laravel字段,也用作访问/请求的日期时间 |
该软件包使用piwik/device-detector来解析用户代理。
手动获取和显示统计数据
如果您对提供的视图不满意,可以使用Voerro\Laravel\VisitorTracker\Facades\VisitStats类来获取统计数据,然后创建自己的控制器和视图来显示这些数据。
查看位于src/Controllers/StatisticsController.php的控制器,了解如何使用该类,它相当简单。原始类位于src/VisitStats.php,其中所有方法都有文档说明,以防您需要更多信息。
许可证
这是一个开源软件,遵循MIT许可证。