根据下载的GB计算访问量

Calculate the number of visits based on downloaded GB

我有一个托管在 firebase 中的网站,该网站在一天内迅速走红。因为我没有预料到,所以我没有安装任何分析工具。但是,我想知道访问次数或下载次数。我唯一可用的指标是下载的 GB:686,8GB。但我很困惑,因为如果我使用 Chrome 的控制台打开网站,我会得到关于页面大小的两个不同指标:319KB 传输和 1.2MB 资源。此外,并非所有这些东西都是从 firebase 传输的,而是从其他 CDN 传输的,正如您在屏幕截图中看到的那样。计算访问次数的正确方法是什么?

  • 传输的指标是应用压缩后使用了多少带宽。
  • 资源指标是这些资源在压缩(用于传输)之前使用了多少磁盘space。

真正的分析需要了解网络上的内容。分为三类:

  • 人类,有血有肉,绝大多数(虽然不是绝对)使用网络浏览器。
  • 蜘蛛(或搜索引擎)请求的页面表明它们遵守 robots.txt 并会在其网站中列出您的网站以进行相关搜索查询。
  • 拒绝(主要是垃圾邮件发送者和未知数)包括(尽管远不限于)content/email scrapers、暴力密码猜测器、漏洞扫描器和POST 垃圾邮件发送者。

有了这个澄清,您实际上要问的是,“我接待了多少人类访客?”获取该信息的最简单方法是:

  1. 确定哪些用户代理请求是人为的(不容易,基于行为)。
  2. 确定人类单次访问的时间长度。
  3. 为人类访客分配会话​​。

我想您了解什么是 cookie 以及它与会话 cookie 的区别。显然,当您登录网站时,您会被分配一个会话。如果该会话 cookie 未根据页面请求发送到服务器,您实际上将被注销。您可以使会话 cookie 持续很长时间,这将归结为访问者的便利性以及您是否直接计算这些会话或将其与其他东西结合使用等因素。

现在您的下一个想法可能是,“但是我如何计算下载量?”感谢您在您的网站中提到 PHP,因此我可以感谢地为您提供一些对您有意义的代码。如果您只是 link 直接访问文件,您将只能(充其量)通过锚元素上的点击事件来计算点击次数,但如果下载被取消是因为这是一个错误或其他原因会使它更加主观比我的建议。当然,我的建议仍然可能是主观的(例如,他们决定他们实际上不想下载并在完成之前取消)当然,如果他们使用下载是另一个需要考虑的方面。也就是说,如果您希望服务器为您提供下载计数,您需要执行以下操作:

  1. 您可能需要使用 Apache 重写(或任何其他 HTTP 服务器等效项)以便 PHP 处理下载。
  2. 您可能需要确保 Apache 能够正确处理 PHP(例如 AddType application/x-httpd-php5 .exe .msi .dmg),以便您的服务器知道让 PHP 运行 处理请求文件。
  3. 为了安全起见,您需要在服务器上使用 PHP 的 file_exists() 绝对文件路径
  4. 您需要确保通过 PHP 的 header() 为文件设置了正确的 MIME,因为您应该预料到浏览器的猜测能力很差。
  5. 您绝对需要使用 die()exit() 来避免 Gecko (Firefox) 错误,如果您的软件泄漏甚至是白色 space 因为浏览器会将其解释为文件的一部分可能导致腐败。

这是 PHP 本身的代码:

$p = explode('/',strrev($_SERVER['REQUEST_URI']));
$file = strrev($p[0]);
header('HTTP/1.1 200');
header('Content-Type: '.$mime);
echo file_get_contents($path_absolute.$file);
die();

为了计算下载量,如果您想稍微花点心思,可以创建几个数据库 table。一个用于文件 (download_files),第二个 table 用于请求 (download_requests)。输入基本的 SQL 查询,您就可以收集数据了。记录 IPv6 (Storing IPv6 Addresses in MySQL),您将能够从查询中辨别出您拥有多少 独立下载

回到人类访客:需要非常彻底的研究才能理解人类和机器人之间的差异。诸如验证码之类的东西是垃圾,而且非常烦人。您可以通过要求在请求时发回 cookie 来获得一个粗略的开始,尽管并非所有的机器人都愚蠢到可笑。我希望这至少能让你走上正确的道路。