无埋点式云端收集分析浏览器Trace的方法及系统与流程

文档序号:13421322阅读:156来源:国知局
无埋点式云端收集分析浏览器Trace的方法及系统与流程

本发明实施例涉及互联网技术领域,具体涉及一种无埋点式云端收集分析浏览器trace的方法及系统。



背景技术:

基于浏览器的云原生应用已经成为未来应用发展的一大方向。云原生应用拥有无需安装、随时更新、标准安全的特点。针对此类应用运行的容器——浏览器的开发与调优过程中,收集与分析不同网页应用的trace成为寻找性能瓶颈、安全漏洞和使用情况的入口。

在收集不同浏览器、不同网页应用的不同trace的过程中,有几个问题严重影响了开发人员的效率:需要测试的网页应用通常不开源,而传统的trace收集方法需要在源代码中埋点,工程量难以估量,不适合本使用场景;网页应用产生的某些trace高达数gb,难以在个人智能计算设备上运行的浏览器中实现实时处理分析;网页应用的trace通常由手工收集、分析与存档,效率难以提升。



技术实现要素:

本发明实施例的目的在于提供一种用于无埋点式云端收集分析浏览器trace的方法及系统。

第一方面,本发明实施例提供了一种无埋点式云端收集分析浏览器trace的方法,包括:

计算机a根据计算机b提供的pac配置文件设置计算机a浏览器的代理规则;

计算机a在访问计算机c所提供的符合所述规则的网页时,请求由计算机b进行代理,以使计算机b依据规则在计算机c向计算机a回复的网页信息中注入追踪代码并将所述网页信息转发至计算机a;

计算机a在运行网页时,通过追踪代码将与计算机d建立通信,并在网页解析与运行过程中,将指定追踪的api调用信息分批发送至计算机d,以供计算机d对网页在计算机a上的每次运行生成分析结果。

可选地,所述根据计算机b提供的pac配置文件设置计算机a浏览器的代理规则包括:

配置文件的代理规则仅对html协议传输的网页生效,图片资源文件、视频资源文件、音频资源文件、javascript代码文件以及css代码文件将被过滤,websocket连接将被过滤;配置文件中计算机b的地址将依据计算机b中所配置的ip或域名动态生成。

可选地,所述计算机b依据规则在计算机c向计算机a回复的网页信息中注入追踪代码并将所述网页信息转发至计算机a,进一步包括:

计算机b依据计算机a发出的网页访问http/https请求中pathquery的inject字段取值来动态选择注入的追踪代码类型,依据预先配置在计算机b上的配置文件中声明的该追踪代码类型获取对应的追踪代码;计算机b依次在计算机c提供的http/https网页回复信息中的body字段首部注入工具代码库和开发者追踪代码。

可选地,所述计算机a在运行网页时,通过追踪代码将与计算机d建立通信,进一步包括:

计算机a在运行网页时首先执行开发者追踪代码,通过所述开发者追踪代码将在浏览器内部监听指定函数的调用;其中,预先配置在计算机b上的工具代码库提供的函数用于与计算机d指定tcp端口提供的分析服务建立websocket连接;计算机d的ip或域名由计算机b在注入追踪代码时指定;

当追踪代码与计算机d完成websocket的建立后,计算机d初始化预先配置在计算机d上的分析模块,并进入等待分析的状态。

可选地,所述在网页解析与运行过程中,将指定追踪的api调用信息分批发送至计算机d,进一步包括:

计算机a利用网页上原程序调用浏览器原生函数f的被监听的函数句柄f’,基于追踪代码通过f’获取到原程序调用函数的参数列表;

基于追踪代码调用浏览器提供的原函数句柄f,获得函数返回值;

基于追踪函数将包含调用的函数签名、参数列表和返回值的函数调用记录进行二进制压缩编码后暂存在缓冲区,并将所述返回值返回给网页原程序;

当所述缓冲区的存储量达到指定阈值时,基于追踪代码将缓冲区中的所有函数调用记录拷贝至数据发送线程,清空缓冲区,并通知数据发送线程向计算机d发送编码后的函数调用记录;

计算机d在接收到函数调用记录后,使用分析模块分析解码后的调用记录列表。

可选地,对所述函数调用记录进行二进制压缩编码方式包括:

