[發(fā)明專利]一種基于chrome的網(wǎng)頁鏡像、回放及本地映射地圖生成方法有效
| 申請?zhí)枺?/td> | 202010562547.6 | 申請日: | 2020-06-19 |
| 公開(公告)號: | CN111782998B | 公開(公告)日: | 2022-07-12 |
| 發(fā)明(設(shè)計)人: | 王文清;曾潮繽;劉詩慧 | 申請(專利權(quán))人: | 廈門市美亞柏科信息股份有限公司 |
| 主分類號: | G06F16/957 | 分類號: | G06F16/957;G06F16/955;G06F16/951 |
| 代理公司: | 廈門市精誠新創(chuàng)知識產(chǎn)權(quán)代理有限公司 35218 | 代理人: | 何家富 |
| 地址: | 361000 福建省廈門市*** | 國省代碼: | 福建;35 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 chrome 網(wǎng)頁 回放 本地 映射 地圖 生成 方法 | ||
1.一種基于chrome的網(wǎng)頁鏡像方法,其特征在于,包括以下步驟:
S101:通過chrome devtools API連接chrome或chromium瀏覽器并打開一個tab頁面;
S102:新建字典allResource用于存儲資源數(shù)據(jù),新建列表redirectUrlList用于存儲頁面跳轉(zhuǎn)信息;
S103:綁定事件Network.responseReceived、Network.loadingFinished、Network.requestWillBeSent到事件處理流程E1、E2、E3;
事件處理流程E1:收到E1事件后,將其中的requestId作為鍵、response作為值,存入allResource字典;
事件處理流程E2:收到E2事件后,得知requestId對應(yīng)的消息體已完成接收,結(jié)合E1所收到的消息描述,組成一個完整的http響應(yīng);
事件處理流程E3:收到E3事件后,檢測參數(shù)redirectResponse中是否有值,如果有值說明存在URL跳轉(zhuǎn)行為,取該值的字段url得到原始請求的URL,取參數(shù)request的字段url得到跳轉(zhuǎn)后的URL;新建一個字典,將原始請求URL寫入orgUrl字段,跳轉(zhuǎn)后的URL寫入realUrl字段,將該字典壓入列表redirectUrlList;
S104:調(diào)用Network.enable()準(zhǔn)備接收事件,清除瀏覽器緩存或調(diào)用Network.setCacheDisabled,將參數(shù)cacheDisabled設(shè)置為True后,調(diào)用Page.navigate并將參數(shù)url設(shè)置為需要鏡像的網(wǎng)頁URL;
S105:當(dāng)瀏覽器請求網(wǎng)絡(luò)數(shù)據(jù)且網(wǎng)頁加載完成后,進入步驟S6;
S106:新建一個根字典root用于存儲網(wǎng)頁鏡像,并進行以下三種操作:
操作一:調(diào)用Runtime.evaluate,將參數(shù)expression設(shè)置為window.location.href,其余參數(shù)使用默認值,從返回值中獲得當(dāng)前頁面URL,寫入root字段targetURL;
操作二:將字典allResource寫入root字段extraInfo;將redirectUrlList寫入root字段redirectURL;
操作三:調(diào)用DOM.getDocument,將參數(shù)depth設(shè)置1,參數(shù)pierce設(shè)置true,得到返回值node;
S107:調(diào)用DOM.getOuterHTML,將參數(shù)nodeId設(shè)置為返回值node中的nodeId字段,參數(shù)backendNodeId設(shè)置為返回值node中的backendNodeId字段,返回值即為渲染后的網(wǎng)頁內(nèi)容;
S108:將步驟S107返回的網(wǎng)頁內(nèi)容寫入root字段targetBody;
S109:將root序列轉(zhuǎn)化后保存到本地,形成鏡像文件。
2.根據(jù)權(quán)利要求1所述的基于chrome的網(wǎng)頁鏡像方法,其特征在于:事件處理流程E2中組成一個完整的http響應(yīng)的具體方法為:通過調(diào)用Network.getResponseBody并傳入requestId來獲得消息體內(nèi)容,通過其返回的base64Encoded參數(shù)判斷消息體是否已經(jīng)進行base64編碼,如未進行base64編碼,將消息體進行base64編碼,并在allResource中找到對應(yīng)requestId的值,新增一個data字段,將base64編碼后的消息體存入該requestId的值中。
3.根據(jù)權(quán)利要求1所述的基于chrome的網(wǎng)頁鏡像方法,其特征在于:網(wǎng)頁加載完成的判斷為監(jiān)控網(wǎng)絡(luò)請求和人工觀察兩種方法中的一種。
4.一種網(wǎng)站本地映射地圖生成方法,其特征在于,包括以下步驟:
S201:創(chuàng)建字典root用于存儲網(wǎng)站地圖;
S202:遍歷采用權(quán)利要求1~3中任一方法生成的鏡像文件;
S203:提取鏡像文件中targetURL字段的值;
S204:將提取的targetURL字段的值作為鍵,將鏡像文件的地址作為值,寫入root字典中;
S205:判斷是否遍歷完所有鏡像文件,如果是,進入S206;否則,返回S203;
S206:將root字典序列化保存到本地,形成本地網(wǎng)站地圖文件。
5.一種網(wǎng)站回放方法,其特征在于,包括以下步驟:
S301:輸入要回放的采用權(quán)利要求1~3中任一方法生成的鏡像文件Image,網(wǎng)站地圖Map,通過chrome devtools API連接chrome或chromium瀏覽器并打開一個tab頁面,進入步驟S302;
S302:監(jiān)聽事件Page.close和Network.requestIntercepted,對應(yīng)事件處理流程E4和E5,進入步驟S303;
S303:調(diào)用Page.enable()和Network.enable()開始事件監(jiān)聽,進入步驟S304;
S304:調(diào)用Network.setRequestInterception,將參數(shù)patterns設(shè)置為[{'urlPattern':'*'}],進入步驟S305;
S305:調(diào)用Page.navigate,將參數(shù)url設(shè)置為輸入鏡像文件Image的targetURL字段,觸發(fā)瀏覽器進行網(wǎng)絡(luò)請求,初始流程結(jié)束,等待事件處理流程E4和E5的處理;
(1)事件處理流程E4:當(dāng)接受到用戶關(guān)閉頁面事件通知后,結(jié)束對該tab頁面的控制,結(jié)束網(wǎng)頁回放;
(2)事件處理流程E5的處理包括以下步驟:
S306:檢測該網(wǎng)絡(luò)請求是否為當(dāng)前Image的首次網(wǎng)絡(luò)請求,如果是,則進入步驟S307,否則,進入步驟S310;
S307:遍歷Image的extraInfo字典的值value,取其url字段跟網(wǎng)絡(luò)請求的URL進行比較,判斷兩者是否相等,如果相等則節(jié)點匹配,進入步驟S308;否則,進入步驟S309;
S308:獲取匹配節(jié)點value的headers字段,將其設(shè)置為一個字典,字典的鍵為http請求頭名稱,字典的值為http請求頭對應(yīng)的值,根據(jù)http的格式將鍵和值做拼接處理,寫入二進制流stream,進入步驟S314;
S309:生成一個包括狀態(tài)碼、類型描述信息和編碼的頭信息,寫入二進制流stream,進入S314;
S310:判斷網(wǎng)絡(luò)請求的URL是否匹配網(wǎng)站地圖Map里面其他鏡像的鍵,如果是,則重置Image為匹配URL的Image文件,返回步驟S307;否則,進入步驟S311;
S311:遍歷Image的extraInfo字典的值value,取其url字段跟網(wǎng)絡(luò)請求的URL進行比較,判斷兩者是否相等,如果相等則節(jié)點匹配,進入步驟S312;否則,進入步驟S316;
S312:獲取匹配節(jié)點value的headers字段,將其設(shè)置為一個字典,字典的鍵為http請求頭名稱,字典的值為http請求頭對應(yīng)的值,根據(jù)http的格式將鍵和值做拼接處理,寫入二進制流stream,進入步驟S313;
S313:獲取匹配節(jié)點value的data字段,將其從base64編碼還原,追加寫入stream,并將stream進行base64編碼,獲得strsteam,進入步驟S15;
S314:將當(dāng)前鏡像Image的targetBody字段內(nèi)容追加寫入stream,并將stream進行base64編碼,獲得strsteam,進入步驟S315;
S315:調(diào)用Network.continueInterceptedRequest,將參數(shù)interceptionId設(shè)置為事件處理流程E5的請求標(biāo)識interceptionId,參數(shù)rawResponse設(shè)置為strstream,參數(shù)url設(shè)置為當(dāng)前網(wǎng)絡(luò)請求的URL,結(jié)束事件處理流程E5的處理;
S316:調(diào)用Network.continueInterceptedRequest,將參數(shù)interceptionId設(shè)置為事件處理流程E5的請求標(biāo)識interceptionId,參數(shù)errorReason設(shè)置為BlockedByClient,結(jié)束事件處理流程E5的處理。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于廈門市美亞柏科信息股份有限公司,未經(jīng)廈門市美亞柏科信息股份有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010562547.6/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 一種回放通用模塊
- 視頻回放設(shè)備和用于控制視頻回放設(shè)備的方法
- 音量限制
- 用于時間同步的多區(qū)域媒體流式傳輸?shù)南到y(tǒng)和方法
- 設(shè)備回放故障恢復(fù)和重新分配
- 回放數(shù)據(jù)獲取與流量回放方法、設(shè)備及存儲介質(zhì)
- 視頻回放方法、設(shè)備及計算機存儲介質(zhì)
- 視頻回放方法、裝置、設(shè)備和計算機可讀存儲介質(zhì)
- 用于在聯(lián)網(wǎng)回放設(shè)備之間傳送回放標(biāo)記的媒體內(nèi)容系統(tǒng)
- 一種無人機綜合監(jiān)視數(shù)據(jù)多模式回放方法及系統(tǒng)





