我有一个页面,其中包含一系列指向Greasemonkey用户脚本的链接。用户脚本设置了@updateURL
个参数,因此当我将新版本上传到页面时,安装了脚本的人员会自动更新其版本,或者询问他们是否要升级。
一切正常。我在托管页面上安装了Google分析,因此我可以看到该页面有多少次点击,但我想知道的是有多少人获得了更新。
普通分析不起作用,因为它们都依赖于某人点击链接,但Greasemonkey下载更新后的文件而不点击任何内容(或者据我所知,触发分析中的页面命中)。
我假设我需要服务器端解决方案,但我不知道它会是什么样子。也许以上关于GM的所有内容都无关紧要,简单的问题是:
如何跟踪从我的服务器下载文件的次数(不依赖于下载链接的点击次数)?
[编辑进一步信息]
@Brock Adams感谢您的回答 - 它非常详细,正是我想要的。我不知道单独的meta.js
选项,但是稍微阅读它我发现这是一个好主意,因为它意味着只需要下载meta.js
文件(而不是检查更新时,整个user.js
文件。当我设置它时,自动更新是一种新的,并没有太多关于它们的文档。
我仍然找不到多少,所以我想知道你是否可以澄清。主user.js
文件中的元数据保持不变,只是指向meta.js
中的@updateURL
并且没有版本号,即:
// ==UserScript==
// @namespace http://namespace.com/userscripts
// @description some description.
// @downloadURL https://namespace.com/userscripts/example.user.js
// @updateURL https://namespace.com/userscripts/example.meta.js
// @include https://example.com/*
// @grant none
// ==/UserScript==
然后所有example.meta.js
都必须
// ==UserScript==
// @version 2.1
// ==/UserScript==
是正确的吗?再次感谢。
答案 0 :(得分:2)
执行此操作的唯一方法是处理HTTP服务器日志(由Apache,Nginx等保存)。谷歌分析无法做到这一点,因为它依赖于运行自己的javascript - 这是在脚本更新和直接下载时被绕过的。
您可以从主机控制面板或FTP访问原始HTTP日志。有关更多信息,请咨询您的主办公司。
在原始日志中,直接下载通常如下所示:
107.178.216.165 - - [12/Jun/2014:17:22:35 -0500] "GET /test/Alert.user.js HTTP/1.1" 200 37 "-" "Mozilla/5.0 {redacted} Firefox"
请注意缺少referrer(浏览器信息之前的"_"
列),这些通常是来自该会话的给定IP地址的唯一请求,而典型的页面请求GET
多个文件每节课。
不幸的是,大多数主机提供的标准日志分析程序是 Webalizer 和 Awstats 。这些都不会帮助您按原样跟踪下载。但是,您可以set up a custom AWStats config file将其配置为将*.user.js
个文件视为下载(请参阅this answer for a possible recipe)。
重要提示:当Greasemonkey检查更新时,它会下载@updateURL
指定的文件(如果未指定@downloadURL
,则下载@updateURL
) - 只是比较版本号。
因此,要跟踪实际下载,@updateURL
指令始终use a separate *.meta.js
file。这样可以避免将例行检查计为下载。