分三级缓冲区,每一级均包含8byte长度的头部,其中4byte标明缓冲区级别,取值1~3;余下4byte标明缓冲区的字节数;

第一级缓冲区为函数调用记录,每一条记录为8byte;其中,前2byte存储函数编号,之后的2byte存储函数返回值,最后4byte存储调用记录的参数列表在第二级缓冲区中的地址;

第二级缓冲区为参数列表存储区;每一条参数列表的记录长度不固定,每一条记录由如下部分组成:2byte用于存储参数列表字节数,2byte用于存储参数列表长度n,余下的byte存储n个参数;每个参数长度可变,所述参数由如下部分组成:1byte存储一级参数类型,3byte存储二级参数类型,对于指定类型的参数还包括4byte存储参数在第三级缓冲区中的地址,4byte存储参数字节数;

对于数组和字符串类型,其实际值存储在第三级缓冲区中。

可选地,所述基于追踪代码将缓冲区中的所有函数调用记录拷贝至数据发送线程,清空缓冲区,进一步包括:

在主线程中运行的追踪代码将三个缓冲区中存储的函数调用记录拷贝至发送线程的作用域中,再重标记缓冲区,以使缓冲区的原有内存区域能够继续使用。

可选地,计算机d使用分析模块分析解码后的调用记录列表,进一步包括:

计算机d将接收到的二进制格式的三个缓冲区验证后,重新解析为函数签名、返回值、参数列表的形式;

计算机d调用分析模块的预备计数函数,将要分析的调用记录列表的长度传递给分析模块;

计算机d在若干个线程上调用分析模块的分析函数,将调用记录序号和单条记录实体传递给分析模块直到本次缓冲区中所有的函数调用记录都被分析完毕;

计算机d调用分析模块的发送回复函数,获取到分析模块回传给计算机a中的追踪代码。

可选地,计算机d对网页在计算机a上的每次运行生成分析结果,进一步包括:

当计算机a的网页进程被关闭或者已达到分析指标时,计算机a与计算机d的websocket通信终止,计算机d分析模块的结束函数将会被调用,输出对于网页的本次运行的分析结果。

第二方面,本发明实施例提供了一种无埋点式云端收集分析浏览器trace的系统,包括:

代理规则设置模块,用于根据计算机b提供的pac配置文件设置计算机a浏览器的代理规则;

请求代理模块,用于在访问计算机c所提供的符合所述规则的网页时,请求由计算机b进行代理,计算机b依据规则在计算机c向计算机a回复的网页信息中注入追踪代码并将所述网页信息转发至计算机a;

请求分析模块,用于在运行网页时,通过追踪代码将与计算机d建立通信,并在网页解析与运行过程中,将指定追踪的api调用信息分批发送至计算机d,计算机d对网页在计算机a上的每次运行生成分析结果。

本发明实施例提供了一种无埋点式云端收集分析浏览器trace的方法及系统,该方法中计算机a使用计算机b提供的pac配置文件配置浏览器代理规则。计算机a在访问计算机c所提供的符合规则的网页时,其请求由计算机b代理,计算机b向计算机c的回复中注入追踪代码并转发回计算机a。计算机a运行网页时,追踪代码将与计算机d建立通信,并在网页运行过程中,将开发者指定追踪的api调用信息发送至计算机d分析处理。本方法无需计算机c在网站上做代码埋点,无需计算机a负担分析计算开销,提供了具有网页代理、trace收集与trace分析功能的编程框架,适合如下需求的二次开发:在云端收集分析指定网页在任意设备上浏览器运行时产生的各类型trace。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1是本发明一种无埋点式云端收集分析浏览器trace的简略流程图;

图2是本发明一种无埋点式云端收集分析浏览器trace的详细流程图;

图3是本发明中浏览器trace分析模块的生命周期流程图;

图4是本发明中编码压缩后函数调用列表的二进制数据格式示意图;

图5是本发明提供的一种无埋点式云端收集分析浏览器trace的系统实施例结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

第一方面,本发明实施例提供了一种无埋点式云端收集分析浏览器trace的方法,如图1所示,包括以下步骤:

s101:修改计算机a的系统代理或浏览器代理配置为计算机b提供的pac自动配置,计算机a向计算机b请求pac,pac中所述规则将被计算机a的操作系统或浏览器解析并执行,后续浏览器的http/https请求(网页访问请求)将遵照pac中所述规则执行。

s102:对于计算机a上符合要求目标为计算机c的请求,将由计算机a的浏览器发送到计算机b指定端口的代理服务器上。

s103:计算机b的代理服务器获取到请求后,解析获得实际的目标为计算机c,并通过请求中附带的http/httpsquery字段获取到注入类型;计算机b首先将该请求发送给计算机c,在获得计算机c的回复后,依据注入类型向回复的http/httpsbody字段首部注入相应的追踪代码,最终将修改后的回复发送给计算机a。

s104:计算机a在获取到修改后的回复后,立即解释运行该网页;其中追踪代码由于在网页首部,率先被加载运行;追踪代码t使用本系统注入的标准库(也即预先配置在计算机b上的工具代码库提供的函数),与计算机d指定端口的websocket服务器建立连接;追踪代码监听计算机a浏览器中特定api的调用记录,并将调用记录压缩编码后发送至计算机d。

s105:计算机d接收到编码后的函数调用记录后,调用对于的分析模块的分析方法逐条处理调用信息,在达到分析指标或是websocket连接关闭后,统计输出所有调用信息的分析结果。

在本发明实施例提供的无埋点式云端收集分析浏览器trace的方法中,计算机a使用计算机b提供的pac配置文件配置浏览器代理规则。计算机a在访问计算机c所提供的符合规则的网页时,其请求由计算机b代理,计算机b向计算机c的回复中注入追踪代码并转发回计算机a。计算机a运行网页时,追踪代码将与计算机d建立通信,并在网页运行过程中,将开发者指定追踪的api调用信息发送至计算机d分析处理。本方法无需计算机c在网站上做代码埋点,无需计算机a负担分析计算开销,提供了具有网页代理、trace收集与trace分析功能的编程框架,适合如下需求的二次开发:在云端收集分析指定网页在任意设备上浏览器运行时产生的各类型trace。

其中,这里的计算机a可以理解为客户端,这里的计算机b可以了理解为配置有代理服务器的服务器设备,计算机b除了代理服务器还配置了其他内容,例如工具代码库等,计算机c可以理解为网页服务器,计算机可以理解为分析服务器。

图2示出了本发明实施例提供的一种可选的无埋点式云端收集分析浏览器trace的详细流程图;参照图2,所述方法包括:

s201:修改计算机a的系统代理或浏览器代理配置为计算机b提供的pac自动配置,计算机a向计算机b请求pac,pac中所述规则将被计算机a的操作系统或浏览器解析并执行,后续浏览器的http/https请求将遵照pac中所述规则执行。

s202:对于计算机a上不符合要求或目标为计算机a、b、c、d的请求,将由计算机a的浏览器直接向目标计算机(也即计算机b、c、d)的标准服务器发送请求。举例来说,对于计算机a上目标为计算机b的请求,直接发给计算机b,而不发给计算机b上配置的代理服务器。

s203:对于计算机a上符合要求目标为计算机c的请求,将由计算机a的浏览器发送到计算机b指定端口的代理服务器上。

s204:计算机b的代理服务器获取到来自计算机a的代理请求后,解析获得实际的目标为计算机c,并通过请求中附带的http/httpsquery字段获取到注入类型;计算机b首先将该请求发送给计算机c的服务器,依据注入类型向计算机c的回复的http/httpsbody字段首部注入相应的追踪代码,最终将修改后的回复发送给计算机a。

s205:计算机a在获取到修改后的回复后,立即解释运行该网页;其中追踪代码由于在网页首部,率先被加载运行;追踪代码t使用本系统注入的标准库,与计算机d指定端口的websocket服务器建立连接;追踪代码通过改写指定浏览器api句柄并代理调用实际浏览器api的方式,监听原网页程序对这些api的调用记录。

s206:计算机d在达到分析指标或是websocket连接关闭后,统计输出所有调用信息的分析结果。

s207:追踪代码在原网页程序调用计算机a浏览器中特定api的时候,记录下对应api的函数签名、参数列表与实际函数的调用返回值,编码压缩后暂存在调用记录缓冲区中,并将实际返回值返回给原网页程序。

