浏览器web页面自动存储方法与流程

文档序号:13422004阅读:3165来源:国知局

本发明涉及浏览器技术领域,特别涉及各类操作系统下终端设备浏览器web页面自动存储方法。



背景技术:

在对浏览器终端设备上进行开发时,当一个页面出现错误,我们并不能像在pc上一样能够快速的查看到页面的html代码,从而就不能对问题进行分析。

如果采用工具对访问过的页面进行抓包,一方面抓包需要通过专用的抓包路由器去抓取页面,另一方面所有访问过的页面都会被抓取并存放在一个文件夹中,未按照web页面原始递归路径保存,无法明确页面构成,这样也不能快速的对问题页面进行定位。

当前,html5技术的快速发展衍生出大量基于web的应用运行在各类设备上,web技术标准从产生到现在,一直存在在各类浏览器上运行的语法兼容性问题,遇到类似问题时,迫切需要一种能够为开发者或后期维护人员带来便捷、提高效率方法。



技术实现要素:

本发明要解决的技术问题是:提供一种浏览器web页面自动存储方法,使浏览器web页面自动按照原始递归路径存储,当页面出现错误时,能够快速定位到问题页面。

为解决上述问题,本发明采用的技术方案是:浏览器web页面自动存储方法,包括步骤:

a.检测文件系统中标志文件是否存在,如果存在,则进入步骤b,如果不存在,则不做任何处理;

b.检测用户是否按下了确定键,如果按下了确定按键,则进入步骤c,如果未按下确定按键,则不做任何处理;

c.创建总文件夹,并在总文件夹下,通过解析当前所访问到url的方式递归创建文件夹,并根据解析到的文件名来命名资源文件;

d.判断当前的url是否在set容器中,如果当前的url不在set容器中,则将url插入set容器,并读取当前的数据至创建好的资源文件中,如果当前的url存放在set容器中,则将读取到的数据追加至创建好的资源文件中。

进一步的,步骤b通过浏览器按键处理模块判断enter键的执行情况,以判断是否按下了确定键。

进一步的,步骤c中,若url中有“?”,则在创建文件夹和命名资源文件之前,将url中“?”进行替换。

进一步的,步骤c对要创建的文件判断其文件名加上路径名是否大于255,如果大于,则对它进行截断处理。

本发明的有益效果是:本发明在浏览器终端设备上,不通过抓包工具对浏览器页面进行抓取,而是将浏览器获取到的数据流恢复为资源文件,并对资源文件按照页面的不同进行存放,当页面出现错误时,能够快速定位到问题页面,这样可以方便浏览器开发者更快的对页面进行设计进程。

附图说明

图1为实施例的流程图。

具体实施方式

首先介绍目前浏览器终端设备上的抓包流程。如果有页面发生了错误,我们需要将浏览器页面抓取到本地,然后分析页面代码,找出其中的问题。

但是我们的机顶盒浏览器本身并不能像pc浏览器那样自带抓包功能,因此如果需要对页面代码进行抓取,首先需要通过抓包路由器将访问到的所有页面抓取到一个pcap文件中,然后对pcap文件进行分析或者从pcap文件中将所有资源文件导出。导出后的资源文件通常放在同一个目录下,这样很难定位到我们想要分析的页面代码。

针对上面的问题,本发明采取下面的技术方案来解决:

1、浏览器渲染网页的基础是首先通过网络将资源文件下载下来,然后对下载下来的网页进行dom解析后再进行渲染。通常下载下来的文件用char数组来存放,并有一个int型变量用来存放数组的长度。这里char数组中每次存放的数据通常并不是整个文件,它会受网络的影响。网络良好的情况下每次读到的字符串就会较长,而网络不好的情况下读取的字符串就比较短。

资源文件的接收可能是交叉完成的,也就是一个资源文件被接收一段数据以后,下次接收的是另一个资源文件的数据,因此我们需要区分不同资源文件的数据。

