发明内容
有鉴于此,本发明的目的在于提供一种网页监控方法、装置及系统,以解决未部署监控的网页无法实现对网页加载过程的监控,其公开的技术方案如下:
第一方面,本申请提供了一种网页监控方法,应用于移动端应用程序中,所述移动端应用程序中内嵌有网页展示组件,所述网页展示组件中部署有网页监控脚本,所述方法包括:
当所述移动端应用程序接收到网页访问请求后,调用所述网页展示组件加载所请求的网页;
在所述网页展示组件加载所述网页的过程中,当检测到目标监控事件发生时,触发所述网页监控脚本对所述网页进行监控,得到所述网页对应的网页监控数据。
可选地,所述在所述网页展示组件加载所述网页的过程中,当检测到目标监控事件发生时,触发所述网页监控脚本对所述网页进行监控,得到所述网页对应的网页监控数据,包括:
当检测到网页加载完成事件时,执行所述网页监控脚本以收集所述网页加载过程中的性能监控数据,得到网页性能监控数据;
当检测到网页加载异常时,执行所述网页监控脚本以收集网页加载过程中的网页JS异常数据,得到网页JS异常监控数据。
可选地,所述方法还包括:
当检测到网页加载异常时,获取加载异常的网页对应的页面资源的相关信息。
可选地,所述方法还包括:
所述移动端应用程序将获得的网页监控数据发送至所述网页对应的服务端。
第二方面,本申请还提供了一种网页监控方法,应用于服务端,所述方法包括:
接收移动端应用程序发送的网页监控数据,所述网页监控数据由所述移动端应用程序内嵌的网页展示组件中部署的网页监控脚本获得,且所述网页监控数据中包括用户标识;
将同一网页对应的包含不同用户标识的网页监控数据进行关联分析,得到所述网页在不同网络环境和/或不同地区对应的网页性能分析结果。
第三方面,本申请还提供了一种网页监控装置,应用于移动端应用程序中,所述移动端应用程序中内嵌有网页展示组件,所述网页展示组件中部署有网页监控脚本,所述装置包括:
网页加载模块,用于当所述移动端应用程序接收到网页访问请求后,调用所述网页展示组件加载所请求的网页;
网页监控模块,用于在所述网页展示组件加载所述网页的过程中,当检测到目标监控事件发生时,触发所述网页监控脚本对所述网页进行监控,得到所述网页对应的网页监控数据。
可选地,所述网页监控模块,包括:
网页性能监控子模块,用于当检测到网页加载完成时,执行所述网页监控脚本以收集所述网页加载过程中的性能监控数据,得到网页性能监控数据;
网页JS异常监控子模块,当检测到网页加载异常时,执行所述网页监控脚本以收集网页加载过程中的网页JS异常数据,得到网页JS异常监控数据。
可选地,所述装置还包括:
页面资源获取模块,用于当检测到网页加载异常时,获取加载异常的网页对应的页面资源的相关信息。
第四方面,本申请还提供了一种网页监控装置,应用于服务端,所述装置包括:
监控数据接收模块,用于接收移动端应用程序发送的网页监控数据,所述网页监控数据由所述移动端应用程序内嵌的网页展示组件中部署的网页监控脚本获得,且所述网页监控数据中包括用户标识;
关联分析模块,用于将同一网页对应的包含不同用户标识的网页监控数据进行关联分析,得到所述网页在不同网络环境或不同地区对应的网页性能分析结果。
第五方面,本申请还提供了一种网页监控系统,包括:内嵌有网页展示组件的移动端应用程序,以及部署在所述网页展示组件中的网页监控脚本;
所述网页展示组件加载待加载网页;
所述网页展示组件触发所述网页监控脚本对未部署网页监控脚本的待加载网页进行监控,得到所述待加载网页对应的网页监控数据。
本申请提供的网页监控方法,在移动端应用程序内嵌的网页展示组件中部署有网页监控脚本,当移动端应用程序调用网页展示组件加载网页时,自动触发网页监控脚本对网页进行监控,获得网页监控数据。通过部署在网页展示组件中部署的网页监控脚本,自动获得未部署网页监控代码的网页对应的网页监控数据。使用该方案只需在网页展示组件中部署网页监控脚本,不需要在各个网页部署监控代码,从而减轻了网页开发和维护的工作量,降低了网页开发和维护成本;而且,节省了各产品线实现网页监控的成本,统一了各产品线的监控数据标准。
具体实施方式
本申请发明人在研究本申请的过程中发现:相关技术中的网页监控通过在网页中添加监控代码实现,而且所添加的监控代码只能对该网页的异常进行监控,而无法监控其他网页。而对于没有监控代码的网页则无法获得网页监控数据。例如,如图1所示,H5业务即网页业务的统称,不同业务(如业务A~D)分别为不同的网页;普通浏览器即相关技术中的网页展示组件(因为网页展示组件能够实现浏览器的功能因此可以称为浏览器)
由图1可见,不同网页的监控功能不尽相同,例如,业务A的网页具有性能监控、异常监控和业务监控,而业务B的网页具有业务监控,其中性能监控和异常监控属于网页监控,而业务监控是对网页中具体的业务数据的监控。对于没有部署网页监控代码的网页将无法获得网页监控数据。
为了使未部署网页监控代码的网页也能获得网页监控功能,本申请提供了一种网页监控方法,在网页展示组件中部署网页监控脚本,当移动端应用程序调用网页展示组件加载网页时,自动触发网页展示组件中的网页监控脚本对网页进行监控获得网页监控数据。网页展示组件所加载的网页能够自动获得网页监控脚本监控得到的网页监控数据。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图2,示出了本申请实施例提供的一种网页监控方法的流程图,该方法应用于移动端APP中,移动端APP中内嵌有网页展示组件(如,Webview组件),网页展示组件中部署有网页监控脚本,该网页监控脚本能够对网页展示组件所加载的网页进行监控,例如,网页性能监控和网页异常监控。
如图2所示,该方法可以包括以下步骤:
S110,当移动端应用程序接收到网页访问请求后,调用网页展示组件加载网页。
例如,在移动端APP中访问某个网页时,会调用网页展示组件向网页服务端发送网页访问请求,网页服务端向页面展示组件返回相应的页面数据,从而实现在移动端APP中展示所请求的网页。
S120,在网页展示组件加载网页的过程中,当检测到目标监控事件发生时,网页监控脚本对未部署网页监控脚本的网页进行监控,得到该网页对应的网页监控数据。
网页展示组件中部署有网页监控脚本,在网页展示组件加载网页的过程中,当监测到目标监控事件发生时会自动执行网页监控脚本对网页进行监控。
在本申请的一个实施例中,例如,目标监控事件可以包括网页加载完成事件、网页加载异常事件等。
当网页加载完成事件发生时,执行网页监控脚本对网页的性能数据进行收集,得到网页性能监控数据;当网页加载异常事件发生时,执行网页监控脚本对网页的JS异常数据进行收集,得到JS异常监控数据。
其中,网页性能监控包括网页加载耗时、DNS耗时、网页下载耗时、重定向耗时、TCP连接耗时、服务器响应耗时、DOM可交互耗时、内容加载耗时等网页性能参数的监控。
网页的JS异常监控包括Eval函数错误、引用错误、范围错误、语法错误、类型错误、统一资源标志符(Uniform Resource Identifier URI)错误,以及其他可被window.onerror函数捕捉的错误。因为网页监控脚本部署在网页展示组件中,所以网页展示组件所加载的网页能够自动获得网页监控脚本的监控功能,即,没有部署监控代码的网页也能够自动获得网页监控数据。
在一种可能的实现方式中,在网页展示组件的JS脚本执行环境中注册相关Hook函数,当网页展示组件中发生Hook函数设定的事件(如网页加载)时,执行Hook函数,即执行网页监控脚本,以实现对网页展示组件所加载的网页进行监控,具体的过程如下:
在网页展示组件运行即将加载网页时,执行网页展示组件内部署的网页监控脚本,其目的是往JS脚本执行环境中注册相应事件(如,网页加载完成、网页加载发生异常等)的Hook函数,Hook函数的内容是相应事件的网页监控脚本。
在网页展示组件加载网页的过程中,当Hook函数设定的事件发生时,Hook函数的内部逻辑(即,与该事件对应的网页监控脚本文件)被执行,例如,对于网页加载完成事件,收集该网页加载过程中的性能监控数据;对于网页加载异常事件,收集错误信息数据。
在本申请的一个实施例中,请参见图3,示出了本申请实施例提供的一种移动端APP内的网页展示架构的示意图。
如图3所示,网页展示组件内嵌在移动端APP中,且网页展示组件中部署有网页监控脚本,图3中的定制浏览器即部署有网页监控脚本的网页展示组件。网页监控脚本用于对网页展示组件加载的页面进行监控,监控内容包括但不限于:性能监控、异常监控。
此外,网页展示组件自身还能监测页面访问、页面资源下载和页面渲染等过程,当检测到上述过程发生异常时,获取页面资源的相关信息。例如:发生网页资源下载失败时,可以获得对应资源的地址,该地址上报至服务端后,将触发相应监控报警以便快速定位问题,修复问题。
其中,页面访问是指移动端APP通过网页展示组件向网页服务器发送网页访问请求的过程;页面资源下载过程是指网页展示组件从网页服务器下载网页对应的页面资源的过程;页面渲染过程是指网页展示组件将从网页服务器下载的网页数据渲染显示的过程。
该方案无需在网页中部署监控代码(即,网页监控脚本),通过网页展示组件中部署的网页监控脚本实现对未部署网页监控脚本的网页进行监控。
本申请提供的网页监控方法,在移动端应用程序内嵌的网页展示组件中部署有网页监控脚本,当移动端应用程序调用网页展示组件加载网页时,自动触发网页监控脚本对网页进行监控,获得网页监控数据。通过部署在网页展示组件中部署的网页监控脚本,自动获得未部署网页监控代码的网页对应的网页监控数据。使用该方案只需在网页展示组件中部署网页监控脚本,不需要在各个网页部署监控代码,从而减轻了网页开发和维护的工作量,降低了网页开发和维护成本;而且,节省了各产品线实现网页监控的成本,统一了各产品线的监控数据标准。
请参见图4,示出了本申请实施例提供的另一种网页监控方法的流程图,该方法应用于包含移动端APP和服务端的系统中,移动端APP内嵌有网页展示组件,网页展示组件中部署有网页监控脚本。
如图4所示,该方法包括以下步骤:
S210,当移动端APP接收到网页访问请求时,调用网页展示组件加载所请求的网页。
图4中定制网页展示组件是指部署有网页监控脚本的定制网页展示组件。
S220,在网页展示组件加载网页的过程中,当检测到网页加载完成时,执行网页监控脚本以收集网页加载过程中的性能监控数据,得到网页性能监控数据。
S230,当检测到网页加载异常时,执行网页监控脚本以收集网页加载过程中的网页JS异常数据,得到网页JS异常监控数据。
S240,当检测到网页加载异常时,获取加载异常的网页对应的页面资源的相关信息。
其中,网页监控数据中携带用户标识,其中,该用户标识可以是该移动端APP的用户唯一标识,或移动设备的唯一标识;此外,网页监控数据中还包括网页相关资源的地址,例如,网页地址、图片资源地址或其它资源地址等。
S250,移动端APP将网页展示组件及网页监控脚本获得的网页监控数据发送至移动端APP的服务端。
S260,服务端将不同用户访问同一网页产生的网页监控数据进行关联,得到同一网页对应的网页监控数据。
例如,服务端(即,待分析网页的服务端)对不同用户访问同一网页产生的网页监控数据进行关联分析,可以获得不同网络环境下,该网页的性能表现,或者,在不同地域,网页的性能表现。
本实施例提供的网页监控方法,通过在移动端APP的网页展示组件中部署的网页监控脚本实现对所加载的所有网页进行监控,得到相应的网页监控数据,从而获得未部署网页监控脚本的网页对应的网页监控数据。而且,移动端APP能够将网页监控脚本和网页展示组件自身获得的网页监控数据上传至网页对应的服务器中,服务器进一步对不同用户访问该网页产生的网页监控数据进行关联,丰富了网页监控数据的获得途径,得到更丰富多样的网页监控数据,实现全面分析网页性能。
相应于网页监控方法实施例,本申请还提供了网页监控装置实施例。
请参见图5,示出了本申请实施例提供的一种网页监控装置的结构示意图,该装置应用于移动端应用程序中;其中,移动端应用程序中内嵌有网页展示组件,网页展示组件中部署有网页监控脚本。
如图5所示,装置包括:网页加载模块110和网页监控模块120。
网页加载模块110,用于当移动端应用程序接收到网页访问请求后,调用网页展示组件加载所请求的网页。
网页监控模块120,用于在网页展示组件加载网页的过程中,当检测到目标监控事件发生时,触发网页监控脚本对网页进行监控,得到网页对应的网页监控数据。
在本申请的一个实施例中,网页监控模块120包括:
网页性能监控子模块,用于当检测到网页加载完成事件时,执行网页监控脚本以收集网页加载过程中的性能监控数据,得到网页性能监控数据。
网页JS异常监控子模块,用于当检测到网页加载时,执行网页监控脚本以收集网页加载过程中的网页JS异常数据,得到网页JS异常监控数据。
本实施例提供的网页监控装置,在移动端应用程序内嵌的网页展示组件中部署有网页监控脚本,当移动端应用程序调用网页展示组件加载网页时,自动触发网页监控脚本对网页进行监控,获得网页监控数据。通过部署在网页展示组件中部署的网页监控脚本,自动获得未部署网页监控代码的网页对应的网页监控数据。使用该方案只需在网页展示组件中部署网页监控脚本,不需要在各个网页部署监控代码,从而减轻了网页开发和维护的工作量,降低了网页开发和维护成本;而且,节省了各产品线实现网页监控的成本,统一了各产品线的监控数据标准。
请参见图6,示出了本申请实施例提供的另一种网页监控装置的结构示意图,该装置在图5所示实施例的基础上还包括:
页面资源获取模块210,用于当监测到页面加载异常时,获取加载异常的网页的页面资源的相关信息。
该页面资源获取模块210在检测到页面加载过程发生异常时,获取当前加载网页的网页资源的相关信息,例如,页面资源下载失败时,获得该页面资源对应的下载地址,以便后续异常修复后直接利用该页面资源对应的下载地址重新获取页面资源。
在本申请的另一个实施例中,如图6所示,网页监控装置还包括:监控数据上传模块310。
监控数据上传模块310,用于将获得的网页监控数据发送至网页对应的服务端。
服务端对不同用户访问同一网页产生的网页监控数据进行关联分析,从而获得该网页在不同网络环境下的性能表现,或者,该网页在不同地域的性能表现。
本实施例提供的网页监控装置,通过在移动端APP的网页展示组件中部署的网页监控脚本实现对所加载的所有网页进行监控,得到相应的网页监控数据,从而获得未部署网页监控脚本的网页对应的网页监控数据。而且,移动端APP能够将网页监控脚本和网页展示组件自身获得的网页监控数据上传至网页对应的服务器中,服务器进一步对不同用户访问该网页产生的网页监控数据进行关联,丰富了网页监控数据的获得途径,得到更丰富多样的网页监控数据,实现全面分析网页性能。
另一方面,本申请还提供了应用于服务器中的网页监控装置,如图7所示,该网页监控装置可以包括:
监控数据接收模块410,用于接收移动端应用程序发送的网页监控数据。
其中,网页监控数据由移动端应用程序内嵌的网页展示组件中部署的网页监控脚本获得,且网页监控数据中包括用户标识;
关联分析模块420,用于将同一网页对应的包含不同用户标识的网页监控数据进行关联分析,得到网页在不同网络环境或不同地区对应的网页性能分析结果。
本实施例提供的网页监控装置,移动端APP将获得的网页监控数据上传至网页对应的服务器中,服务器可以进一步对不同用户访问该网页产生的网页监控数据进行关联,丰富了网页监控数据的获得途径,得到更丰富多样的网页监控数据,实现全面分析网页性能。
又一方面,本申请还提供了一种网页监控系统的实施例,如图8所示,该网页监控系统包括移动端APP1和服务端2。
移动端APP1内嵌有网页展示组件11(如Webview组件),网页展示组件11内部部署有网页监控脚本12。
当移动端APP1调用网页展示组件11加载网页时,自动执行网页监控脚本12对所加载的网页进行监控,得到该网页的网页监控数据。
移动端APP1将获得的网页监控数据发送至服务端2,服务端2将该网页对应的包含不同用户标识的网页监控数据进行关联分析,得到该网页在不同网络环境和/或不同地区对应的网页性能分析结果。
本实施提供的网页监控系统,在网页展示组件中部署网页监控脚本,当移动端应用程序调用网页展示组件加载网页时,自动触发网页展示组件中的网页监控脚本对网页进行监控获得网页监控数据。而且,移动端APP能够将网页监控脚本和网页展示组件自身获得的网页监控数据上传至网页对应的服务器中,服务器进一步对不同用户访问该网页产生的网页监控数据进行关联,丰富了网页监控数据的获得途径,得到更丰富多样的网页监控数据,实现全面分析网页性能。
本申请提供了一种移动终端设备,该移动终端设备包括处理器和存储器,该存储器内存储有可在处理器上运行的程序。该处理器运行存储器内存储的该程序时实现上述的应用于移动端应用程序中的网页监控方法。
本发明实施例还提供了一种服务器,该服务器包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现上述的应用于服务端的网页监控方法。
本申请还提供了一种计算设备可执行的存储介质,该存储介质中存储有程序,该程序由计算设备执行时实现上述的应用于移动端应用程序侧的网页监控方法。
本申请还提供了另一种计算设备可执行的存储介质,该存储介质中存储有程序,该程序由计算设备执行时实现上述的应用于服务侧的网页监控方法。
对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
需要说明的是,本说明书中的各个实施例记载的技术特征可以相互替代或组合,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请各实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
本申请各实施例中的装置及终端中的模块和子模块可以根据实际需要进行合并、划分和删减。
本申请所提供的几个实施例中,应该理解到,所揭露的终端,装置和方法,可以通过其它的方式实现。例如,以上所描述的终端实施例仅仅是示意性的,例如,模块或子模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个子模块或模块可以结合或者可以集成到另一个模块,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块或子模块可以是或者也可以不是物理上分开的,作为模块或子模块的部件可以是或者也可以不是物理模块或子模块,即可以位于一个地方,或者也可以分布到多个网络模块或子模块上。可以根据实际的需要选择其中的部分或者全部模块或子模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块或子模块可以集成在一个处理模块中,也可以是各个模块或子模块单独物理存在,也可以两个或两个以上模块或子模块集成在一个模块中。上述集成的模块或子模块既可以采用硬件的形式实现,也可以采用软件功能模块或子模块的形式实现。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。