模拟javascript分析跟踪器的“访问”

时间:2018-04-02 11:06:25

标签: javascript php matomo

我正在使用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
    }
}

1 个答案:

答案 0 :(得分:0)

因此,您想要自动检查特定网站是否正确集成了Matomo?我最近想要创建一个浏览器扩展来快速调试常见错误。

一种方法是检查DOM。 Matomo跟踪代码为网站添加了<script> - 标记,因此您可以通过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网址,则跟踪代码嵌入正确的可能性很高。

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

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

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