CN114730341A - 保护在本地应用的用户界面数据收集中的用户隐私 - Google Patents
保护在本地应用的用户界面数据收集中的用户隐私 Download PDFInfo
- Publication number
- CN114730341A CN114730341A CN202080075578.7A CN202080075578A CN114730341A CN 114730341 A CN114730341 A CN 114730341A CN 202080075578 A CN202080075578 A CN 202080075578A CN 114730341 A CN114730341 A CN 114730341A
- Authority
- CN
- China
- Prior art keywords
- user
- user interface
- view
- content
- presented
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
- H04L63/0254—Stateful filtering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3438—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment monitoring of user actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/349—Performance evaluation by tracing or monitoring for interfaces, buses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/835—Timestamp
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/84—Using snapshots, i.e. a logical point-in-time copy of the data
Abstract
用于生成用户会话的回放的方法、系统和装置,包括编码在计算机存储介质上的计算机程序。在一个方面,一种方法包括向客户端设备提供配置数据,该配置数据指定发布者的白名单视图的集合。从客户端设备接收用户会话的用户界面数据。用户界面数据包括指定在用户会话期间呈现的一个或多个用户界面的结构的视图数据、指定与一个或多个用户界面的用户交互的用户交互数据、以及一个或多个第一呈现的用户界面元素的内容,该一个或多个第一呈现的用户界面元素(i)是由一个或多个用户界面呈现,并且(ii)是从与由配置数据指定的白名单视图相匹配的视图生成。基于用户界面数据来生成用户会话的回放。
Description
相关申请的交叉引用
本申请要求2019年8月28日提交的题为“保护本地应用的用户界面数据收集中的用户隐私”的美国专利申请No.62/892,914的在35 U.S.C.119(e)项下的权益。出于所有目的,前述申请的公开内容通过引用其整体并入本文。
背景技术
用户界面便于用户与各种资源和应用的交互。例如,用户界面通常包括各种交互式元素,这些元素使用户能够(例如,使用文本框)输入数据、(例如,使用单选按钮、复选框或下拉菜单)进行数据选择、(例如,通过与嵌入式链接交互)导航到资源或应用页面、以及(例如,旋转设备、调整窗口大小、滚动到文档的其他部分、或使用缩放控件)更改用户界面的视觉方面。由于用户对给定网站或应用的满意度可能取决于用户对用户界面的体验,因此可以记录与用户界面的用户会话,并向发布者回放。
发明内容
一般而言,本说明书中描述的主题的一个创新方面可以体现在方法中,该方法包括:向客户端设备提供配置数据,该配置数据指定发布者的白名单视图的集合,每个白名单视图是有资格从客户端设备收集和发送来自视图的内容的该视图;从客户端设备接收用户与发布者的一个或多个用户界面交互的用户会话的用户界面数据,用户界面数据包括:指定在用户会话期间呈现的一个或多个用户界面的结构的视图数据;指定与一个或多个用户界面的用户交互的用户交互数据;和一个或多个第一呈现的用户界面元素的内容,一个或多个第一呈现的用户界面元素(i)是由一个或多个用户界面呈现,并且(ii)是从与由配置数据指定的白名单视图相匹配的视图生成,其中应用不提供一个或多个第二呈现的用户界面元素的内容,该一个或多个第二呈现的用户界面元素从与由配置数据指定的白名单视图不匹配的视图生成;和基于用户界面数据,生成呈现一个或多个用户界面的用户会话的回放、一个或多个第一呈现的用户界面元素的内容、与一个或多个用户界面的用户交互,以及对于一个或多个第二用户界面元素的内容,生成表示第二用户界面的内容的屏蔽元素。该方面的其他实施例包括对应的方法、装置和计算机程序,该计算机程序被配置为执行该方法的动作,该计算机程序被编码在计算机存储设备上。
这些和其他实施例可以各自可选地包括一个或多个以下特征。在一些方面,对于每个用户界面,视图数据包括指定用于生成用户界面的视图的层次的数据。
在一些方面,给定的第一呈现的用户界面元素的内容包括由一个或多个用户界面中的给定用户界面呈现的文本,并且文本的屏蔽元素包括与在给定用户界面中限定文本的矩形的大小相匹配的矩形框。给定的第一呈现的用户界面元素的内容可以包括由一个或多个用户界面中的给定用户界面呈现的文本,并且文本的屏蔽元素可以包括具有基于文本的上升的高度的矩形框。
在一些方面,给定的第一呈现的用户界面元素的内容包括由一个或多个用户界面中的给定用户界面呈现的图像,并且图像的屏蔽元素包括具有与图像的给定像素相匹配的颜色的替换图像。给定的第一呈现的用户界面元素的内容可以包括由一个或多个用户界面中的给定用户界面呈现的图像,并且图像的屏蔽元素可以包括从图像的像素样本生成的替换图像,像素样本少于图像的像素总数。
一些方面可以包括:在用户会话的回放期间,检测与在用户会话的回放中由一个或多个用户界面中的至少一个呈现的用户界面元素的用户交互。响应于检测到用户交互,更改用于生成用户界面元素的给定视图的白名单状态。白名单状态指定视图是否包括要从客户端设备收集的内容。更改给定视图的白名单状态可以包括,每当给定视图在指定白名单内容的白名单上时,从白名单内容中移除给定视图,和每当视图不在指定白名单内容的白名单上时,将视图添加到白名单。
一些用户界面(诸如银行网页或应用的用户界面)呈现与用户界面交互的用户的隐私数据或其他隐私内容。由于该内容通常在评估用户界面的质量和功能时没有用,并且不应该呈现给其他方,所以应该注意确保该内容不是回放的部分。
可以实现本说明书中描述的主题的特定实施例,以便实现以下优点中的一个或多个。本文档中描述的技术通过防止从用户的设备收集内容(例如,隐私或敏感内容)同时仍然收集足够的信息来生成用户会话的回放来保护用户的隐私,该回放准确地反映了(多个)用户界面被呈现的方式以及在用户会话期间发生的对(多个)用户界面的更改。
使用包括文本的对象的大小来适当地调整在回放期间表示文本的屏蔽元素的大小的文本替换技术准确地反映了在不呈现实际文本的情况下呈现文本的方式。与用其他文本替换实际文本的技术相比,这些技术更准确,并且需要更少的处理能力和更少的计算资源来准确地调整文本替换的大小。相对于用其他文本替换隐私文本的技术,用非文本表示替换文本通过排除逆转这种替换的能力来进一步保护用户的隐私。本文档中描述的用于确定收集哪些对象的大小信息的技术相对于获取所有对象的大小信息的技术,减少了获取大小信息的计算成本(例如,在资源、处理能力、时间等方面)。
当用户界面被加载时,提供配置数据,该配置数据指定应该被收集到应用(例如,网络浏览器或本地应用)的白名单内容,使得发布者能够在任何时候更新白名单内容,而不必对网页或本地应用的代码进行程序性更改。这使得能够对收集的数据进行快速和动态的更改,而不需要生成、测试和分发更新的时间消耗和昂贵的过程。文档中描述的用户界面可以通过允许发布者在用户会话的回放期间简单地选择应列入白名单或从白名单中移除的内容来进一步简化和提高此过程的速度。
本说明书中描述的主题的一个或多个实施例的细节在附图和以下描述中阐述。本主题的其他特征、方面和优点将从描述、附图和权利要求中变得显而易见。
附图说明
图1是用户与用户界面交互的示例环境的框图。
图2A是在用户会话期间呈现的示例用户界面的图示。
图2B示出了用于图2A的用户界面的示例虚拟文档对象模型(DOM)的一部分。
图3是用于重放用户会话的示例交互界面的图示。
图4是用于生成和提供呈现用户会话的回放的交互式界面的示例过程的流程图。
图5是用于更新用户界面元素的白名单状态的示例过程的流程图。
不同附图中相同的附图标记和名称指示相同的元件。
具体实施方式
本文档中描述的技术允许发布者优化他们的用户界面(例如,网页或应用界面),使得用户具有与用户界面交互的积极的体验,同时还保护查看用户界面并与之交互的用户的隐私。随着保护用户隐私的需求日益受到关注,这些技术在任何涉及用户数据的技术中都至关重要。本文档中描述的技术防止从用户设备收集或传输用户数据,确保数据在传输期间不会被拦截或从另一设备窃取。同时,可以收集非常具体的数据(例如与用户界面的结构和用户界面中呈现的元素的大小相关的数据)以重新创建用户会话,所重新创建的用户会话准确地反映呈现给用户的用户界面、在用户会话期间发生的对用户界面的更改以及在用户会话期间发生的用户交互,而不示出实际的用户数据。
例如,银行的网站或移动应用向客户显示他们的余额、交易和其他对用户是隐私的数据。在评估网站或应用的质量时,不需要示出交易和余额的实际文本,并且客户更偏好这种数据不与收集用户界面数据以进行回放和分析的第三方共享,并且更偏好当查看用户会话的回放时,这种数据不呈现给网站或应用发布者。本文档中描述的技术防止从客户端设备收集这种数据,并替换回放中的数据,使得回放准确地反映客户查看的用户界面但没有用户的实际数据。例如,当在客户端设备处记录用户界面时,可以标识这种数据,并且在从客户端设备发送数据之前,删除这种数据或者用不可逆数据替换这种数据。在回放期间,可以呈现线框对象形式的屏蔽元素来代替这种数据。
这些技术还使发布者对在与他们的用户界面的用户会话期间收集的数据进行微调控制。一般而言,可以采用默认隐私方法,使得排除或屏蔽用户界面的所有内容,并且在用户会话期间仅收集结构数据。这种隐私保护回放使发布者能够看到终端用户与应用的交互,但是敏感的在屏幕上的数据不会被收集,不会被发送给第三方,或者不会被呈现给发布者,除非发布者明确地揭露了该数据。发布者可以简单地通过在回放期间与内容交互(例如,选择)或者提供指定要收集的内容的数据(例如,通过指定要收集的应用的特定视图)来容易地选择要收集或阻止的内容。例如,如果零售商决定想要查看放置在虚拟购物车中的商品数量,以查看用户如何与数量选择器交互和以评估数量选择器的功能,则零售商可以在用户会话之一的回放期间简单地选择数量选择器。当另一个客户随后查看相同的应用页面时,将记录使用数量选择器所选择的项目数量,以便回放该用户会话。零售商可以稍后简单地通过在用户会话的回放期间再次与数量选择器交互(例如,选择)来停止数量的收集。这都可以在后端(例如,在服务器上)处理,而零售商不必对网页或应用进行任何程序性更改。
发布者(例如,提供诸如网页和/或应用界面的用户界面的实体)通常想要使用户界面对用户友好,以便用户将具有积极的体验。拥有关于与给定用户界面(例如,网页或应用界面)的用户交互以及在与用户界面的用户会话期间发生的事件的信息可以帮助发布者快速标识可以被更改以改善用户体验的用户界面的各方面。可以使用与用户界面的实际用户交互来标识这些方面,从而无需进行外部用户调查或依赖关于用户界面的主观反馈。更确切地说,用户与用户界面的实际记录的交互和/或基于交互特性的这些用户交互的分类揭示了可以被更改以改善用户体验的用户界面的区域。
本文档描述了用于防止收集指定内容(例如,可能包括敏感或隐私数据的内容)的技术,同时仍然能够收集关于在客户端设备处呈现的用户界面元素的详细信息,以及关于用户在客户端设备处与哪些用户界面元素交互的信息,以便于用户会话的回放。可以在用户会话的回放中用具有相同大小的内容替换敏感或隐私数据,使得回放中呈现的(多个)用户界面反映实际用户会话期间呈现的(多个)用户界面。例如,如果用于替换文本的元素的大小大于实际文本,这可能导致其他用户界面元素被不正确地呈现,例如,在彼此之上或在屏幕上的不正确位置,这导致在客户端设备处实际呈现的内容的不准确表示。
图1是用户与用户界面交互的示例环境100的框图。示例环境100包括网络102,诸如局域网(LAN)、广域网(WAN)、互联网、移动网络或其组合。网络102连接用户设备106、应用开发者108和评估装置150。示例环境100可以包括许多不同的用户设备106和应用开发者108。
用户设备106是能够通过网络102请求和接收资源的电子设备。示例用户设备106包括个人计算机、移动通信设备以及可以通过网络102发送和接收数据的其他设备。用户设备106通常包括用户应用(诸如网络浏览器)以便于通过网络102发送和接收数据。用户设备106还可以包括其他应用107,诸如运行在移动设备上的本地移动应用。移动应用可以包括为特定平台或特定设备开发的本地应用,例如,为iOSTM开发的应用和/或为AndroidTM开发的应用。
应用107可以通过网络102向开发应用107的应用开发者108提交内容请求112。例如,当用户打开应用107时,应用107可以请求由应用的用户界面呈现的图像、文本、视频、图形或其他内容。应用开发者108可以具有一个或多个内容服务器109,该一个或多个内容服务器109提供来自一个或多个内容存储110(例如,存储器存储设备(诸如硬盘驱动器、闪存))的应用内容114来响应内容请求。应用107也可以在用户设备106处存储内容。例如,每次(或多次)打开应用107时通常呈现的文本、(例如,图标或标志的)图像和其他类型的内容可以存储在安装或执行应用107的用户设备106处。该内容可以被临时存储,或者只要应用被安装在用户设备106处就可以被存储。
应用107可以包括插桩(instrumentation)模块121(例如,插桩代码),该插桩模块121收集、存储和发送表示由应用107的用户界面呈现的内容和与用户界面的用户交互的数据。当应用107运行时,插桩模块121可以收集数据并将该数据存储在用户设备106处。插桩模块121可以(例如,通过编码数据)压缩数据并例如周期性地或基于收集和/或压缩的数据量来将数据提供给评估装置150。
在一些实现方式中,插桩模块121是应用107的插件,在应用107启动时(或之前)被启动。具体地,插桩模块121可以是由第三方(例如,不同于开发和提供该应用的实体)提供的单独应用,并且当应用107在用户设备106上运行时,插桩模块121收集表示在用户界面处呈现的内容的数据。在运行时,插桩模块121可以收集数据并将数据存储在用户设备106处。
在一些实现方式中,应用开发者108(或诸如与评估装置150相关联的实体的另一实体)可以通过在应用107的构建文件中包括几行代码(例如,而不是必须插桩应用107的源代码)来使得插桩模块121由应用107启动。例如,该代码可以标识在哪里可以找到插桩模块121模块(例如,插桩模块121的位置的URL)和/或指示构建系统将插桩模块121包括在应用107中的代码。
在一些实现方式中,插桩模块121包括每次启动应用107时启动的库(或以每次启动应用107时启动的库的形式)。例如,如果应用107是运行在iOSTM上的应用,则插桩模块121可以包括每次在用户设备106处初始化应用107时启动的iOSTM库。开发者可以将库添加到应用107,并将对库的引用添加到应用的信息属性文件(例如,iOSTM中的应用的属性列表),并且每次启动应用107时,插桩模块121可以启动。
如下面更详细描述的,插桩模块121可以从评估装置150或另一个源下载白名单122,白名单122指定可以在用户会话期间收集并提供给评估装置150的内容。每次启动应用107时,插桩模块121可以下载白名单122,使得插桩模块121使用当前的白名单,并且使得白名单122可以根据需要频繁地更新,而不必更新应用107的代码。在一些实现方式中,客户端设备记录的唯一内容是白名单122中指定的内容。默认情况下,可以将某些内容列入白名单,例如总是被包括在应用中的内容,例如不是特定于用户的而是呈现给应用的所有用户的标志或文本。这种内容可以通过分析应用的编译代码来标识。例如,应用的编译代码可以包括对总是由应用或由应用的特定应用页面显示的图像、文本或其他内容的引用。
应用开发者还可以将内容添加到白名单中,例如,通过向白名单添加应该从中收集内容的特定视图。这使得开发者能够标识不敏感的内容,并且这将有助于基于包括该内容的用户会话的回放来分析用户界面。
插桩模块121可以包括进行以下的各种模块:收集与应用107呈现的用户界面相关的数据、编码和/或压缩数据、以及将数据发送到评估装置150。例如,如在2018年7月17日提交并通过引用并入本文的美国专利申请No.16/038,002中所述,插桩模块121可以包括视图扫描仪、数据收集器和画布记录器。这些组件可以周期性地收集应用的用户界面的当前帧的数据,并逐帧地存储数据。出于本文档的目的,帧表示用户界面在给定时间点的状态。例如,用户界面可以随着用户与应用交互而更改,并且每个帧可以表示用户界面在相应给定时间点的状态。在一些实现方式中,每个组件可以每秒以给定次数收集其数据。每次收集数据时,组合数据是用于应用的用户界面的特定帧的,并且可以被存储在用于该特定帧的帧束129中。帧束129是给定帧的数据收集,并且可以包括表示由用户界面为特定帧显示的内容的数据。
视图扫描仪可以是在启动插桩模块121时被初始化的线程,视图扫描仪可以从应用107的呈现层次130获取数据。呈现层次130可以是视图树的形式。视图树可以包括用于生成应用的用户界面的视图组和各个视图的层次。例如,视图可以是文本视图或图像视图,并且视图组可以包括多个视图,诸如文本视图和图像视图。每个视图可以指定类,类实现用于该类的特定实例的该类的视图和属性(例如,文本的尺寸、类型或字体、元数据等)。视图扫描仪可以基于视图树130中包括的数据,在给定时间从应用107的视图树中标识在应用107的用户界面中呈现的视图以及每个视图的内容。
视图扫描仪可以迭代通过每个顶层窗口,并迭代通过附接到每个窗口的每个视图,例如以深度优先的顺序。对于每个视图,视图扫描仪可以收集数据,诸如在视图的屏幕上的位置、视图的阿尔法(alpha)透明度、视图变换以及其他适当的数据。如下所述,画布记录器可以捕获每个视图的内容。
对于文本视图,视图扫描仪可以收集由文本视图呈现的实际文本、每个文本字符串(例如,每行文本)的大小以及文本字体的特性(例如,字体的类型、颜色和/或大小)。视图扫描仪可以使用一个或多个功能来获取文本字符串的大小。例如,在AndroidTM中,视图扫描仪可以使用getTextBounds方法或类似的功能来获取限定文本字符串的矩形的大小。这个矩形表示文本字符串的高度和宽度。即,矩形的高度可以从文本字符串中延伸最低的字符的底部延伸到文本字符串中延伸最高的字符的顶部。矩形的宽度也可以从最左边的字符延伸到最右边的字符。视图扫描仪还可以使用measureText方法或类似的功能来获取文本字符串的宽度。
在一些实现方式中,视图扫描仪还可以使用操作系统的功能来获取文本视图中每个文本字符串的基线和上升。基线是一条假设的线,文本字符串的字符停留在这条线上,而上升是从基线到最高字符顶部的距离。这可以在回放期间用来创建表示屏蔽(例如,非白名单)文本的屏蔽元素。例如,如果表示文本的框的高度从基线延伸等于上升的距离,而不是高度等于上升加上下降(从基线到最低字符的底部的距离),则该框可能更美观,并且是更准确的文本替换。
视图扫描仪还可以为每个视图分配唯一标识该视图的标识符。该唯一标识符可以对应于(例如基于)视图及其对应数据存储在存储器中的位置。
视图扫描仪还可以标识并丢弃剪辑的视图,例如不可见或被其他视图阻挡的视图。视图扫描仪123可以基于窗口内的视图的大小、位置和层次来标识完全遮挡的视图。视图扫描仪可以排除完全遮挡视图的数据,因为这些视图不会呈现在用户设备显示器上并且不需要准确回放。这可以减少收集和存储数据所需的资源量,并减少通过网络发送数据时消耗的带宽量。
对于由视图扫描仪跟踪的每个视图(例如,由视图扫描仪获取数据的每个视图),画布记录器可以获得描述由用户设备106显示的视图的内容的数据。在一些实现方式中,画布记录器125是画布类的子类。例如,如果应用107是AndroidTM应用,则画布记录器125可以是AndroidTM画布类的子类,其在内部将数据记录到二进制缓冲区。虽然可以将画布子类传递到绘制方法(例如,Android的onDraw())中,但应用107可以包括分散在其他地方的一些绘制逻辑,例如,在其他绘制方法(诸如Android的dispatchDraw和/或drawChild方法)中。
绘制方法可在插桩时用一种或多种反射技术来插桩,以捕获方法的绘制代码,使得该代码可用于确定使用绘制方法在显示器上绘制了什么。例如,通过生成fsSuperDispatchDrawStub和fsSuperDrawChild,可以在ViewGroupRewriter中插桩诸如dispatchDraw和drawChild的Android绘制方法。例如,插桩模块121可以在插桩时使用一种或多种反射技术来插桩ViewGroupRewriter。
插桩模块121还可以检测点击(为简洁起见,旨在包括贯穿本文档的触摸屏上的轻击或按压)和其他用户交互,诸如在应用107的用户界面处的指针移动、用户点击、用户轻击、用户滑动、缩放、滚动、聚焦或文本输入。在AndroidTM中,点击是导致OnClickHandler功能被触发的任何操作。一般来说,这些功能是与视图的“被按压”状态从假到真或真到假的转换一起触发的。因此,点击可以在插桩代码中被定义为被按压状态在任一方向上的转换。
在另一个示例中,如在2019年3月29日提交并通过引用并入本文的美国专利申请No.16/370,574中所描述的,插桩模块121可以包括视图扫描仪(视图扫描仪可以包括窗口扫描仪和PDF扫描仪)和事件检测器。窗口扫描仪可以获取指定应用的用户界面的结构和布局的数据。窗口扫描仪可以周期性地获取该数据,以便该数据可以用于回放用户会话。该数据可以包括指定窗口和窗口视图的布局的数据(例如,每个窗口和视图在屏幕上的位置)以及窗口和视图的属性(例如,用于生成视图的一个或多个类以及(多个)类的(多个)属性,诸如尺寸、文本类型或字体、元数据等)。
在iOSTM中,视图是在用户界面的一部分内(例如,在用户界面的窗口内)生成其自身的视觉表示的对象。每个窗口可以包括一个或多个视图。每个视图可以包括窗口的几何形状区域(例如,矩形),在该区域中视图生成视觉表示。视图可以使用将文本、图像、视频或其他内容绘制到用户界面的一个或多个绘制操作来在用户界面上生成其自身的视觉表示。
在一些实现方式中,窗口扫描仪为每个窗口获取一个或多个呈现层次130,每个呈现层次130指定用于生成用户界面的窗口的呈现对象(例如,视图和/或层)的层次。如此处所使用的,呈现对象是加载(例如,绘制内容)并可选地检测用户交互事件(例如,对象内的鼠标点击或触摸事件)的本地应用的对象。iOSTM中的示例呈现对象包括视图和层。
窗口扫描仪可以为每个窗口获取指定呈现对象的层次的数据。例如,窗口扫描仪可以为每个窗口获取指定视图的层次(例如,视图树)的数据和/或指定层的层次(例如,显示层树)的数据。窗口或视图可以包括以树状层次排列的子视图,其中窗口是树的根。例如,视图可以包括带有文本的子视图和另一个包含图像的子视图。每个视图还可以与按层次排列的一个或多个层相关联。在运行在iOSTM上的本地应用的一些实现方式中,窗口扫描仪可以从UIView类获取指定视图的结构和布局的数据。窗口扫描仪还可以为每个视图分配唯一标识该视图的标识符。该唯一标识符可以对应于(例如基于)视图及其对应数据存储在存储器中的位置。
窗口扫描仪可以使用呈现层次来标识用于生成使用绘制操作的呈现对象的绘制操作。在一些实现方式中,窗口扫描仪使得每个呈现对象(例如,视图和/或每个层)将其自身绘制到屏幕外绘制上下文、屏幕外缓冲区或其他屏幕外位置。在某些版本的iOSTM中,绘制操作通常在称为上下文的核心图形中的类似PDF对象中执行。上下文表示绘制目的地,并包含绘制系统执行任何后续绘制命令所需的信息。每个呈现对象可以将其自身绘制到呈现在用户设备106的显示器上的屏幕上下文。
窗口扫描仪可以使每个呈现对象也将其自身绘制到未在用户设备106的显示器上呈现的PDF图形上下文。PDF图形上下文是iOSTM支持的上下文。窗口扫描仪124可以通过向视图提交将其自身绘制到PDF图形上下文的请求来使视图或层将其自身绘制到PDF图形上下文。当视图和/或层将它们自己绘制到PDF图形上下文时,生成包括用于绘制呈现对象的每个绘制操作的数据的PDF文档。例如,当特定视图或层将其自身绘制到PDF图形上下文时,iOSTM的核心图形PDF引擎会将特定视图或层的绘制操作转换为PDF命令。PDF引擎可以将转换后的PDF命令存储在PDF文档中。
窗口扫描仪124可以在每次窗口扫描仪迭代通过呈现层次时创建新的PDF文档。例如,窗口扫描仪124可以基于指定的时间段(例如,每200毫秒、每300毫秒或另一适当的时间段)周期性地获取用户界面的结构和布局(例如,视图树和/或显示层树)。每个周期的视图树和/或层树表示用户界面在给定时间点的帧(或快照)。出于本文档的目的,帧表示用户界面在给定时间点的状态。例如,用户界面可以随着用户与应用交互而更改,并且每个帧可以表示用户界面在相应给定时间点的状态。
窗口扫描仪可以迭代用户界面的每个窗口,并且对于每个窗口,迭代窗口的呈现层次,并且为每个获取的用户界面结构生成PDF文档。以这种方式,窗口扫描仪124可以为用户界面的每个帧在用户会话期间生成表示该帧(但不存储用户界面的屏幕截图)的PDF文档。存储和压缩用于绘制操作的数据而不是实际屏幕截图的位图或像素数据可以显著减少用于存储数据的存储器量和用于将数据从用户设备106发送到评估装置150的带宽量。
帧的PDF文档可以包括用于在由帧表示的给定时间点生成用户界面的绘制命令列表。在一些实现方式中,窗口扫描仪可以使用每个对象的绘制命令的开始和结束处的标记来标记PDF文档中的呈现对象(例如,视图和/或层)之间的边界。例如,在特定的呈现对象将其自身绘制到PDF图形上下文之前,窗口扫描仪可以向PDF文档写入唯一的标记,该标记信号通知特定呈现对象的绘制命令的开始。类似地,在特定呈现对象的最后一个绘制命令被记录在PDF文档中之后,窗口扫描仪可以向PDF文档写入唯一的标记,该标记信号通知特定呈现对象的绘制命令的结束。PDF还可以包括文本矩阵,该文本矩阵指定每个视图中的每个文本字符串的位置。
在一些实现方式中,窗口扫描仪为每个视图创建新的PDF页面。例如,窗口扫描仪可以使核心图形PDF引擎开始新的PDF页面来标记PDF文档中的每个呈现对象的边界,而不是使用如上所述的开始和结束标记。在此示例中,帧的PDF文档可以包括帧的每个呈现对象的页面。
在一些实现方式中,窗口扫描仪还可以标识并丢弃剪辑的呈现对象,例如不可见的视图或层或者被其他视图或层阻挡的视图或层。例如,应用107可以在给定时间在屏幕上具有多个分层视图。在某些情况下,视图树的大部分被视图树的其他部分完全遮挡。窗口扫描仪可以基于窗口内的呈现对象的大小、位置和层次来标识完全遮挡的呈现对象。例如,如果两个呈现对象在显示器上重叠,并且基于层次,一个在另一个的前面,则在后面的一个将至少部分地被遮挡。窗口扫描仪可以排除完全遮挡的呈现对象的数据,因为这些呈现对象不在用户设备的显示器上呈现,并且不需要准确回放。如果呈现对象被部分地遮挡,则窗口扫描仪可以包括呈现对象或可见部分的数据。
PDF扫描仪可以分析所生成的PDF文档,并为每个呈现对象(例如,为每个视图或层)标识对应的绘制操作。例如,PDF扫描仪可以使用PDF文档中的标记来确定哪些绘制操作对应于每个呈现对象。对于每个呈现对象,PDF扫描仪可以在PDF文档中标识呈现对象的开始标记和结束标记。PDF扫描仪可以将PDF文档中开始标记和结束标记之间的每个绘制操作分配给呈现对象,并将数据存储在例如将每个绘制操作映射到其对应的呈现对象的FlatBuffer中。
窗口扫描仪可以给每个帧分配唯一的标识符和/或时间戳信息(或顺序排序信息)。时间戳信息可以表示由帧表示的用户界面呈现在用户设备106的显示器上的实际时间。顺序排序信息可以表示在用户会话期间该帧相对于呈现的其他帧的呈现时间。在帧中呈现的每个呈现对象和/或在帧中检测到的每个事件也可以由窗口扫描仪、唯一标识符和/或对应的时间戳或顺序排序信息来分配,使得在回放期间可以以正确的顺序呈现每个帧的呈现对象和事件。
在一些实现方式中,PDF扫描仪使用字形映射技术来确定由PDF文档中的绘制操作呈现的文本。例如,示出PDF操作的文本可以使用不代表精确Unicode字符的占位符字符。为了检索被绘制到PDF文档的实际Unicode字符,PDF扫描仪可以解析嵌入的字符映射(例如,CMap),该字符映射以子集化的字体存储在PDF文档中。这个字符映射可以采用PDF和CMap规范指定的各种形式。PDF扫描仪可以向窗口扫描仪提供每个文本绘制操作的数据,以便与绘制文本的呈现对象相关联。
PDF扫描仪还可以使用宽度映射技术来确定由PDF文档中的绘制操作呈现的文本字体的实际打印宽度。PDF扫描仪可以解析PDF文档中嵌入的字体的字符宽度列表,以确定实际打印宽度。在某些情况下,示出PDF操作的文本没有明确使用空格。相反,通过使用字符之间异常大的字符间间隙来创建空格。插桩模块121可以在起始时(例如,当启动应用107时)将字体写入测试PDF,以测量该字符间间隙,并将其缓存以供PDF扫描仪将来用作空间检测阈值。
在一些实现方式中,插桩模块121可以使用方法调配技术来跟踪来自资源级别的图像出处(例如,可以从它们的原始形式裁剪或着色图像)、跟踪用户输入事件(例如,触摸、按钮点击等)、以及实现网络视图的插桩代码。方法调配可以用在Objective-CTM应用中,并且涉及将在运行时的方法实现方式指针切换到框架或用户代码的交换或填充实现方式。一般而言,填充是可以拦截消息或调用(例如,API调用)并处理调用本身或将调用重定向到别处的库。
插桩模块121可以调配用于绘制图像、处理用户输入事件的方法的集合和/或其他适当的方法。例如,当启动应用107时,插桩模块121可以访问要被调配的方法列表。插桩模块121可以确定应用107是否使用列表中的任何方法,并且如果是,则调配与列表中的方法匹配的应用107的方法。
可以使用调配来减少用于存储由应用107呈现的图像的存储器存储量以及将图像发送到评估装置150的带宽量。调配可以减少可以由应用107多次呈现的图像被上传到评估装置150的次数。例如,图像可以被上传一次,例如,当应用107第一次在用户设备106上初始化时。此后,可以使用图像的占位符标识符来引用图像,而不是在每次绘制操作将图像绘制到PDF图形上下文时上传图像。
在iOSTM中,图像在加载到在屏幕上绘制的过程中可能会经过许多不同的变换。对于每个变换操作(包括可能不是来源于资产的图像),窗口扫描仪124可以从输入图像中读取旧的出处元数据,并将新的出处元数据添加到旧的出处数据中。这样,窗口扫描仪124可以创建可以从图像中读取的元数据链。出处数据可以指示图像的来源(例如,图像的网址)和指定对图像进行的任何调整(例如,裁剪、着色等)的数据。
在一些实现方式中,插桩模块121可以使用方法调配来标识视图或层中的现有绘制信息何时被无效。插桩模块121可以标识并调配视图无效方法来确定视图何时请求重新绘制。例如,每个无效视图可以在每个绘制周期重新绘制。如果视图尚未失效,则可能不需要重新绘制视图。通过调配视图的无效方法,插桩模块121可以确定在下一个绘制周期期间要重新绘制哪些视图。窗口扫描仪可以使用该信息来跳过对视图显示信息尚未无效的视图的扫描,因为这指示视图尚未更改。通过跳过未更改的视图,减少了通过网络102编码和发送的数据量。
事件检测器可以使用手势和/或轻击标识器类来检测在应用107的用户界面上发生的用户界面事件(例如,轻击、触摸、滑动等)。例如,事件检测器可以使用UIGestureRecognizer和/或UITapGestureRecognizer类来(例如通过调配这些类)检测用户界面事件的发生。事件的数据可以与事件发生的(多个)帧一起存储。这些数据可以包括事件本身、事件的发送者、事件的目标以及响应事件要执行的动作。该数据还可以包括时间戳信息,使得事件的数据可以与(例如,在用户会话的回放期间的)其他数据相协调。该数据还可以包括事件的选择器路径(例如,完整的选择器路径)。选择器路径可以指定呈现层次中的每个呈现对象,该呈现层次包括绘制发生事件的对象的呈现对象。
为了获取事件的选择器路径,事件检测器126可以拦截某些方法,诸如iOSTM的sendAction方法。sendAction方法包括参数,这些参数包括以下内容:包括关于发起动作消息的事件的信息的UIEvent对象、发送消息的发送者对象(例如,调用sendAction方法的UIControl对象)、要接收动作消息的目标对象、以及标识动作方法的选择器。发送者对象通常是用户触摸或选择的对象(例如,按钮)。事件检测器126可以从发送者对象向上走,并构建包括呈现层次中的每个呈现对象的选择器路径,该呈现层次包括绘制发送者对象的呈现对象。事件检测器126可以存储(包括事件本身、发送者对象、目标对象和选择器路径的)每个事件的数据,并将数据提供给帧编码器127。
插桩模块121可以将用于事件的选择器和用于呈现对象的选择器映射到对应的虚拟HTML元素。例如,插桩模块121可以尝试将视图类和(事件和视图树的)属性映射到对应的虚拟HTML元素。在一些实现方式中,插桩模块121将iOSTM属性“accessibilityIdentifier”(其将唯一标识符与用户界面中的元素相关联)映射到HTML属性“id”(其为HTML元素指定唯一标识符)。插桩模块121还可以将iOSTM属性“accessibilityLabel”(其是可访问性元素的标签)映射到HTML元素“label”(其表示项目的说明文字)。
插桩模块121还可以生成属性以包括在呈现对象的选择器中。例如,如果呈现对象是iOSTM故事板的部分,则插桩模块121可以生成属性“tag”和属性“storyboard”属性,属性“tag”是标识视图对象的整数,属性“storyboard”指定在其中创建视图的故事板。例如,来自“Main”故事板的名为“MyCustomLabel”的类的虚拟选择器可能具有看起来像如下的虚拟选择器:“MyCustomLabel#name_label[story_board=“Main”][tag=“1”][label=”Fullname”]”。通过将iOSTM属性映射到HTML元素,可以用虚拟HTML元素来索引事件和视图,以便用户可以搜索特定类型的事件,并检索事件发生的用户会话的回放数据。
以这种方式使用虚拟属性使得插桩模块121能够生成作为模拟视图层次的虚拟DOM。移动层次中的每个视图都被映射到一个虚拟的类似HTML的元素,具有来自某些本地移动API的属性。虚拟元素的标签名可以从移动平台中的视图的类名映射而来。例如,iOSTM应用中的UITextView可以创建一个虚拟元素,其标签名看起来像“<UITextView…>”。对于AndroidTM TextView,插桩模块121可以创建标签名为“TextView”的虚拟元素。AndroidTM类可以在名为“package”的属性中包含视图的Java包。“TextView”的虚拟元素可能看起来像“TextView package=“android.widget…>”。将匹配上述视图的选择器规则是基于映射的“TextView[package=“android.widget”]”和“UITextView”。
因为移动应用通常在视图上没有自定义属性,所以可以创建许多伪属性。然而,这些对于最终用户来说可能还不够。对此的解决方案是API的集合,允许应用开发者为他们的移动应用向视图层次添加属性和类,并重命名模拟的标签名称或视图。虚拟属性与其他选择器(例如用于网页的选择器)无缝集成。
虚拟属性可以在用户会话期间被记录为在用户会话期间收集的结构数据的部分,例如作为视图树的部分。这使得发布者能够搜索其中呈现了具有特定属性的特定视图和/或用户界面元素的用户会话。这也可以使发布者能够为应用的白名单中包括的排除或屏蔽规则指定特定属性或视图。
如上所述,插桩模块121可以下载白名单122,白名单122指定可以在用户会话期间收集并提供给评估装置150的内容。白名单122可以指定用户界面元素,例如视图,其内容可以被收集并发送到评估装置150。例如,白名单122可以指定AndroidTM和iOSTM实现方式中的视图的集合。在一些实现方式中,白名单122包括规则的集合。这些规则可以包括排除规则和屏蔽规则。排除规则可以指定视图(及其子树)是否要从发送到评估装置150的数据中完全移除。屏蔽规则可以指定是否要用内容的不可逆变换(或至少难以反转)表示(例如屏蔽文本的散列或屏蔽图像的模糊或单色图像)来替换内容。如果要屏蔽内容,则插桩模块121可以在将内容发送到评估装置150之前屏蔽该内容,使得实际的屏幕上内容永远不会被发送到评估装置150。这允许被屏蔽的和被记录的视图以不可能具有被排除的视图的方式相互嵌套。
在一些实现方式中,白名单122指定被排除、被屏蔽和/或未被屏蔽的视图的标识符。例如,这些标识符可以是用于生成视图的类(或其他对象)的名称。例如,如果发布者认为某个特定类从不包含敏感信息,则发布者可以将该类的名称包括在应用的白名单中。白名单可指定可用于创建视图或视图的特定部分的其他编程对象,可从该视图或视图的特定部分中收集内容以在回放期间呈现。这可以对收集哪些内容以及屏蔽或排除哪些内容提供更细粒度的控制。例如,插桩模块121可以将规则应用于视图、层、视图树中的其他元素、特定的绘制命令或功能、和/或导致应用在用户会话期间将内容绘制到屏幕的其他呈现对象组。
应用开发者108可以为他们的应用的用户界面指定白名单125。例如,应用开发者108可以选择视图,从这些视图中可以收集内容并将其从用户设备106提供给评估装置150。在一些实现方式中,应用开发者108可以为其用户界面生成白名单,并将该白名单提供给评估装置150。应用开发者108还可以指定用户界面特定的白名单。例如,主页的白名单可以不同于帐户概览页面的白名单。如下面更详细描述的,应用开发者108可以通过用其用户界面与用户会话的回放进行交互来生成和更新其(多个)白名单。
在一些实现方式中,黑名单可以取代白名单。例如,如果黑名单指定特定视图内的内容不能被收集和发送到评估装置150,则即使嵌套视图被列入白名单,应用插桩模块121也不会发送包括在嵌套在黑名单视图中的视图中的内容。每个应用开发者108可以为其用户界面指定一个或多个白名单和一个或多个黑名单。
当记录用户会话的数据时,插桩模块121可以将在用户会话期间呈现的每个视图(例如,视图的标识符)与白名单122和/或其规则进行比较,以确定视图的内容是否可以被发送到评估装置150。如果排除了视图,则可以(例如,在生成(如下所述的)帧束129之前)从数据中移除视图及其子树。如果视图被屏蔽,则插桩模块121可以变换视图的内容并用内容的变换版本替换该内容,使得实际的屏幕上内容不被发送到评估装置150。
对于屏蔽视图的文本,插桩模块121可以生成不反映在用户会话期间呈现的文本的实际内容的文本表示。例如,插桩模块121可以使用散列功能来生成要被屏蔽的文本的散列。以这种方式,相同的文本产生相同的散列,并且可以用于在帧之间进行插值,如下所述。在另一个示例中,随机文本可以用作在要被屏蔽的视图中呈现的文本的占位符。在另一个示例中,可以不包括替换文本,因为每个文本字符串的大小可以用于为每个文本字符串生成屏蔽元素,如下所述。
插桩模块121还可以使用屏蔽标志来标志要被屏蔽的文本表示。例如,插桩模块121可以在包括文本的视图的数据中包括屏蔽标志。这使得评估装置150能够确定哪个文本是其他文本的表示,并呈现屏蔽元素(例如,条)来代替该文本。
对于屏蔽视图的图像,插桩模块121可以生成替换图像或替换像素集合以及对应的颜色来表示该图像。一般而言,插桩模块121可以生成图像的低保真度表示来填充图像的呈现空间,而不允许视图区分图像的实际内容。例如,插桩模块121可以评估图像以标识图像中的主色。这种主色可以是图像中的最大数量像素的颜色。主色也可以使用算法(例如使用图像中的颜色的直方图)来标识。插桩模块121可以用都具有主色的像素的位图(或其他图像表示)来替换该图像。
在另一示例中,插桩模块121可以对图像的指定数量的像素进行采样,并使用采样的像素生成替换图像或图像的表示。例如,插桩模块121可以对要被屏蔽的图像的九个(或另一数量的)像素进行采样,并使用这九个像素生成3×3位图。在该示例中,像素可以以与要被屏蔽的图像相同的排列方式排列在3×3位图中。也就是说,位图的左上像素可以对应于要被屏蔽的图像的左上采样像素,位图的上中心像素可以对应于要被屏蔽的图像的上中心采样像素,等等。以这种方式,位图可以在回放期间被缩放到屏蔽图像的大小,并且将提供图像内容的某种指示,而不呈现任何隐私或敏感内容。使用任何一种形式的屏蔽,插桩模块121可以在该图像的绘制操作中用屏蔽表示来替换实际图像。
对于屏蔽图像,插桩模块121可以在发送到评估装置150的帧束129或其他数据中包括指定该图像是在用户会话期间呈现的图像的屏蔽表示的数据。例如,该数据可以是用绘制操作或图像表示设置的屏蔽标志。在回放期间,评估装置150可以检测屏蔽标志(或其他数据)并在回放期间在其对应位置生成图像的屏蔽版本。例如,评估装置150可以将(多个)像素缩放到与它所表示的图像大小相同的屏蔽图像,并且在用户会话期间呈现该图像的相同位置呈现该屏蔽图像。
这种技术也可以用于白名单图像,例如在带宽有限的情况下。为了节省带宽,可以发送单个像素或几个像素的采样来代替图像。当带宽提高时,插桩模块121可以向评估装置150发送实际的白名单图像。在该示例中,评估装置150可以使用屏蔽标志来确定实际图像是否可用,例如,是否在稍后的传输中接收到。如果没有设置屏蔽标志,指示图像没有被屏蔽(例如,包括在白名单视图中),则评估装置150然后可以确定在稍后的传输中是否接收到实际图像。由于准确回放或分析用户界面的质量可能不需要实际图像,这可以在任何时候使用,而不仅仅是在带宽有限的时候。
在一些实现方式中,插桩模块121可以例如使用光学字符标识技术来标识图像中的文本。如果非白名单视图中的图像包括文本,则如上所述,插桩模块121可以使用散列或随机文本来屏蔽该文本。插桩模块121还可以确定文本的位置,并将位置信息包括在帧束129中。在回放期间,可以在呈现原始文本的图像中呈现文本的屏蔽表示。在特定示例中,非白名单内容可以类似于线框来呈现,如图3所示。
插桩模块121可以使用技术来减少收集和处理将被发送到评估装置150的数据所需的计算资源量。例如,插桩模块121可以在用户会话期间监视视图,以确定是否有任何视图变得无效,这意味着视图的内容已经更改并且需要在屏幕上重新绘制。如果视图没有被无效,则插桩模块121可以避免生成任何非白名单视图的内容的屏蔽表示,因为视图的内容在它们变为无效之前是相同的。
插桩模块121包括帧编码器127和上传器128。帧编码器127可以从其他模块接收数据,并生成包括数据或数据的压缩版本的帧束129。每个帧束129可以包括一个或多个帧的数据。帧编码器127可以在将数据发送到评估装置150之前对帧的数据进行编码和/或压缩。例如,帧编码器127可以使用二进制编码对每个帧束129的数据进行编码。帧编码器127可以以FlatBuffer格式存储每个帧束。帧编码器127可以将每个帧束129发送到上传器128。进而,上传器128通过网络102将帧束129发送到评估装置150。
评估装置150可以将每个帧束129存储在会话数据存储152中,并使用该数据来生成回放数据140和会话活动数据142,如下所述。评估装置150还可以索引帧和每个帧的用户界面事件,使得用户(例如,应用开发者108)可以搜索其中发生了特定事件的用户会话。例如,可以用选择器和描述事件的数据来索引每个事件。这样,用户可以搜索其中特定对象(例如,按钮)被选择的事件,因为对象是事件的选择器路径的部分。
评估装置150从用户设备接收帧束129,并为每个用户会话生成用户会话的回放数据140和会话活动数据142。评估装置150可以向开发了发生用户会话的应用107的应用开发者108提供回放数据140和会话活动数据142。
回放数据140向应用开发者108呈现用户会话期间应用107a的视觉改变以及会话期间发生的其他用户活动(例如,鼠标移动)。应用107a的视觉更改的至少一部分对应于在用户会话期间呈现层次的改变和为呈现层次的每个呈现对象呈现的内容的改变。例如,回放数据140可以示出应用开发者108指针(例如,鼠标或手指)在应用107a上的移动、对列表164中的项目的用户点击(包括轻敲或按压),以及用图像166替换图像162。在该示例中,用图像166替换图像162可以对应于图像视图从在一帧中呈现图像162到在后续帧中呈现图像166的更改。类似地,用文本161替换文本160可以对应于视图树的文本视图从在一帧中呈现文本160到在后续帧中呈现文本161的更改。
会话活动数据可以向应用开发者108呈现在用户会话期间发生的事件列表。例如,事件列表可以指定在用户会话期间发生了两个事件Ev1和Ev2。Ev1可以对应于应用107a的初始加载,而Ev2可以对应于对列表164中的项目的点击。当呈现用户会话的回放时(例如,显示鼠标移动和视觉更改),可以突出显示事件列表,以示出哪个事件对应于回放数据所呈现的视觉更改。例如,在用户会话的初始回放时,Ev1可以被突出显示,指示应用107a的视觉表示对应于应用107a的初始加载。一旦用户会话的回放到达用户点击列表164中的项目的点,Ev2可以被突出显示,指示用图像166替换图像162对应于点击列表164中的项目。如下面更详细讨论的,会话活动数据还可以包括对应于用户点击列表中的项目的上下文数据,例如被点击项目的文本,其中应用107a的更改对应于用户点击,和/或在用户会话期间发生的对其他应用用户界面的请求。
事件评估装置150可以使用为用户会话接收的帧束129中的数据来创建用户会话的回放数据140。在一些实现方式中,事件评估装置150通过使用指定帧中的呈现对象(例如,视图和/或层)的布局和结构的数据、用于生成帧的每个呈现对象的绘制操作、以及在由帧表示的用户界面的呈现期间发生的事件来重新绘制用户会话的每个帧,从而创建回放数据140。例如,事件评估装置150可以通过以下来绘制帧:标识帧的每个呈现对象,并基于用于生成由帧的帧束129中的数据指定的每个呈现对象的绘制操作在画布中渲染每个呈现对象。在特定示例中,评估装置150可以使用绘制操作的时间戳信息来按顺序处理每个绘制操作,并基于绘制操作重新创建呈现对象。例如,如果第一绘制操作是在第一位置呈现图像,而第二绘制操作是在图像下方的第二位置呈现文本说明文字,则评估装置150可以处理这些绘制操作,以在对应于第一位置的位置绘制图像,并在第二位置绘制文本说明文字。
例如,如果帧的呈现层次包括包含文本的文本视图,则评估装置150可以从视图树数据中标识文本视图及其显示位置,并且从帧束的文本表格和文本的标识符中标识文本。如果文本是用自定义字体渲染的,则评估装置150也可以使用分配给文本的字样来以其自定义字体渲染文本。评估装置150然后可以使用该数据在画布上绘制文本。评估装置150可以以类似的方式渲染其他类型的视图,例如图像视图。
评估装置150可以标识文本视图中的非白名单文本的表示。例如,评估装置150标识包括文本数据的视图树数据中的屏蔽标志,并基于屏蔽标志来确定呈现屏蔽元素来代替文本的表示。在另一个示例中,评估装置150可以检测文本的散列,并且响应于散列来确定呈现替代散列的屏蔽元素。
评估装置150可以基于每个文本字符串(如果可用的话)的大小信息或者PDF的文本矩阵来生成屏蔽元素。例如,评估装置150可以为每个文本字符串生成与限定在用户会话期间呈现的实际文本字符串的矩形大小相匹配的框。在另一示例中,评估装置150可以使用在用户会话期间呈现的文本字符串的宽度以及基线和上升信息来生成框,该框宽度等于文本字符串的宽度、以及高度等于上升并且被放置在基线处。在一些实现方式中,屏蔽条可以具有圆形边缘,可以在与该条所表示的文本相同的位置并以相同的大小呈现。
评估装置150还可以使用屏蔽标志来标识屏蔽图像。对于屏蔽图像,评估装置150可以将位图缩放到基于包含在视图数据中的尺寸信息而呈现的实际图像的大小,并且在用户界面中呈现实际图像的位置呈现缩放的位图。
评估装置150还可以导致与用户界面的用户交互的视觉呈现。例如,用户交互可以包括指针移动、用户点击、用户轻击、用户滑动、缩放、滚动、聚焦或文本输入。对于用户滑动,回放数据140可以包括表示基于连续帧束129中检测到的触摸点在一段时间内的滑动路径的数据。例如,帧束序列可以各自包括沿着滑动线的触摸事件,例如基于从检测到触摸事件的UIGestureRecognizer和/或UITapGestureRecognizer类获取的数据。评估装置150可以基于连续帧束129中的滑动位置来在帧之间对滑动的位置进行插值。例如,滑动的位置可以在由第一帧束表示的第一帧中的点A,并且滑动的位置可以在紧接着第一帧的第二帧中的点B。在该示例中,评估装置150可以在帧之间对滑动的位置进行插值,以呈现从点A到点b的滑动移动。评估装置150可以使用Hermite样条来估计显示器上的其他手势的滑动的移动。
在一些实现方式中,评估装置150可以在帧之间对用户界面的其他更改进行插值。例如,插桩模块121可以基于比回放期间帧之间的时间段更长的时间段来周期性地收集数据。在特定示例中,插桩模块121可以每秒五次(或以另一适当的速率)收集数据并生成帧束,并且可以每秒十帧来呈现回放。在该示例中,评估装置150可以在每对连续帧之间进行插值,以每秒回放十帧。例如,评估装置150可以对滚动、滑动、呈现层次的呈现对象的位置/大小的更改、画布转换、文本的更改和/或其他适当的内容进行插值。
当在帧之间进行插值时,评估装置150可以使用屏蔽文本的散列。由于散列对于相同的文本是相同的,评估装置150可以使用散列来确定相同的文本是在连续帧中的屏幕上的相同或不同的位置,还是通过将散列相互比较而被包括在相同或不同的视图中。这也允许评估装置150跟踪哪个视图正在呈现文本。
在一些实现方式中,评估装置150在网络浏览器环境中呈现回放数据。在该示例中,评估装置150可以将应用的画布转换成HTML画布。例如,评估装置150可以在回放之前将FlatBuffer编码的帧束解包为脚本(例如,JavaScript)格式。评估装置150可以例如在网络浏览器中实时回放用户会话,使得客户服务代表可以在与用户会话的用户讨论用户会话的同时查看回放。
评估装置150还可以为在用户会话期间发生的至少一些用户交互生成会话活动数据142。会话活动数据142可以指定例如发生的各种用户事件(例如,点击、文本输入、选择的图标等)的列表以及对应于用户交互的任何环境数据(例如,加速度计数据),例如,在用户会话期间由插桩模块121收集并存储在帧束中的环境数据。
图2A是在用户会话期间呈现的示例用户界面200的图示。用户界面200是由本地应用呈现的示例购物应用页面。用户界面200包括具有文本211的页面标题210(“示例购物应用”)。用户界面200还包括具有文本221(“项目1”)的元素220、具有文本231(“项目2”)的元素230、具有文本241(“数量”)和文本输入字段242的表单240、具有在菜单250中呈现的值251(“蓝色”)的下拉菜单250、以及具有文本261(“结帐”)的结帐按钮260。如虚线263所示,查看用户界面的用户将光标聚焦在数量表单240上,然后将光标移动到结帐按钮260上并选择结帐按钮260。
呈现用户界面200的用户设备可以例如以帧束的形式向图1的评估装置150提供数据。在该示例中,数据将包括指定呈现在用户界面200上的视图的布局和内容的视图树。该数据还将包括用户交互数据,该用户交互数据指定光标在数量表单240上的焦点、光标向结帐按钮260的移动以及结帐按钮260的选择。
如果包括文本的视图被列入白名单,则数据还可以包括用户界面200中呈现的文本。在该示例中,假设开发用户界面200的应用开发者的白名单是图1的白名单122。也就是说,白名单指定标题、表单和按钮视图中的内容被列入白名单。
现在参考图2B,其示出了用于图2A的用户界面的示例虚拟DOM 270的一部分。具体而言,虚拟DOM的部分示出了用于定义标题210的标题视图、定义数量表单240的表单视图、定义下拉菜单250的下拉菜单视图以及定义结账按钮260的按钮视图的语言的一部分。然而,虚拟DOM的该部分没有示出将被包括在用户界面200的虚拟DOM中的所有语言。
从虚拟DOM 270可以看出,页面标题210的文本211在标题视图中。因此,文本211是白名单内容。类似地,数量表单240的文本242在表单视图中,并且是白名单内容。另外,内容按钮260的文本261在按钮视图内,并且是白名单内容。因为下拉菜单350的文本351在白名单115未指定的选择视图内,所以文本351不是白名单内容。因此,在该示例中,文本211、文本242和文本261将被包括在发送到评估装置150的数据中。然而,文本251将从数据中被阻止,因为该文本不在白名单视图中。对于该示例的其余部分,假设基于包括文本的HTML文档270(未示出)的标签没有被白名单115指定,文本221和231也不是白名单内容。
图3是用于重放用户会话的示例交互界面300的图示。交互式界面300重放具有图2A的用户界面200的用户会话。例如,图1的评估装置150可以基于从呈现用户界面的用户设备接收的数据来生成用户会话的回放。
用户界面300包括接收用于标识会话的搜索标准的搜索字段302。例如,假设发布者对标识和/或查看用户点击给定网站(或原生应用)的结账按钮304期间的会话感兴趣,可以在搜索字段302中输入搜索短语“点击结账”。在提交搜索短语时(例如,输入和键入命令或点击提交按钮),对会话信息的请求被发送到评估装置150,评估装置150可以包括搜索装置。对会话信息的请求可以包括例如搜索短语、和请求会话信息的发布者的身份、和/或提供与请求相关联的上下文的其他信息。
响应于接收到对会话信息的请求,评估装置150可以使用搜索短语“点击结账”来标识用户点击了给定网站的结账按钮304期间的一个或多个会话。在一些实现方式中,评估装置150从用户会话的索引中标识响应于搜索短语的会话。例如,索引可以包括将用户动作“点击”和用户界面元素“结帐按钮”与用户点击“结帐”按钮304期间的会话相关联的一个或多个条目。
评估装置150响应于对会话信息的请求,向请求设备提供标识会话的数据。在一些实现方式中,评估装置150可以通过提供关于基于搜索短语标识的一个或多个会话的数据来响应对会话信息的请求。继续上面的例子,评估装置150可以提供基于搜索短语“点击结账”从索引中标识的会话308的列表。如图3所示,用户点击结账按钮的会话包括会话1、会话2、会话3、会话4、会话5和会话6。
评估装置150还可以响应于对会话信息的请求,为一个或多个所标识的会话提供回放数据和会话活动数据。例如,如图3所示,会话1是阴影的,指示会话1的回放数据可用于重放,并且会话1的会话活动数据可用于呈现。
用户界面300包括回放区域306,在回放区域306中,基于回放数据重放先前的会话。回放区域306包括回放条,该回放条包括播放/暂停部分310、计数器312和滑块部分314。播放/暂停部分310使得发布者能够通过与播放/暂停部分310交互来开始和停止会话的重放。计数器312提供会话的总持续时间(例如,1分50秒)和当前正在呈现的会话的一部分(例如,45秒)。滑块部分314使得发布者能够通过在滑块部分314内滑动滑动元件316来快速移动到会话的其他部分。继续上面的示例,回放区域306正在重放会话1,如会话列表中的会话1的阴影所示。
会话1的回放示出了基于从发生用户会话的用户设备接收的数据对图2A的用户界面200的重建。特别地,重放示出了对应于页面标题和文本211的具有文本311的页面标题310;对应于元素220和文本221的具有屏蔽元素321的元素320;对应于元素320和文本321的具有屏蔽元素331的元素330;对应于具有文本24和文本输入字段242的数量表单240的具有文本341和文本输入字段342的数量表单340;对应于具有文本251的下拉菜单250的具有屏蔽元素351的下拉菜单350;以及对应于具有文本261的结账按钮260的具有文本361的结账按钮360。
由于元素220和230的文本没有被列入白名单,所以该文本没有被收集并发送到评估装置150。因此,评估装置150生成屏蔽元素321和331以分别表示文本221和231。如上所述,屏蔽元素321和331可以基于包括文本的元素(即元素220和230)的大小来确定大小。这样,屏蔽元素321和331适合于在元素320和330内,类似于由屏蔽元素321和331表示的文本221和231。类似地,评估装置150包括替代下拉菜单350的文本251的屏蔽元素351,因为下拉菜单350的文本没有被列入白名单。基于下拉菜单的文本251的大小(例如,基于限定从用户设备发送到评估装置的数据中包括的文本251的矩形的大小),来确定该屏蔽元素351的大小。屏蔽元素可被生成为类似于应用的用户界面的线框,例如,线框示出了用户界面元素在用户界面内呈现的位置以及用户界面元素的大小,但没有用户界面元素的实际内容(例如,实际文本)。
一些屏蔽元素可以包括多个屏蔽元素来表示文本字符串。例如,可以使用相应的屏蔽元素来屏蔽句子中的每个单词。当生成屏蔽元素时,评估装置150可以在每个单词的开头开始新的屏蔽元素,并且当遇到指示单词结尾的空格或标点时结束屏蔽元素。
文本311、341、342和361被包括在回放中,因为它们对应的用户界面元素的内容被列入白名单。在该示例中,用户界面200的发布者可能想要查看用户如何更改数量表单240中的数量,以确保该表单正常工作,并且用户能够没有错误或挫折地指定他们期望的数量。但是,所购买的物品可能被视为敏感信息。因此,表示项目的文本221和231没有被列入白名单,并且在用户会话的回放中使用屏蔽元素321和331来屏蔽文本221和231。
用户界面300包括会话活动区域370,在该会话活动区域370中,基于会话活动数据来呈现正在重放的会话期间发生的活动。例如,会话活动区域370呈现诸如以下的信息:正在重放的会话发生的时间(例如,一天、日期、一天中的时间、和/或一年)、用于进行用户会话的浏览器类型、用户会话发生的设备的互联网协议(IP)地址和/或用户会话发生的用户设备的地理位置。会话活动区域318还可以呈现会话期间发生的多个活动(例如,多个点击、焦点、页面导航或其他用户交互)。
会话活动区域370还标识和/或概述在重放用户会话期间发生的各种活动。例如,会话活动区域370指定,在回放区域306中重放会话期间,用户导航到example.com/products 371,聚焦在页面372内的数量表单340上,点击结帐按钮373,导航到example.com/checkout 374,并聚焦在地址框375上。会话活动区域370中列出的活动可以按照它们在会话期间发生的顺序排列。例如,活动371发生在活动372、373、374和375之前。另外,在会话活动区域370中列出的活动可以以分层的方式可视地表示。例如,活动372和373中的每一个相对于活动371向右偏移,从而指示活动372和373发生在访问example.com/products 371期间。
活动列表370还可以提供关于活动的上下文数据。例如,活动372指示用户交互“焦点”发生在数量表单340中。活动列表370还可以提供来自与每个活动相关的用户界面的结构的信息。例如,每个活动可以包括来自与来自用户界面结构(例如,来自DOM)的分层表示的活动相关联的节点的信息。在特定示例中,活动372示出了提供关于数量表单340的上下文信息的DOM节点的一部分(例如,#header div…)。在一些实现方式中,与活动372的用户交互将导致未在活动列表370中呈现的附加上下文信息的呈现(例如,提供与活动相关的信息的DOM节点的整个集合)。
随着会话的重放在重放区域306中进行,对应于正在呈现的重放部分的活动可以被突出显示。例如,在用户聚焦于数量表单340之后,用户点击了结帐按钮360。当重放显示鼠标从数量表单340附近移动到结帐按钮360时(如虚线所示),活动373可以被加阴影(或突出显示),指示对应于当前正在重放的会话部分的会话活动。当会话的重放到达用户点击结账按钮360的点时,回放数据可以使得阴影圆圈362被呈现,从而向发布者可视地传达用户点击发生以及用户点击结账按钮360的位置。类似的动画可用于向发布者视觉传达发生了其他交互。例如,参考触摸屏设备,类似的阴影圆圈可用于可视地传达用户轻击的发生,并且拉长的阴影动画可用于示出用户在触摸屏上的滑动或其他手指移动。
如上所述,发布者可以从用户界面300(或另一用户界面)请求重放其他会话之一(例如,会话2)。例如,与会话列表308中的会话2的用户交互(例如,点击)可以发起对关于会话2的会话信息的请求。响应于该请求,评估装置150可以向请求设备输出与会话2相关的回放数据和会话活动数据。在接收到回放数据和会话活动数据时,请求设备可以在重放区域306中重放会话2,并且在会话活动区域318中呈现关于会话2期间发生的活动的信息。
在一些实现方式中,用户界面300可以包括过滤器元素304。过滤器元素304使得发布者能够过滤使用例如提交的搜索短语标识的会话。例如,发布者可能只对标识用户点击结账按钮360但最终没有进行购买期间的会话感兴趣。在该示例中,用户可以提交搜索短语“点击结账”,并与过滤器元素304交互以选择仅标识用户没有进行购买(例如,通过点击下拉按钮并选择“没有购买”选项)期间的那些会话的过滤器。这使得发布者能够快速标识感兴趣的会话,和/或标识可能阻止这些用户进行购买的原因(例如,用户界面的问题)。
这里出于说明的目的提供了示例过滤器,但是可以根据需要使用和指定各种其他过滤器。例如,发布者可能只对评估在特定地理区域(例如,美国东南部、中美洲、欧洲)执行的那些会话感兴趣,或者只对评估用户在某个指定持续时间之前(例如,在2分钟内)终止会话的那些会话感兴趣。如下面更详细讨论的,提供诸如这些的过滤器和/或与使用过滤器标识的会话相关的分析信息可以向发布者提供关于如何更好地格式化他们的用户界面和/或实现特定商业目标(例如,增加销售)的洞察力。
在一些实现方式中,用户界面200的发布者可以通过在用户会话的回放中简单地与用户界面元素交互来更新用户界面200的白名单。例如,如果发布者决定它不需要查看数量表单240中呈现的项目的数量,则发布者可以在重放区域306中选择数量值342。评估装置150可以检测该选择并更新数量表单240的数量值242的白名单状态。在该示例中,评估装置150例如通过从白名单120中移除指定数量值242被列入白名单的“标签:表单;字段:值”,将数量值242的白名单状态更改为非白名单内容。对于与用户界面200的后续用户会话,数量值342将不被收集和发送到评估装置150。在会话1的回放或与用户界面200的另一个会话的回放中选择值342时,发布者可以将数量值242添加回白名单120。
图4是用于生成和提供呈现用户会话的回放的交互式界面的示例过程400的流程图。过程400的操作可以例如由一个或多个数据处理装置(例如评估装置150)来执行。过程400的操作也可以被实现为存储在非暂时性计算机可读介质上的指令。指令的执行使得一个或多个数据处理装置执行过程400的操作。
将配置数据提供给客户端设备(402)。配置数据指定发布者的白名单的用户界面元素的集合。每个白名单的用户界面元素是从其有资格从客户端设备收集和发送内容的用户界面元素。例如,如上所述,配置数据可以指定视图或其他用户界面结构指示符,从视图或其他用户界面结构指示符可以获取白名单内容并将其发送到评估装置。
响应于客户端设备加载发布者的用户界面,可以将配置数据发送到客户端设备。例如,加载用户界面的应用的插桩模块或用户界面本身可以被配置成响应于该加载来请求配置数据。这样,当前白名单被提供给客户端设备,用于收集数据以发送给评估装置。
从客户端设备接收用户界面数据(404)。客户端设备可以在用户会话期间或在用户会话结束时收集数据并将数据发送到评估装置。如上所述,数据可以包括指定在用户会话期间呈现的一个或多个用户界面的结构(例如,用于生成(多个)用户界面的视图的视图树)的视图数据,以及指定与一个或多个用户界面的用户交互的用户交互数据。
该数据还可以包括由一个或多个用户界面呈现的一个或多个呈现的用户界面元素的内容,并且是从与由配置数据指定的白名单视图相匹配的视图中生成的。例如,呈现发布者的(多个)用户界面的应用可以将视图与由配置数据指定的白名单视图进行比较。对于匹配视图,应用可以获取视图的内容,并为内容提供数据。对于不匹配的用户界面元素,应用可以阻止视图内容的收集,并且不提供内容。相反,应用可以提供内容的表示,例如文本的散列或图像的低保真度版本。
基于所接收的数据来生成用户会话的回放(406)。用户会话的回放可以呈现在用户会话期间查看的一个或多个用户界面、与白名单的用户界面元素相匹配的一个或多个用户界面元素的内容、与一个或多个用户界面的用户交互。对于与白名单的用户界面元素不匹配的用户界面元素的内容,回放可以呈现没有用户界面元素的内容的用户界面元素。相反,回放可以包括表示内容的屏蔽元素。如上所述,可以基于屏蔽元素所表示的内容来调整屏蔽元素的大小。
图5是用于更新用户界面元素的白名单状态的示例过程500的流程图。过程500的操作可以例如由一个或多个数据处理装置(诸如评估装置150)来执行。过程500的操作也可以被实现为存储在非暂时性计算机可读介质上的指令。指令的进行使得一个或多个数据处理装置执行过程500的操作。
在一些实现方式中,没有发布者的内容被列入白名单,直到发布者将内容添加到白名单。这确保了除非发布者请求,否则不会收集敏感数据。然后发布者可以根据需要将内容添加到白名单中。
生成与发布者的一个或多个用户界面的用户会话的回放(502)。可以使用图4的过程400来生成回放。
检测与回放中呈现的用户界面元素的用户交互(504)。例如,发布者可以选择用户界面元素来更改用户界面元素的内容的白名单状态。
定义用户界面元素的视图的白名单状态被更改(506)。如果该视图当前被包括在发布者的白名单中,则该视图的白名单状态可以被更新为不再被列入白名单。例如,视图的标识符可以从白名单中移除。
如果该视图当前没有被包括在发布者的白名单中,则该视图的白名单状态可以被更新为被列入白名单。例如,视图的标识符可以添加到白名单中。
当客户端设备加载发布者的用户界面时,可以将更新的白名单提供给客户端设备。这样,更新的白名单被用于收集数据以用于随后的用户会话的回放。
本说明书中描述的主题和操作的实施例可以在数字电子电路中实现,或者在计算机软件、固件或硬件中实现,包括本说明书中公开的结构及其结构等同物,或者在它们中的一个或多个的组合中实现。本说明书中描述的主题的实施例可以被实现为一个或多个计算机程序,即计算机程序指令的一个或多个模块,其被编码在计算机存储介质上,用于由数据处理装置执行或控制数据处理装置的操作。可替换地或附加地,程序指令可以被编码在人工生成的传播信号(例如,机器生成的电、光或电磁信号)上,其被生成以编码信息,用于传输到合适的接收器装置,以由数据处理装置进行。计算机存储介质可以是或被包括在计算机可读存储设备、计算机可读存储基板、随机或串行存取存储器阵列或设备、或者它们中的一个或多个的组合中。此外,虽然计算机存储介质不是传播信号,但是计算机存储介质可以是编码在人工生成的传播信号中的计算机程序指令的源或目的地。计算机存储介质也可以是或被包括在一个或多个单独的物理组件或介质(例如,多个CD、盘或其他存储设备)中。
本说明书中描述的操作可以被实现为由数据处理装置对存储在一个或多个计算机可读存储设备上或从其他源接收的数据执行的操作。
术语“数据处理装置”涵盖用于处理数据的所有种类的装置、设备和机器,包括例如可编程处理器、计算机、片上系统或前述的多个或组合。该装置可以包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,该装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时环境、虚拟机或它们中的一个或多个的组合的代码。该装置和执行环境可以实现各种不同的计算模型基础设施,诸如网络服务、分布式计算和网格计算基础设施。
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言编写,包括编译或解释语言、声明或过程语言,并且它可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程、对象或适用于计算环境的其他单元。计算机程序可以但不需要对应于文件系统中的文件。程序可以存储在保存其他程序或数据的文件的一部分中(例如,存储在标记语言文档中的一个或多个脚本),存储在专用于所讨论的程序的单个文件中,或者存储在多个协作文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。可以部署计算机程序以在一台计算机上执行或位于一个站点或分布在多个站点并通过通信网络互连的多台计算机上执行。
本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程处理器来执行,以通过对输入数据执行操作并生成输出来执行动作。过程和逻辑流程也可以由专用逻辑电路来执行,并且装置也可以被实现为专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
举例来说,适于执行计算机程序的处理器包括通用和专用微处理器两者,以及任何种类的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于根据指令执行动作的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括,或可操作地耦合以从用于存储数据的一个或多个大容量存储设备(例如,磁、磁光盘或光盘)接收数据或向其传输数据或两者。然而,计算机不需要有这种设备。此外,计算机可以嵌入在另一个设备中,例如,移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或便携式存储设备(例如,通用串行总线(USB)闪存驱动器),仅举几例。适于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及CD ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路来补充或并入其中。
为了提供与用户的交互,本说明书中描述的主题的实施例可以在计算机上实现,该计算机具有用于向用户显示信息的显示设备,例如CRT(阴极射线管)或LCD(液晶显示器)监视器,以及用户可以用来向计算机提供输入的键盘和定点设备,例如鼠标或轨迹球。也可以使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从网络浏览器接收的请求,向用户设备上的网络浏览器发送网页。
本说明书中描述的主题的实施例可以在计算系统中实现,该计算系统包括后端组件,例如作为数据服务器,或者包括中间件组件,例如应用服务器,或者包括前端组件,例如具有图形用户界面或Web浏览器的客户端计算机,用户可以通过该图形用户界面或Web浏览器与本说明书中描述的主题的实现方式进行交互,或者包括一个或多个这种后端、中间件或前端组件的任何组合。该系统的组件可以通过任何形式或介质的数字数据通信(例如通信网络)来互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”)、互联网(例如,因特网)和对等网络(例如,自组织对等网络)。
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系是由于在各自的计算机上运行的计算机程序而产生的,并且彼此具有客户端-服务器关系。在一些实施例中,服务器将数据(例如,HTML页面)发送到客户端设备(例如,为了向与客户端设备交互的用户显示数据并从其接收用户输入)。在客户端设备处生成的数据(例如,用户交互的结果)可以在服务器处从客户端设备接收。
虽然本说明书包含许多具体的实现方式细节,但是这些不应该被解释为对任何发明的范围或可能要求保护的范围的限制,而是对特定发明的特定实施例所特有的特征的描述。本说明书中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独或以任何合适的子组合来实现。此外,尽管特征可能在上面被描述为在某些组合中起作用,并且甚至最初被如此要求保护,但是来自所要求保护的组合的一个或多个特征在一些情况下可以从该组合中删除,并且所要求保护的组合可以针对子组合或子组合的变体。
类似地,虽然在附图中以特定的顺序描述了操作,但是这不应该被理解为要求这些操作以所示的特定顺序或按顺序执行,或者要求所有示出的操作都被执行,以获得期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要这种分离,并且应该理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中或者打包到多个软件产品中。
因此,已经描述了主题的特定实施例。其他实施例在以下权利要求的范围内。在某些情况下,权利要求中所述的动作可以以不同的顺序执行,并且仍能获得期望的结果。此外,附图中描绘的过程不一定需要所示的特定顺序或连续顺序来实现期望的结果。在某些实现方式中,多任务和并行处理可能是有利的。
Claims (20)
1.一种方法,包括:
向客户端设备提供配置数据,所述配置数据指定发布者的白名单视图的集合,每个白名单视图是有资格从所述客户端设备收集和发送来自视图的内容的所述视图;
从所述客户端设备接收用户与所述发布者的一个或多个用户界面交互的用户会话的用户界面数据,所述用户界面数据包括:
指定在所述用户会话期间呈现的所述一个或多个用户界面的结构的视图数据;
指定与所述一个或多个用户界面的用户交互的用户交互数据;和
一个或多个第一呈现的用户界面元素的内容,所述一个或多个第一呈现的用户界面元素(i)是由所述一个或多个用户界面呈现,并且(ii)是从与由所述配置数据指定的白名单视图相匹配的视图生成,其中所述应用不提供一个或多个第二呈现的用户界面元素的内容,所述一个或多个第二呈现的用户界面元素是从与由所述配置数据指定的白名单视图不匹配的视图生成;以及
基于所述用户界面数据,生成呈现所述一个或多个用户界面的所述用户会话的回放、所述一个或多个第一呈现的用户界面元素的内容、与所述一个或多个用户界面的所述用户交互,以及对于所述一个或多个第二用户界面元素的内容,生成屏蔽元素,所述屏蔽元素表示所述第二用户界面元素的内容同时屏蔽所述第二用户界面元素的实际内容。
2.根据权利要求1所述的方法,其中,对于每个用户界面,所述视图数据包括指定用于生成所述用户界面的视图的层次的数据。
3.根据权利要求1所述的方法,其中,给定的第一呈现的用户界面元素的所述内容包括由所述一个或多个用户界面中的给定用户界面呈现的文本,并且所述文本的屏蔽元素包括与在所述给定用户界面中限定所述文本的矩形的大小相匹配的矩形框。
4.根据权利要求1所述的方法,其中,给定的第一呈现的用户界面元素的所述内容包括由所述一个或多个用户界面中的给定用户界面呈现的文本,并且所述文本的屏蔽元素包括具有基于所述文本的上升的高度的矩形框。
5.根据权利要求1所述的方法,其中,给定的第一呈现的用户界面元素的所述内容包括由所述一个或多个用户界面中的给定用户界面呈现的图像,并且所述图像的屏蔽元素包括具有与所述图像的给定像素相匹配的颜色的替换图像。
6.根据权利要求1所述的方法,其中,给定的第一呈现的用户界面元素的所述内容包括由所述一个或多个用户界面的给定用户界面呈现的图像,并且所述图像的屏蔽元素包括从所述图像的像素样本生成的替换图像,所述像素样本少于所述图像的像素总数。
7.根据权利要求1所述的方法,还包括:
在所述用户会话的回放期间,检测与在所述用户会话的回放中由所述一个或多个用户界面中的至少一个呈现的用户界面元素的用户交互;以及
响应于检测到所述用户交互,更改用于生成所述用户界面元素的给定视图的白名单状态,其中所述白名单状态指定所述视图是否包括要从所述客户端设备收集的内容。
8.根据权利要求7所述的方法,其中,更改所述给定视图的白名单状态包括:
每当所述给定视图在指定白名单内容的白名单上时,从所述白名单内容中移除所述给定视图;并且
每当所述视图不在指定所述白名单内容的所述白名单上时,将所述视图添加到所述白名单。
9.一种系统,包括:
数据存储;以及
一个或多个计算机,所述一个或多个计算机与所述数据存储交互并执行指令,所述指令使得所述一个或多个计算机执行操作,所述操作包括:
向客户端设备提供配置数据,所述配置数据指定发布者的白名单视图的集合,每个白名单视图是有资格从所述客户端设备收集和发送来自视图的内容的所述视图;
从所述客户端设备接收用户与所述发布者的一个或多个用户界面交互的用户会话的用户界面数据,所述用户界面数据包括:
指定在所述用户会话期间呈现的所述一个或多个用户界面的结构的视图数据;
指定与所述一个或多个用户界面的用户交互的用户交互数据;和
一个或多个第一呈现的用户界面元素的内容,所述一个或多个第一呈现的用户界面元素(i)是由所述一个或多个用户界面呈现,并且(ii)是从与由所述配置数据指定的白名单视图相匹配的视图生成,其中所述应用不提供一个或多个第二呈现的用户界面元素的内容,所述一个或多个第二呈现的用户界面元素是从与由所述配置数据指定的白名单视图不匹配的视图生成;以及
基于所述用户界面数据,生成呈现所述一个或多个用户界面的所述用户会话的回放、所述一个或多个第一呈现的用户界面元素的内容、与所述一个或多个用户界面的所述用户交互,以及对于所述一个或多个第二用户界面元素的内容,生成屏蔽元素,所述屏蔽元素表示所述第二用户界面元素的内容同时屏蔽所述第二用户界面元素的实际内容。
10.根据权利要求9所述的系统,其中,对于每个用户界面,所述视图数据包括指定用于生成所述用户界面的视图的层次的数据。
11.根据权利要求9所述的系统,其中,给定的第一呈现的用户界面元素的所述内容包括由所述一个或多个用户界面中的给定用户界面呈现的文本,并且所述文本的屏蔽元素包括与在所述给定用户界面中限定所述文本的矩形的大小相匹配的矩形框。
12.根据权利要求9所述的系统,其中,给定的第一呈现的用户界面元素的所述内容包括由所述一个或多个用户界面中的给定用户界面呈现的文本,并且所述文本的屏蔽元素包括具有基于所述文本的上升的高度的矩形框。
13.根据权利要求9所述的系统,其中,给定的第一呈现的用户界面元素的所述内容包括由所述一个或多个用户界面中的给定用户界面呈现的图像,并且所述图像的屏蔽元素包括具有与所述图像的给定像素相匹配的颜色的替换图像。
14.根据权利要求9所述的系统,其中,给定的第一呈现的用户界面元素的所述内容包括由所述一个或多个用户界面中的给定用户界面呈现的图像,并且所述图像的屏蔽元素包括从所述图像的像素样本生成的替换图像,所述像素样本少于所述图像的像素总数。
15.根据权利要求9所述的系统,其中,所述操作包括:
在所述用户会话的回放期间,检测与在所述用户会话的回放中由所述一个或多个用户界面中的至少一个呈现的用户界面元素的用户交互;以及
响应于检测到所述用户交互,更改用于生成所述用户界面元素的给定视图的白名单状态,其中所述白名单状态指定所述视图是否包括要从所述客户端设备收集的内容。
16.根据权利要求15所述的系统,其中,更改所述给定视图的白名单状态包括:
每当所述给定视图在指定白名单内容的白名单上时,从所述白名单内容中移除所述给定视图;并且
每当所述视图不在指定所述白名单内容的所述白名单上时,将所述视图添加到所述白名单。
17.一种非暂时性计算机可读介质,存储有指令,所述指令在由一个或多个计算机执行时使得所述一个或多个计算机执行操作,所述操作包括:
向客户端设备提供配置数据,所述配置数据指定发布者的白名单视图的集合,每个白名单视图是有资格从所述客户端设备收集和发送来自视图的内容的所述视图;
从所述客户端设备接收用户与所述发布者的一个或多个用户界面交互的用户会话的用户界面数据,所述用户界面数据包括:
指定在所述用户会话期间呈现的所述一个或多个用户界面的结构的视图数据;
指定与所述一个或多个用户界面的用户交互的用户交互数据;和
一个或多个第一呈现的用户界面元素的内容,所述一个或多个第一呈现的用户界面元素(i)是由所述一个或多个用户界面呈现,并且(ii)是从与由所述配置数据指定的白名单视图相匹配的视图生成,其中所述应用不提供一个或多个第二呈现的用户界面元素的内容,所述一个或多个第二呈现的用户界面元素是从与由所述配置数据指定的白名单视图不匹配的视图生成;以及
基于所述用户界面数据,生成呈现所述一个或多个用户界面的所述用户会话的回放、所述一个或多个第一呈现的用户界面元素的内容、与所述一个或多个用户界面的所述用户交互,以及对于所述一个或多个第二用户界面元素的内容,生成屏蔽元素,所述屏蔽元素表示所述第二用户界面元素的内容同时屏蔽所述第二用户界面元素的实际内容。
18.根据权利要求17所述的非暂时性计算机可读介质,其中,对于每个用户界面,所述视图数据包括指定用于生成所述用户界面的视图的层次的数据。
19.根据权利要求17所述的非暂时性计算机可读介质,其中,给定的第一呈现的用户界面元素的所述内容包括由所述一个或多个用户界面中的给定用户界面呈现的文本,并且所述文本的屏蔽元素包括与在所述给定用户界面中限定所述文本的矩形的大小相匹配的矩形框。
20.根据权利要求17所述的非暂时性计算机可读介质,其中,给定的第一呈现的用户界面元素的所述内容包括由所述一个或多个用户界面中的给定用户界面呈现的文本,并且所述文本的屏蔽元素包括具有基于所述文本的上升的高度的矩形框。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962892914P | 2019-08-28 | 2019-08-28 | |
US62/892,914 | 2019-08-28 | ||
PCT/US2020/048231 WO2021041700A1 (en) | 2019-08-28 | 2020-08-27 | Protecting user privacy in user interface data collection for native applications |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114730341A true CN114730341A (zh) | 2022-07-08 |
Family
ID=72433044
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080075578.7A Pending CN114730341A (zh) | 2019-08-28 | 2020-08-27 | 保护在本地应用的用户界面数据收集中的用户隐私 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20210067492A1 (zh) |
EP (1) | EP4022481B1 (zh) |
JP (1) | JP2022545545A (zh) |
CN (1) | CN114730341A (zh) |
AU (1) | AU2020335869A1 (zh) |
WO (1) | WO2021041700A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230090108A1 (en) * | 2021-09-23 | 2023-03-23 | Quantum Metric, Inc. | Systematic identification and masking of private data for replaying user sessions |
US11487931B1 (en) * | 2021-10-18 | 2022-11-01 | International Business Machines Corporation | Replaying a webpage based on virtual document object model |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104704485B (zh) * | 2012-07-19 | 2018-11-30 | 格兰斯电讯网络有限公司 | 一种在第二位置查看第一浏览器的内容的方法 |
US10388182B2 (en) * | 2014-11-20 | 2019-08-20 | International Business Machines Corporation | Socially enabled guidance for products with GUIs |
US20160267523A1 (en) * | 2015-03-11 | 2016-09-15 | Facebook, Inc. | Tracking User Behavior with Universal Action Tags |
-
2020
- 2020-08-27 EP EP20768789.8A patent/EP4022481B1/en active Active
- 2020-08-27 CN CN202080075578.7A patent/CN114730341A/zh active Pending
- 2020-08-27 JP JP2022513315A patent/JP2022545545A/ja active Pending
- 2020-08-27 WO PCT/US2020/048231 patent/WO2021041700A1/en unknown
- 2020-08-27 AU AU2020335869A patent/AU2020335869A1/en active Pending
- 2020-08-27 US US17/005,010 patent/US20210067492A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
JP2022545545A (ja) | 2022-10-27 |
EP4022481B1 (en) | 2023-10-25 |
WO2021041700A1 (en) | 2021-03-04 |
EP4022481A1 (en) | 2022-07-06 |
US20210067492A1 (en) | 2021-03-04 |
AU2020335869A1 (en) | 2022-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3776193B1 (en) | Capturing and processing interactions with a user interface of a native application | |
US9756140B2 (en) | Tracking user behavior relative to a network page | |
US10671692B2 (en) | Uniquely identifying and tracking selectable web page objects | |
US11593131B2 (en) | Capturing and processing interactions with a user interface of a native application | |
EP1894081B1 (en) | Web usage overlays for third-party web plug-in content | |
US9317257B2 (en) | Folded views in development environment | |
US20100070899A1 (en) | Techniques for sharing content on a web page | |
US20120297324A1 (en) | Navigation Control Availability | |
US8671389B1 (en) | Web application resource manager on the web and localizable components | |
US20170269945A1 (en) | Systems and methods for guided live help | |
CN114357345A (zh) | 图片处理方法、装置、电子设备及计算机可读存储介质 | |
EP4022481B1 (en) | Protecting user privacy in user interface data collection for native applications | |
CN110781427A (zh) | 一种首屏时间的计算方法、装置、设备和存储介质 | |
CN111783008A (zh) | 一种信息显示方法、装置、设备及介质 | |
CN107220230A (zh) | 一种信息采集方法和装置,以及一种智能终端 | |
US20230351095A1 (en) | Reducing data usage for rendering state changes | |
CN112817817A (zh) | 埋点信息查询方法、装置、计算机设备和存储介质 | |
CN107533544B (zh) | 元素标识符生成 | |
US20210042441A1 (en) | Protecting user privacy in user interface data collection | |
WO2017119124A1 (ja) | ウェブページ作成支援装置、及び記憶媒体 | |
US11887213B2 (en) | Image cache for session replays of mobile applications | |
US20230350785A1 (en) | Session replay for mobile applications | |
US20230350964A1 (en) | Platform independent session player |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |