将分析数据发送到不同的域而没有响应
Send analytic data to different domain without response
先决条件
我拥有mysite.com
我没有 othersite.com
,但我可以在其中嵌入 javascript 代码
问题
如何将分析数据从othersite.com
发送到mysite.com
?
预期:othersite.com
客户端 -> mysite.com
服务器
未预期:othersite.com
客户端 -> othersite.com
服务器 -> mysite.com
服务器
原理好像和Google Analytics
差不多,但不知道具体原理
我知道由于跨域问题ajax无法完成
如果我拥有 othersite.com
会有什么变化?
如何在没有响应的情况下发送解析数据?
- 例如,
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"。
先决条件
我拥有
mysite.com
我没有
othersite.com
,但我可以在其中嵌入 javascript 代码
问题
如何将分析数据从
othersite.com
发送到mysite.com
?预期:
othersite.com
客户端 ->mysite.com
服务器未预期:
othersite.com
客户端 ->othersite.com
服务器 ->mysite.com
服务器原理好像和
Google Analytics
差不多,但不知道具体原理我知道由于跨域问题ajax无法完成
如果我拥有
othersite.com
会有什么变化?如何在没有响应的情况下发送解析数据?
- 例如,
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"。