2、为了区分不同资源文件,我们首先对所有的资源文件建立一个索引,索引值即为访问到的url。考虑到每次接收的数据可能来自于不同的资源文件,我们需要对资源文件进行判断,因此这里可以使用set容器存储资源文件对应的url。如果该url不存在于set容器,则将其添加到set容器中,并将对应的数据写入到创建的文件中去。如果该url已存在于set容器,则不对其进行添加,但是需要将对应的数据追加到创建的文件中。

3、上面提到需要将数据写入到创建的文件中,这些文件需要我们自己去创建,文件以及其存放的文件夹命名规则由url来定,比如对于http://www.baidu.com/hello/world.html,需要将其存放到hello文件夹下的world.html文件中去。另外如果url长度过长,则会造成文件存放到对应文件夹下时出错,因为文件系统规定路径长度不能超过256个字符,因此如果文件的路径长度超过256时需要对其进行截取。

因为在url中可能会有”?”等特殊字符,这里我们模仿抓包工具将所有的”?”都替换为”%3f”。另外为了方便我们去查阅创建的文件,需要将所有的文件都存放到一个公有的文件夹中去。

4、考虑到我们每按下一次确定键都会进入到一个新的页面中去,为了防止不同页面的资源文件混乱存放。我们在每次按下确定键时都会创建一个不同的文件夹,然后将步骤3中创建的文件夹或者文件放到新创建的文件夹中去。通过这种方式就能让我们快速的定位到想要查看的资源文件。

有时用户可能不想进行页面的抓取,这时我们可以放一个标志文件到文件系统中。如果标志文件存在就表明用户需要对页面进行抓取,这时就会将数据流存放到文件中去。如果标志文件不存在就表明用户不需要对页面进行抓取,这时就不会执行我们所添加的抓包代码。

实施例

实施例提供一种浏览器web页面自动存储方法,如图1所示,具体步骤如下:

a.检测文件系统中标志文件是否存在,如果存在,就开始执行我们的抓包代码流程,进入步骤b,如果不存在,则不做任何处理。

b.检测用户是否按下了确定键,这里可以通过浏览器按键处理模块判断enter键的执行情况,来判断是否按下了确定键,如果按下了enter按键,表明按下了确定按键,则进入步骤c,如果未按下确定按键,则不做任何处理。

c.创建总文件夹,所有加载到的资源文件都放到该文件夹中。为了模拟其在服务器上所存放的位置,这里主要是通过解析当前所访问到url的方式递归创建文件夹,并根据解析到的文件名来命名我们的资源文件。

考虑到在url中会有很多“?”用于传递参数,但是在文件夹或者文件的命名不能包括“?”等符号,因此我们需要将其替换掉。这里采用和wireshark相同的方式,遇到“?”就将其替换为“%3f”。

无论是linux还是windows系统它们所采用的文件系统都规定文件名的最大长度不能大于255,但是url如果过长则会造成我们根据url创建的文件因为文件系统对文件名长度的限制而不能成功创建。考虑到这种情况,我们首先会对要创建的文件判断其文件名加上路径名是否大于255,如果大于就对它进行截断处理,这样能够保证文件不因为文件名的原因而不能被正确创建。

d.接下来就需要对页面数据进行存储,在浏览器内核中有很多地方都可以对资源数据进行访问,但是有些地方可能只处理文本资源,而另外有一些只处理图像资源。考虑到需要存放所有的数据,包括html、css、js和图片,因此我们需要找到一个能够接收所有数据的接口。这里我们选择浏览器数据统一接收模块,其接口的定义为:

voidresourceloader::didreceivedata(webkit::weburlloader*,constchar*data,intlength,intencodeddatalength);

其中data就是将要处理的数据,而length代表数据的长度。

因为data只是length长度的数据,它可能只是一个资源文件的一部分。另外前后两次执行该接口所对应的url可能不是同一个,也就是说在接收数据时可能接收一个资源文件的一部分后,下次却接收到另一个资源文件的一部分。

为了解决资源交叉接收的问题,我们可以设置一个set容器用于存放url。如果当前的url不在set容器中,那么将url插入set容器,并读取当前的数据至创建好的资源文件中。如果当前的url存放在set容器中,则将读取到的数据追加至创建好的资源文件中。

以上描述了本发明的基本原理和主要的特征,说明书的描述只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。

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