johnsnook/yii2-visitors

此扩展程序获取与IP地址关联的访问者信息,包括代理和地理位置信息,并记录访问情况,检查是否在黑名单或白名单中,并采取相应的行动。

安装: 426

依赖: 0

建议者: 0

安全: 0

星标: 7

关注者: 3

分支: 4

公开问题: 3

类型:yii2-extension

v0.9.4 2018-07-01 00:19 UTC

This package is not auto-updated.

Last update: 2024-09-24 17:39:14 UTC


README

Yii2 - 访问者

此扩展程序是网站管理员用来防止恶意访问的半安全、半SEO(搜索引擎优化)工具。

它跟踪与访问者IP地址和用户代理(浏览器/操作系统)信息关联的访问者信息,检索代理和"IP信息",包括ISP地理位置信息,记录访问情况,并检查黑名单或白名单规则,采取适当的行动。

包括用于查看、搜索、过滤和图形(包括GIS!)探索您的网站访问者的工具。

安装

1. 下载

安装此扩展程序的首选方式是通过 composer

运行

php composer.phar require --prefer-dist johnsnook/yii2-visitors "*"

"johnsnook/yii2-visitors": "*"

将以下内容添加到您的 composer.json 文件的 require 部分。

2. 配置

扩展程序安装完成后,将 'visitor' 添加到配置文件的自启动部分

    'bootstrap' => [
        'log',
        'visitor',
    ],

然后添加最小模块定义

    'modules' => [
        ...
        'visitor' => [
            'class' => 'johnsnook\visitor\Module',
        ],
        ...
    ],

路由在模块文件中定义为 $urlRules。这些也可以在模块定义中重新定义。默认情况下,对于美观URL,它们看起来像这样

    'visitor' => '/visitor/visitor/index',
    'visitor/index' => '/visitor/visitor/index',
    'visitor/blowoff' => '/visitor/visitor/blowoff',
    'visitor/<id>' => 'visitor/visitor/view',
    'visitor/update/<id>' => 'visitor/visitor/update',

3. 更新数据库模式

最后,您需要通过应用迁移来更新数据库模式。请确保您已正确配置 db 应用组件,并运行以下命令

$ php yii migrate/up --migrationPath=@vendor/johnsnook/yii2-visitor/migrations

免费API密钥

  1. 为了让地图在访客视图中渲染,您必须有一个MapQuest密钥。前往 https://developer.mapquest.com/plan_purchase/steps/business_edition/business_edition_free/register 获取免费API密钥。如果没有设置,地图将不会显示。

  2. ipinfo.io每天限制请求数量为100,但有了密钥,您可以每天请求1000次。前往 https://ipinfo.io/signup 获取免费API密钥。如果没有设置,您每天将限制为100个请求。

  3. proxycheck.io每天限制请求数量为100,但有了密钥,您可以每天请求1000次。前往 https://proxycheck.io/ 获取免费API密钥。如果没有设置,您每天将限制为100个请求。

  4. Whatismybrowser.com是一项严肃的业务,因此使用其服务必须使用API。前往 https://developers.whatismybrowser.com/api/signup/basic 获取免费API密钥,但请准备提供"应用程序名称"和网站。如果没有设置,除了基本的USER_AGENT字符串之外,将不会捕获任何数据。

自定义

因此,您应该能够访问 http://yoursit.biz/index.php?r=visitor/visitor/index 或,如果您启用了美观URL,http://yoursite.com/visitor,并看到访客索引。

但您可能想要创建自己的视图。如果是我,我会把控制器和视图复制到您的后端或基本控制器和视图目录。但也许还有更好的实践方法。

我已经留下了布局为空,以便页面应该使用您的布局/主题渲染。

当您完成所有密钥的获取,并决定有一些控制器操作您不感兴趣跟踪时,您的模块配置可能看起来像这样

    'modules' => [
        ...
        'visitor' => [
            'class' => 'johnsnook\visitor\Module',
            'ipInfoKey' => 'Not a real key, obviously',
            'proxyCheckKey' => 'Not a real key, obviously',
            'mapquestKey' => 'Not a real key, obviously',
            'blowOff' => 'site/nope',
            'ignorables' => [
                'acontroller' => ['ignore-me', 'ignore-that'],
                'whitelist' => ['127.0.0.1', '24.99.155.86']
            ]
        ],
        ...
    ],

如您所见,您可以添加自定义的'blowoff'控制器操作。访客将被传递进来,这样您就可以显示名称和吹气消息。

关于'ignorables'配置数组的一些注意事项。您可以添加要忽略的控制器和操作,以及要忽略的IP地址白名单。这些将不会添加到访问日志中。

用法

如果您想了解当前用户的信息,您可以从模块中获取访客模型,并像这样使用

    $visitor = \Yii::$app->getModule('visitor')->visitor;
    // give a special hello to people in Atlanta or your ex wife
    if ($visitor->info->city === 'Atlanta' || $visitor->info->ip_address === '99.203.4.238') {
        echo "Your city sucks balls";
    }

导入现有的Apache访问日志

为了启动访客数据,您可以导入apache2日志,只要您(不是www-data)有权查看它们,并且它们是标准的Apache格式。

这是通过位于https://github.com/kassner/log-parser的非常优秀的解析库实现的。

默认情况下,它假设您的访问日志位于'/etc/httpd/logs',因为我的就是那里。您可以指定另一个路径作为第一个参数。

第二个参数用于指定您要导入的文件。默认情况下,它寻找access*,但也可以提供一个不带空格的逗号分隔的列表。

# The default, looks for /etc/httpd/logs/access*
php yii visitor/import/logs

# Looks for /my/own/private/idaho/access*
php yii visitor/import/logs '/my/own/private/idaho'

# Will process /etc/httpd/log/access_log-20180603 and /etc/httpd/log/access_log-20180610 ONLY.
php yii visitor/import/logs '/etc/httpd/logs' access_log-20180603,access_log-20180610

要查看实际效果,请访问https://snooky.biz/visitor

截图!

主屏幕 ipfilter1

详细访客视图 ipfilter2

更新访客的名称和/或消息。 ipfilter3

默认阻止用户视图。(如从Tor所见) ipfilter4

. . . . . . . . . . .