将分析数据发送到不同的域而没有响应

Send analytic data to different domain without response

先决条件

  1. 我拥有mysite.com

  2. 我没有 othersite.com,但我可以在其中嵌入 javascript 代码


问题

  1. 如何将分析数据从othersite.com发送到mysite.com

    • 预期:othersite.com 客户端 -> mysite.com 服务器

    • 未预期:othersite.com 客户端 -> othersite.com 服务器 -> mysite.com 服务器

    • 原理好像和Google Analytics差不多,但不知道具体原理

    • 我知道由于跨域问题ajax无法完成

  2. 如果我拥有 othersite.com 会有什么变化?

  3. 如何在没有响应的情况下发送解析数据?

    • 例如,Heap Analytics发送解析数据没有响应

使用 Google Analytics(以及我知道的所有其他 Web 分析工具)的默认场景是通过动态创建一个图像来跨域传输数据,该图像的源指向跟踪服务器并附加用户数据(例如每个用户的唯一 ID)作为图像源的 url 参数。

除了通过图像源发送的所有内容之外,您还将从 http 请求中获取数据(IP 地址、用户代理等)。

对于一个简单的系统,您可以创建一个脚本,将 url 和 http 数据直接存储到数据库中,然后再 returns(1 像素透明)图像。如果您想要可扩展的东西,您可能会将数据写入日志文件并使用一些当前大肆宣传的大数据技术(hadoop、hive 等)进行处理。

在任何情况下,分离数据收集和处理都是一个好主意,因为这使您可以更轻松地切换跟踪应用程序的组件以获得改进版本,而不会影响系统的其他部分。

发送图像是可靠的,因为它适用于任何浏览器而无需启用任何特殊配置(cors 等)。然而,它很容易被阻止(用户只需阻止像素图像或通过他们的主机文件将调用重定向到您的服务器)。

如果另一个域是您的,您可以

  • 通过 ajax
  • 追踪
  • 直接读取服务器日志或将它们通过管道传输到您选择的仪表板

如果您无法实际访问服务器,但所有者允许您配置他们的名称服务器,您可以 运行 所有传入的 http 请求都通过您的跟踪脚本,然后再将它们重定向到请求的页面。

我看了看堆分析。他们像其他工具一样发送图像请求:

https://heapanalytics.com/h?a=236035469&u=4184751431615606&v=2274541888&s=3701858993&b=web&z=2&h=%2F&d=heapanalytics.com&t=Heap%20%7C%20Mobile%20and%20Web%20Analytics&r=https%3A%2F%2Fwww.google.de%2F&k=Screen%20Dimensions&k=1050%20x%201680&k=Window%20Width&k=1973&k=Window%20Height&k=1039&tm=1432884624859

其中 returns http 200 响应代码和一个 1 像素的透明图像,因此看起来不像 "track without response"。