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