【问题标题】:Simulate "visit" for javascript analytics tracker模拟 javascript 分析跟踪器的“访问”
【发布时间】:2018-04-02 11:06:25
【问题描述】:

我正在使用 Piwik/Matomo 的跟踪器为我的用户提供自定义 JS 跟踪器,并提供一个为他们量身定制的精选分析仪表板。我一直面临的一个问题是验证跟踪器是否已安装并正常工作。

我尝试使用file_get_contents 和/或cURL 来获取页面并检查跟踪器是否存在,但这并不总是有效。所以我试图模拟一次访问,看看跟踪器是否会在它发生时向我发送任何数据。

由于 fget/curl 不触发 javascript,是否有替代(和轻量级)方法来触发页面的 javascript 并触发访问以进行测试?

更新:我按照建议使用 PhantomJS 实现了这个,整体功能是这样的。还没有对我所有的用户进行广泛的测试,有没有更优雅的解决方案? -

checktracker
{
    if (data exists & data > 0)
    {
        return true
    }
    else if (data exists & data = 0)
    {
        simulate visit with phantomJS //Relevant to question
        check again
        if ( still 0 )
        {
            return false
        }
        else
        {
            return true
        }
    }
    else
    {
        invalid site id
    }
}

【问题讨论】:

  • JS 跟踪器只是向跟踪 API 发出请求。 developer.matomo.org/api-reference/tracking-api你可以使用任何你想访问的HTTP API。
  • @LukasWinkler 这只会确认服务器正在接收跟踪器的输入,但它如何确认实际的 JS 跟踪器存在且正常运行?
  • 您可以使用phantomjs 获取页面 - 它会像您的浏览器一样加载它并因此执行 JS 并触发您的跟踪请求

标签: javascript php matomo


【解决方案1】:

所以您想自动检查特定网站是否正确集成了 Matomo?我最近想做同样的事情来创建一个浏览器扩展来快速调试常见错误。

一种方法是检查 DOM。 Matomo 跟踪代码在网站上添加了一个<script>-Tag,因此您可以通过 JavaScript 检查它是否存在:

function getDomElements() {
    var allElements = document.getElementsByTagName('script');
    for (var i = 0, n = allElements.length; i < n; i++) {
        if (allElements[i].hasAttribute("src") && allElements[i].getAttribute("src").endsWith("piwik.js")) { // TODO: support renamed piwik.js
            return allElements[i];
        }
    }
}

但如果您还可以访问 JS 控制台,则可能更好的解决方案是检查跟踪代码是否已正确初始化:

如果这样输出您的 Matomo URL,则很有可能正确嵌入了跟踪代码。

var tracker == window.Piwik.getAsyncTracker()
console.log(tracker.getPiwikUrl())

当然它仍然可能失败(例如,如果服务器在 piwik.php 请求上返回 403,但如果您控制服务器,则不应该发生这种情况)

要自动运行检查,您可以查看 Headless Chrome 或 Firefox。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    相关资源
    最近更新 更多