Php RESTAPI跟踪唯一页面视图
我正在为我的网站开发一个使用api平台的PHP REST api,用户可以在这里发布“评论”(类似于文章)。我想跟踪这篇文章的独特页面视图,以便以后可以按查看次数最多的评论排序并显示它们 我在网上阅读了很多解决方案,并实现了其中两个:谷歌分析跟踪和Redis+浏览器指纹识别 首先,Google Analytics跟踪工作得很好,我使用“ga:uniquePageviews”属性和页面路径过滤器,使用Google PHP Api获得唯一的页面视图。这种方法唯一的问题是,一些用户使用广告拦截器,他们阻止谷歌分析,因此不会记录这些人的页面浏览量 我还使用Redis+浏览器指纹(使用指纹JS2)为匿名用户实现了视图跟踪,并使用用户id为登录用户实现了视图跟踪。因此,对于已登录的用户,如果他们在过去30分钟内未访问该页面,则会添加一个新的唯一视图。这似乎很有效。 问题在于匿名用户。目前,在网站端,我正在使用fingerprintjs2库生成一个浏览器指纹,然后在标题中传递给REST api,如果该指纹在过去30分钟内没有访问该页面,则会添加一个新的唯一视图。但是,因为我的RESTAPI将公开(我计划将来可能还会制作一个移动应用程序),任何人都可以在指纹头中放入任何想要的内容,然后继续更改它,并记录一个新的独特视图,我不确定如何修复此问题。只允许我的网站域中的CORS可以解决这个问题吗?但是移动应用呢 现在我倾向于认为使用谷歌分析是最好的方法,尽管有广告拦截器,但Redis方法对我来说似乎很酷,我也希望它能起作用 以下是我目前用于Redis的代码示例: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获得唯一的页面视图。这种方法唯一的问题是,一些用户使用广告拦截器,他们
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);
}
所以没有人能给我提供任何关于这方面的信息?一些提示或任何东西?我想从你们中的一些人那里得到一些关于这方面的建议。