s208:在缓冲区达到阈值时,追踪代码将缓冲区复制到发送线程,清空缓冲区,由发送线程将通过websocket调用记录发送给计算机d的分析模块。

s209:计算机d解析收到的调用记录,并逐条调用分析模块的分析函数处理调用记录。

s210:计算机d在每次接收到的一批调用记录列表处理完毕后,调用分析模块的获取回复函数,将开发者指定的部分分析结果通过websocket发送给计算机a的追踪代码。

图3是本发明中浏览器trace分析模块的生命周期流程图;参照图3,所述方法包括:

s301:分析模块被实例化后进入初始状态。其中这里的分析模块为预先配置在计算机d终于执行分析操作的分析模块。

s302:分析模块被调用准备函数,初始化处理类型、输出格式、本地工作区地址等参数,进入等待状态;或是由单轮分析完成状态调用发送回复函数,获取到发送给追踪函数的部分分析结果,随后进入下一轮等待状态。

s303:计算机d在接收到计算机a中发送线程传输的二进制格式的调用记录后,首先解析为标准的对象格式,分析模块随后被调用预备计数函数,此时分析模块初始化本轮分析的本地变量,进入预备状态。

s304:分析模块被多线程调用逐对象分析函数直到调用记录列表中的每条记录都分析完成,此时每次函数调用都只分析一条调用记录,分析结果保存在分析模块的内存变量中,随后进入单轮分析完成状态。

s305:计算机d在达到分析指标或是websocket连接关闭后,分析模块被调用结束函数,此时分析模块统计输出所有调用信息的分析结果,进入销毁状态。

图4是本发明中编码压缩后函数调用列表的二进制数据格式示意图;参照图4,所述方法包括:

s401:第一级缓冲区为函数调用记录;头部为8byte长度,其中4byte标明缓冲区级别,取值1~3,4byte标明缓冲区的字节数,方便解析程序解析二进制格式;每一条记录长度为8byte,依次为2byte存储函数编号,2byte存储函数返回值,4byte存储调用记录的参数列表在第二级缓冲区中的地址,即数组下标偏移量。

s402:第二级缓冲区为参数列表存储区;头部与第一级缓冲区一致;每一条参数列表的记录长度不固定,每一条记录由如下部分组成:2byte存储参数列表字节数,2byte存储参数列表长度n,后存储n个参数;每个参数长度可变,其中1byte存储参数类型,3byte存储二级参数类型,可选的对于指定类型的参数还可以包括4byte存储参数在第三级缓冲区中的地址,4byte存储参数字节数;数组和字符串类型实际值存储在第三级缓冲区中。

第二方面,本发明实施例还提供了一种无埋点式云端收集分析浏览器trace的系统,如图5所示,包括:

代理规则设置模块501,用于根据计算机b提供的pac配置文件设置计算机a浏览器的代理规则;

请求代理模块502,用于在访问计算机c所提供的符合所述规则的网页时,请求由计算机b进行代理,计算机b依据规则在计算机c向计算机a回复的网页信息中注入追踪代码并将所述网页信息转发至计算机a;

请求分析模块503,用于在运行网页时,通过追踪代码将与计算机d建立通信,并在网页解析与运行过程中,将指定追踪的api调用信息分批发送至计算机d,计算机d对网页在计算机a上的每次运行生成分析结果。

由于本实施例所介绍的无埋点式云端收集分析浏览器trace的装置为可以执行本发明实施例中的无埋点式云端收集分析浏览器trace的方法的装置,故而基于本发明实施例中所介绍的无埋点式云端收集分析浏览器trace的的方法,本领域所属技术人员能够了解本实施例的无埋点式云端收集分析浏览器trace的装置的具体实施方式以及其各种变化形式,所以在此对于该无埋点式云端收集分析浏览器trace的装置如何实现本发明实施例中的无埋点式云端收集分析浏览器trace的方法不再详细介绍。只要本领域所属技术人员实施本发明实施例中无埋点式云端收集分析浏览器trace的方法所采用的装置,都属于本申请所欲保护的范围。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的某些部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本发明实施例的网关、代理服务器、系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者系统程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干系统的单元权利要求中,这些系统中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1