[发明专利]一种基于chrome的网页镜像、回放及本地映射地图生成方法有效
申请号: | 202010562547.6 | 申请日: | 2020-06-19 |
公开(公告)号: | CN111782998B | 公开(公告)日: | 2022-07-12 |
发明(设计)人: | 王文清;曾潮缤;刘诗慧 | 申请(专利权)人: | 厦门市美亚柏科信息股份有限公司 |
主分类号: | G06F16/957 | 分类号: | G06F16/957;G06F16/955;G06F16/951 |
代理公司: | 厦门市精诚新创知识产权代理有限公司 35218 | 代理人: | 何家富 |
地址: | 361000 福建省厦门市*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 chrome 网页 回放 本地 映射 地图 生成 方法 | ||
1.一种基于chrome的网页镜像方法,其特征在于,包括以下步骤:
S101:通过chrome devtools API连接chrome或chromium浏览器并打开一个tab页面;
S102:新建字典allResource用于存储资源数据,新建列表redirectUrlList用于存储页面跳转信息;
S103:绑定事件Network.responseReceived、Network.loadingFinished、Network.requestWillBeSent到事件处理流程E1、E2、E3;
事件处理流程E1:收到E1事件后,将其中的requestId作为键、response作为值,存入allResource字典;
事件处理流程E2:收到E2事件后,得知requestId对应的消息体已完成接收,结合E1所收到的消息描述,组成一个完整的http响应;
事件处理流程E3:收到E3事件后,检测参数redirectResponse中是否有值,如果有值说明存在URL跳转行为,取该值的字段url得到原始请求的URL,取参数request的字段url得到跳转后的URL;新建一个字典,将原始请求URL写入orgUrl字段,跳转后的URL写入realUrl字段,将该字典压入列表redirectUrlList;
S104:调用Network.enable()准备接收事件,清除浏览器缓存或调用Network.setCacheDisabled,将参数cacheDisabled设置为True后,调用Page.navigate并将参数url设置为需要镜像的网页URL;
S105:当浏览器请求网络数据且网页加载完成后,进入步骤S6;
S106:新建一个根字典root用于存储网页镜像,并进行以下三种操作:
操作一:调用Runtime.evaluate,将参数expression设置为window.location.href,其余参数使用默认值,从返回值中获得当前页面URL,写入root字段targetURL;
操作二:将字典allResource写入root字段extraInfo;将redirectUrlList写入root字段redirectURL;
操作三:调用DOM.getDocument,将参数depth设置1,参数pierce设置true,得到返回值node;
S107:调用DOM.getOuterHTML,将参数nodeId设置为返回值node中的nodeId字段,参数backendNodeId设置为返回值node中的backendNodeId字段,返回值即为渲染后的网页内容;
S108:将步骤S107返回的网页内容写入root字段targetBody;
S109:将root序列转化后保存到本地,形成镜像文件。
2.根据权利要求1所述的基于chrome的网页镜像方法,其特征在于:事件处理流程E2中组成一个完整的http响应的具体方法为:通过调用Network.getResponseBody并传入requestId来获得消息体内容,通过其返回的base64Encoded参数判断消息体是否已经进行base64编码,如未进行base64编码,将消息体进行base64编码,并在allResource中找到对应requestId的值,新增一个data字段,将base64编码后的消息体存入该requestId的值中。
3.根据权利要求1所述的基于chrome的网页镜像方法,其特征在于:网页加载完成的判断为监控网络请求和人工观察两种方法中的一种。
4.一种网站本地映射地图生成方法,其特征在于,包括以下步骤:
S201:创建字典root用于存储网站地图;
S202:遍历采用权利要求1~3中任一方法生成的镜像文件;
S203:提取镜像文件中targetURL字段的值;
S204:将提取的targetURL字段的值作为键,将镜像文件的地址作为值,写入root字典中;
S205:判断是否遍历完所有镜像文件,如果是,进入S206;否则,返回S203;
S206:将root字典序列化保存到本地,形成本地网站地图文件。
5.一种网站回放方法,其特征在于,包括以下步骤:
S301:输入要回放的采用权利要求1~3中任一方法生成的镜像文件Image,网站地图Map,通过chrome devtools API连接chrome或chromium浏览器并打开一个tab页面,进入步骤S302;
S302:监听事件Page.close和Network.requestIntercepted,对应事件处理流程E4和E5,进入步骤S303;
S303:调用Page.enable()和Network.enable()开始事件监听,进入步骤S304;
S304:调用Network.setRequestInterception,将参数patterns设置为[{'urlPattern':'*'}],进入步骤S305;
S305:调用Page.navigate,将参数url设置为输入镜像文件Image的targetURL字段,触发浏览器进行网络请求,初始流程结束,等待事件处理流程E4和E5的处理;
(1)事件处理流程E4:当接受到用户关闭页面事件通知后,结束对该tab页面的控制,结束网页回放;
(2)事件处理流程E5的处理包括以下步骤:
S306:检测该网络请求是否为当前Image的首次网络请求,如果是,则进入步骤S307,否则,进入步骤S310;
S307:遍历Image的extraInfo字典的值value,取其url字段跟网络请求的URL进行比较,判断两者是否相等,如果相等则节点匹配,进入步骤S308;否则,进入步骤S309;
S308:获取匹配节点value的headers字段,将其设置为一个字典,字典的键为http请求头名称,字典的值为http请求头对应的值,根据http的格式将键和值做拼接处理,写入二进制流stream,进入步骤S314;
S309:生成一个包括状态码、类型描述信息和编码的头信息,写入二进制流stream,进入S314;
S310:判断网络请求的URL是否匹配网站地图Map里面其他镜像的键,如果是,则重置Image为匹配URL的Image文件,返回步骤S307;否则,进入步骤S311;
S311:遍历Image的extraInfo字典的值value,取其url字段跟网络请求的URL进行比较,判断两者是否相等,如果相等则节点匹配,进入步骤S312;否则,进入步骤S316;
S312:获取匹配节点value的headers字段,将其设置为一个字典,字典的键为http请求头名称,字典的值为http请求头对应的值,根据http的格式将键和值做拼接处理,写入二进制流stream,进入步骤S313;
S313:获取匹配节点value的data字段,将其从base64编码还原,追加写入stream,并将stream进行base64编码,获得strsteam,进入步骤S15;
S314:将当前镜像Image的targetBody字段内容追加写入stream,并将stream进行base64编码,获得strsteam,进入步骤S315;
S315:调用Network.continueInterceptedRequest,将参数interceptionId设置为事件处理流程E5的请求标识interceptionId,参数rawResponse设置为strstream,参数url设置为当前网络请求的URL,结束事件处理流程E5的处理;
S316:调用Network.continueInterceptedRequest,将参数interceptionId设置为事件处理流程E5的请求标识interceptionId,参数errorReason设置为BlockedByClient,结束事件处理流程E5的处理。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于厦门市美亚柏科信息股份有限公司,未经厦门市美亚柏科信息股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010562547.6/1.html,转载请声明来源钻瓜专利网。