【问题标题】:Determine unique visitors to site确定网站的唯一访问者
【发布时间】:2012-03-14 11:44:49
【问题描述】:

我正在创建一个使用 Apache2 作为服务器的 django 网站。我需要一种方法来确定我的网站(特别是每个页面)的唯一访问者数量,以完全证明的方式。不幸的是,用户将有很高的动机去尝试“游戏”跟踪系统,所以我试图让它充分证明。

有没有办法做到这一点?

目前我正在尝试使用 IP 和 Cookie 来确定唯一身份访问者,但该系统很容易被无头浏览器所欺骗。

【问题讨论】:

    标签: django web unique visitors


    【解决方案1】:

    除非有必要将数据集成到您的 Django 数据库中,否则我强烈建议您将流量“外包”给其他提供商。我对 Google Analytics(分析)非常满意。

    如果做不到这一点,您几乎无法阻止某人玩弄系统。您可以基于 IP 地址进行限制,但当然会遇到许多唯一访问者经常共享 IP(例如,通过大学、组织或工作站点)的问题。 Cookie 很容易清除,所以如果你走这条路,那么游戏就很容易了。

    较难摆脱的一点是存储在 appcache 中的文件,因此一种适用于现代浏览器的可能解决方案是将文件存储在 appcache 中。您将首次加载它计为唯一访问,之后由于它被缓存,它们不再被计入。

    当然,既然您可能需要它向后兼容,那么它当然会使其完全开放给最有可能用于游戏系统的各种工具,例如 curl。

    您当然可以阻止非类似浏览器的用户代理,如果一些游戏玩家不知道欺骗浏览器代理字符串(大多数人会很快学会),这会稍微困难一些。

    真的,最好的解决方案可能是——访问页面的结果是什么?例如,如果是销售产品,则不要奖励页面浏览量最多的人;奖励那些点击产生最多销售额的人。或者某人可能在页面上采取的任何耗时的操作。

    可能的解决方案:

    如果您愿意忽略禁用 JavaScript 的用户,您可以选择仅统计访问该页面的用户,然后停留在该页面一段时间(例如 1 分钟) )。在给定的一段时间后,向服务器发送一个 Ajax 请求。因此,如果他们试图通过更改 cookie 并一次加载多个选项卡来进行游戏,那将无法正常工作,因为他们需要拥有相同的 cookie 才能注册他们已经在该页面上停留了足够长的时间。我实际上认为这可能有效;老实说,我看不出有什么方法可以玩这个。基本上在服务器端,您将一个名为stay_until 的字典存储在request.session 中,其中包含每个唯一页面的键,并在大约1 分钟后运行一个Ajax 回调到服务器。如果stay_until[page_id] 的值小于或等于当前时间,则他们是活跃用户,否则他们不是。这意味着某人至少需要 20 分钟才能产生 20 个唯一身份访问者,并且只要您的回报价值低于所消耗的时间,这将是一个强大的抑制因素。

    我什至会更明确地说明:在页面底部的 noscript 标记中,将“您的访问未计算在内。打开 JavaScript 以进行计算”并带有一个展示跟踪过程的页面。

    【讨论】:

    • 不幸的是,我的网站只会被访问几毫秒(它会计算一些东西,然后重定向到第三方)。您的其他服务的替代解决方案可能会起作用。我将尝试独立于我的服务运行谷歌分析,看看哪个更准确。谢谢!
    • 您可以在 100%x100% iframe 中打开第三方页面,然后在后台继续进行流量检查。
    【解决方案2】:

    由于 HTML 请求是无状态的,并且您无法控制用户在其客户端的行为,因此没有防弹的方法。

    【讨论】:

      【解决方案3】:

      要想以一种万无一失的方式跟踪“唯一”访问者,唯一的方法是使其取决于某些受控因素,例如登录。其他任何事情都可以而且不会完全准确。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-10
        • 2012-03-15
        • 2013-09-18
        • 2015-01-16
        • 1970-01-01
        • 2017-08-27
        相关资源
        最近更新 更多