1.一種基于網(wǎng)絡(luò)協(xié)議實(shí)施監(jiān)控網(wǎng)頁(yè)訪問(wèn)的方法,其特征在于包括以下步驟:
S1:通過(guò)監(jiān)控路由器,實(shí)現(xiàn)網(wǎng)頁(yè)請(qǐng)求數(shù)據(jù)包采集,收集網(wǎng)絡(luò)數(shù)據(jù)中的網(wǎng)頁(yè)請(qǐng)求數(shù)據(jù)包;
S2:網(wǎng)頁(yè)請(qǐng)求數(shù)據(jù)包解析,獲取httpHost值和網(wǎng)絡(luò)路徑值;
S3:請(qǐng)求返回包采集,收集網(wǎng)絡(luò)數(shù)據(jù)中的網(wǎng)頁(yè)請(qǐng)求返回包;
S4:請(qǐng)求返回包解析,獲取獲取返回內(nèi)容長(zhǎng)度和返回內(nèi)容,并將其寫(xiě)入緩存;
S5:網(wǎng)頁(yè)請(qǐng)求封裝,將網(wǎng)絡(luò)請(qǐng)求與返回的值進(jìn)行整合,獲得網(wǎng)頁(yè)的內(nèi)容。
2.根據(jù)權(quán)利要求1所述的一種基于網(wǎng)絡(luò)協(xié)議實(shí)施監(jiān)控網(wǎng)頁(yè)訪問(wèn)的方法,其特征在于所述S1的詳細(xì)步驟如下:
S11:通過(guò)第三方API提供的相應(yīng)接口抓取用戶使用網(wǎng)絡(luò)過(guò)程中產(chǎn)生的數(shù)據(jù)包,再通過(guò)瀏覽器的協(xié)議類型、端口號(hào)、Host和網(wǎng)絡(luò)請(qǐng)求地址進(jìn)行過(guò)濾,若發(fā)現(xiàn)對(duì)應(yīng)數(shù)據(jù)包則記錄起來(lái);
S12:獲取HTTP請(qǐng)求的Accept值,從記錄的數(shù)據(jù)包中掃描特征“Accept:”到“0D0A”截取字符串即為Accrpt值;
S13:判斷請(qǐng)求是否為網(wǎng)頁(yè)請(qǐng)求,若Accept值中包含“text/html”則為網(wǎng)頁(yè)請(qǐng)求,執(zhí)行S2;否則表示不是網(wǎng)頁(yè)請(qǐng)求,結(jié)束解析。
3.根據(jù)權(quán)利要求2所述的一種基于網(wǎng)絡(luò)協(xié)議實(shí)施監(jiān)控網(wǎng)頁(yè)訪問(wèn)的方法,其特征在于所述S2的詳細(xì)步驟如下:
S21:httpHost解析,從數(shù)據(jù)包中的“Host:”到“0D0A”截取的字符串即為httpHost值;
S22:網(wǎng)絡(luò)路徑解析,從數(shù)據(jù)包中的“GET”到“HTTP/1.1”截取的字符串即為網(wǎng)絡(luò)路徑值。
4.根據(jù)權(quán)利要求3所述的一種基于網(wǎng)絡(luò)協(xié)議實(shí)施監(jiān)控網(wǎng)頁(yè)訪問(wèn)的方法,其特征在于所述S3的詳細(xì)步驟如下:
S31:通過(guò)第三方API提供的相應(yīng)接口抓取用戶使用網(wǎng)絡(luò)過(guò)程中產(chǎn)生的數(shù)據(jù)包,再通過(guò)返回包協(xié)議類型:TCP-HTTP和端口號(hào):80,找到相應(yīng)數(shù)據(jù)包并開(kāi)始記錄;
S32:獲取返回內(nèi)容類型,從數(shù)據(jù)包中的“Content-Type:”到第一個(gè)“;”截取字符串即為返回內(nèi)容類型;
S33:判斷返回內(nèi)容類型是否為“text/html”,若是則是網(wǎng)頁(yè)類型,執(zhí)行S4;不是則結(jié)束解析。
5.根據(jù)權(quán)利要求4所述的一種基于網(wǎng)絡(luò)協(xié)議實(shí)施監(jiān)控網(wǎng)頁(yè)訪問(wèn)的方法,其特征在于所述S4的詳細(xì)步驟如下:
S41:獲取返回內(nèi)容長(zhǎng)度命名為length;從http消息頭“0D0A0D0A”位置后為返回內(nèi)容長(zhǎng)度的十六進(jìn)制字符串值,該字符串以“0D0A”結(jié)束,通過(guò)轉(zhuǎn)換方法得到返回內(nèi)容十進(jìn)制長(zhǎng)度值記為length;
S42:獲取返回內(nèi)容,從內(nèi)容長(zhǎng)度向后獲取length個(gè)字節(jié)為返回內(nèi)容;
S43:將返回內(nèi)容寫(xiě)入到緩存;將內(nèi)容進(jìn)行解壓,又因解壓gz壓縮內(nèi)容的系統(tǒng)庫(kù)只提供了對(duì)gz文件的解壓操作,所以需將內(nèi)容寫(xiě)入到一個(gè)后綴名為“.gz”的文件中;
S44:解壓文件,調(diào)用系統(tǒng)庫(kù)直接對(duì)上一步保存的緩存文件進(jìn)行解壓,解壓后得到一個(gè)網(wǎng)頁(yè)文件即html文件,并將該html存儲(chǔ)到指定路徑;
S45:解析文件,調(diào)用庫(kù)函數(shù)對(duì)html文件進(jìn)行解析,根據(jù)網(wǎng)頁(yè)的標(biāo)簽屬性獲取對(duì)應(yīng)的內(nèi)容。
6.根據(jù)權(quán)利要求5所述的一種基于網(wǎng)絡(luò)協(xié)議實(shí)施監(jiān)控網(wǎng)頁(yè)訪問(wèn)的方法,其特征在于所述S5的詳細(xì)步驟如下:
S51:申請(qǐng)一個(gè)全局對(duì)象緩存獲取到的數(shù)值列表;
S52:獲取網(wǎng)絡(luò)請(qǐng)求數(shù)據(jù)包的本地端口號(hào),通過(guò)第三方API的相應(yīng)接口可獲取到網(wǎng)絡(luò)請(qǐng)求數(shù)據(jù)包的本地端口號(hào);
S53:網(wǎng)絡(luò)請(qǐng)求數(shù)據(jù)包校驗(yàn)取值;將本地端口號(hào)做為key在緩存列表中查找是否存在數(shù)值,該數(shù)值應(yīng)為S44得到的html文件路徑和S45獲取到的title值,若是則將該值與S2獲取到的httpHost和網(wǎng)絡(luò)路徑組合起來(lái)即為一個(gè)完整的網(wǎng)頁(yè)訪問(wèn)數(shù)據(jù);若不是則執(zhí)行S54;
S54:若S53判斷數(shù)值不存在,則將S2獲取到的httpHost和網(wǎng)絡(luò)路徑以本地端口號(hào)為key存儲(chǔ)到緩存列表中;
S55:獲取網(wǎng)絡(luò)請(qǐng)求返回包的本地端口號(hào),通過(guò)第三方API的相應(yīng)接口可獲取到網(wǎng)絡(luò)請(qǐng)求返回包的本地端口號(hào);
S56:網(wǎng)絡(luò)請(qǐng)求返回包校驗(yàn)取值;將本地端口號(hào)做為key在緩存列表中查找是否存在數(shù)值,該數(shù)值應(yīng)為S2獲取到的httpHost和網(wǎng)絡(luò)路徑,若是則將該值與S44得到的html文件路徑和S45獲取到的title值組合起來(lái)即為一個(gè)完整的網(wǎng)頁(yè)訪問(wèn)數(shù)據(jù);若不是則執(zhí)行S57;
S57:若S55判斷數(shù)值不存在,則將S44得到的html文件路徑和S45獲取到的title值以本地端口號(hào)為key存儲(chǔ)到緩存列表中。