Php RESTAPI跟踪唯一页面视图

Php RESTAPI跟踪唯一页面视图,php,rest,api,google-analytics,redis,Php,Rest,Api,Google Analytics,Redis,我正在为我的网站开发一个使用api平台的PHP REST api,用户可以在这里发布“评论”(类似于文章)。我想跟踪这篇文章的独特页面视图,以便以后可以按查看次数最多的评论排序并显示它们 我在网上阅读了很多解决方案,并实现了其中两个:谷歌分析跟踪和Redis+浏览器指纹识别 首先,Google Analytics跟踪工作得很好,我使用“ga:uniquePageviews”属性和页面路径过滤器,使用Google PHP Api获得唯一的页面视图。这种方法唯一的问题是,一些用户使用广告拦截器,他们

我正在为我的网站开发一个使用api平台的PHP REST api,用户可以在这里发布“评论”(类似于文章)。我想跟踪这篇文章的独特页面视图,以便以后可以按查看次数最多的评论排序并显示它们

我在网上阅读了很多解决方案,并实现了其中两个:谷歌分析跟踪和Redis+浏览器指纹识别

首先,Google Analytics跟踪工作得很好,我使用“ga:uniquePageviews”属性和页面路径过滤器,使用Google PHP Api获得唯一的页面视图。这种方法唯一的问题是,一些用户使用广告拦截器,他们阻止谷歌分析,因此不会记录这些人的页面浏览量

我还使用Redis+浏览器指纹(使用指纹JS2)为匿名用户实现了视图跟踪,并使用用户id为登录用户实现了视图跟踪。因此,对于已登录的用户,如果他们在过去30分钟内未访问该页面,则会添加一个新的唯一视图。这似乎很有效。 问题在于匿名用户。目前,在网站端,我正在使用fingerprintjs2库生成一个浏览器指纹,然后在标题中传递给REST api,如果该指纹在过去30分钟内没有访问该页面,则会添加一个新的唯一视图。但是,因为我的RESTAPI将公开(我计划将来可能还会制作一个移动应用程序),任何人都可以在指纹头中放入任何想要的内容,然后继续更改它,并记录一个新的独特视图,我不确定如何修复此问题。只允许我的网站域中的CORS可以解决这个问题吗?但是移动应用呢

现在我倾向于认为使用谷歌分析是最好的方法,尽管有广告拦截器,但Redis方法对我来说似乎很酷,我也希望它能起作用

以下是我目前用于Redis的代码示例:

public function addAndGetReviewViews(Request $request, $id)
{
    $viewsKey = 'pageviews-review-' . $id;
    $setKey = 'uniqueviews-review-' . $id;

    $user = $this->getUser();

    if ($user) {
        $userId = $user->getId();
    } else if ($request->headers->has('X-Anonymous-Fingerprint')) {
        $userId = base64_encode(
            substr($request->headers->get('X-Anonymous-Fingerprint'), 0, 32)
        );
    } else {
        // Only add views if user is logged in or has anonymous fingerprint
        return $this->redis->get($viewsKey) ?: 0;
    }

    $setExists = $this->redis->exists($setKey);

    if (!$this->redis->sismember($setKey, $userId)) {
        $this->redis->sadd($setKey, $userId);
        $this->redis->incr($viewsKey);
    }

    if (!$setExists) {
        $this->redis->expire($setKey, 1800);
    }

    return $this->redis->get($viewsKey);
}

所以没有人能给我提供任何关于这方面的信息?一些提示或任何东西?我想从你们中的一些人那里得到一些关于这方面的建议。