【问题标题】:Tracking code that monitors visitor stays on other sites监控访客停留在其他网站上的跟踪代码
【发布时间】:2012-12-05 09:25:08
【问题描述】:

我希望人们注册我的网站并为他们提供一个独特的 javascript sn-p,他们必须将其放在他们的网站上。 我有 2 个问题。

1) 假设我使用下面的代码来跟踪他们网站上的访问持续时间。下面的跟踪跟踪一个人何时访问该站点并离开它,但我如何确保他们真正离开该站点而不仅仅是访问该站点域上的另一个页面(意味着用户仍在他们的站点上)。饼干?

var timeLog = {
        start: null,
        end: null,
        init: function(){
            this.start = new Date().getTime();
        },
        sendResults: function(){
            this.end = new Date().getTime();
            var jData = { "client": "some-access-string", "start": this.start, "end": this.end };

            var client = new XMLHttpRequest();
            client.open("POST", "http://yoursite.com/process_info.php");
            client.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
            client.send(JSON.stringify(jData));
        }
    };

    window.onbeforeunload = function() {
        timeLog.sendResults();
    };

    timeLog.init();

2) 我还没有完成跨站点脚本,所以我想知道如果 javascript sn-p 调用 process_info.php 脚本,我是否可以尝试设置 cookie 并获取 $_SERVER 变量,例如 $_SERVER['HTTP_USER_AGENT ']。由于实际的 php 脚本将位于不同的域上,这会起作用吗?

【问题讨论】:

  • 这看起来很棘手,由于安全问题,我怀疑你是否能 100% 工作。对于突然关闭浏览器或禁用 javascript 的人,你会怎么做?我不认为设置 cookie 会起作用,因为大多数浏览器可以在不阻止“正常”cookie 的情况下阻止 3rd 方 cookie。
  • 如果他们关闭浏览器,我认为它仍然是 onbeforeunload。如果他们很好地禁用了 javascript,那么您对此无能为力。我不确定是否有任何其他方法可以实现此功能。
  • 我修改了你的代码,当我使用 navigator.sendBeacon 提交请求时,我获得了一个在许多流行浏览器(chrome、firefox、edge、Midori、chromium、brave ,顿悟,歌剧,qutebrowser,也许还有其他一些未经测试的)。

标签: php javascript cookies cross-domain tracking


【解决方案1】:

这段代码不是跨浏览器的;最好使用Image 进行跟踪,只需将所有跟踪数据转储到 URL 本身中即可。

优点是您可以提供包含不可见跟踪像素的<noscript> sn-p,而无需进行太多修改。脚本本身的分发和初始化可以通过像this 这样的小sn-p 来完成,它将在正文中插入一个<script> 标签并运行它。

另外,不要使用.onbeforeunload(),那东西很讨厌。最好使用会话属性来确定站点离开,例如请求之间的时间;如果您在 X 分钟内没有收到另一个请求,则假定用户已离开。

只要 cookie 域与脚本的 URL 相对应(即没有第三方 cookie),从您的 PHP 脚本设置 cookie 应该可以正常工作。

【讨论】:

  • 或者如果你仍然想使用onbeforeunload(),你可以使用script而不是Image<script src="trackingsite.com/track.js?customer_id=xyz"> 并在该脚本中为 onbeforeunload 上的图像生成负载
  • @Buksy 最好保持客户端尽可能简单和干净,并在服务器端实现所有“智能”的东西。
  • 是的,但是如果您只使用服务器端,您将无法访问大量信息。例如,谷歌分析也在生成自己的script 标签。
  • @Buksy 我没有这么说,但我现在已经在答案中说得更清楚了。
  • “图像”是什么意思?因此,要跟踪访问者页面上的访问时间和印象数,我可以给他们 mydomain.com/myscript.php?unique_id=34343"> 然后处理 myscript.php 中的所有内容?我只是给他们一个链接到我的图像的 javascript sn-p 吗?如果我需要知道更精确的页面持续时间怎么办。 0-5 秒、5-10 秒、10-15 秒、15+ 秒?
猜你喜欢
  • 1970-01-01
  • 2014-10-19
  • 2011-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多