一種基于模式匹配的http請(qǐng)求報(bào)文識(shí)別方法
【專利摘要】本發(fā)明提供了一種基于模式匹配的HTTP請(qǐng)求報(bào)文識(shí)別方法,該方法將HTTP請(qǐng)求報(bào)文進(jìn)行分類,利用表達(dá)式組對(duì)HTTP請(qǐng)求報(bào)文包含的3個(gè)重要字段:GET、Host、Referer分別GET、Host、Referer算法匹配,當(dāng)GET、Host、Referer三個(gè)字段都成功匹配后,認(rèn)為HTTP請(qǐng)求報(bào)文匹配成功,并將其識(shí)別為一種分類。該方法專用于HTTP請(qǐng)求報(bào)文的識(shí)別,充分考慮程序處理效率的情況下,滿足“HTTP請(qǐng)求報(bào)文識(shí)別”的靈活性,識(shí)別精確,如果需要提高精確性,可將GET匹配算法應(yīng)用到其它字段。
【專利說(shuō)明】
一種基于模式匹配的HTTP請(qǐng)求報(bào)文識(shí)別方法
技術(shù)領(lǐng)域
[0001]本發(fā)明屬于數(shù)據(jù)包識(shí)別領(lǐng)域,尤其涉及到一種基于模式匹配的HTTP請(qǐng)求報(bào)文識(shí)別方法。
【背景技術(shù)】
[0002]在項(xiàng)目應(yīng)用環(huán)境下,技術(shù)人員需要對(duì)流經(jīng)設(shè)備的HTTP報(bào)文中的請(qǐng)求報(bào)文進(jìn)行快速的識(shí)別、查詢。同時(shí),必須注意到以下幾點(diǎn):
1.由于請(qǐng)求報(bào)文的多樣性,識(shí)別方法必須具有一定的靈活性。
[0003]2.為提高系統(tǒng)處理能力,識(shí)別效率必須盡量提升。
[0004]3.為提高系統(tǒng)處理能力,查詢必須高效。
[0005]常規(guī)的方法是使用正規(guī)表達(dá)式來(lái)進(jìn)行匹配,但正規(guī)表達(dá)式存在過(guò)于龐大、效率較低的情況,所以并不適用于要求效率的項(xiàng)目環(huán)境。
【發(fā)明內(nèi)容】
[0006]為解決上述問(wèn)題,本發(fā)明提出了一種基于模式匹配的HTTP請(qǐng)求報(bào)文識(shí)別方法,所述HTTP請(qǐng)求報(bào)文包括GET、Host、Referer三個(gè)字段,所述方法包括如下步驟:
步驟一:預(yù)先定義HTTP請(qǐng)求報(bào)文的分類及其對(duì)應(yīng)的分類名,每個(gè)分類下有至少一條表達(dá)式組,每個(gè)表達(dá)式組包括Host匹配算法表達(dá)式、Referer匹配算法表達(dá)式、GET匹配算法表達(dá)式。
[0007]步驟二:選中一條待識(shí)別HTTP請(qǐng)求報(bào)文,進(jìn)行如下操作:
S2.1:選擇一個(gè)沒(méi)有對(duì)所述HTTP請(qǐng)求報(bào)文進(jìn)行過(guò)匹配計(jì)算的表達(dá)式組。
[0008]S2.2:利用S2.1選擇的表達(dá)式組對(duì)HTTP請(qǐng)求報(bào)文的Host字段進(jìn)行Host匹配運(yùn)算,如果匹配算法字段為空或匹配成功則進(jìn)行步驟S2.3,否則返回S2.1。
[0009]S2.3:對(duì)HTTP請(qǐng)求報(bào)文的Referer字段進(jìn)行匹配運(yùn)算,如果匹配算法字段為空或匹配成功則進(jìn)行步驟S2.4,否則返回S2.1。
[0010]S2.4:對(duì)HTTP請(qǐng)求報(bào)文的GET字段進(jìn)行匹配運(yùn)算,如果匹配成功則識(shí)別出HTTP請(qǐng)求報(bào)文對(duì)應(yīng)的分類名,否則返回S2.1。
[0011]S2.5:重復(fù)執(zhí)行步驟S2.1- S2.4,直到遇到匹配的表達(dá)式組,如遍歷完所有表達(dá)式組后不能匹配,則丟棄該HTTP請(qǐng)求報(bào)文。
[0012]步驟三:重復(fù)步驟二,直到遍歷完所有待識(shí)別的HTTP請(qǐng)求報(bào)文。
[0013]2.如權(quán)利要求1所述的基于模式匹配的HTTP請(qǐng)求報(bào)文識(shí)別方法,其特征在于,GET匹配算法包括的邏輯操作有or、~、and。
[0014]3.如權(quán)利要求1或2所述的基于模式匹配的HTTP請(qǐng)求報(bào)文識(shí)別方法,其特征在于,每個(gè)表達(dá)式組還包括HASH運(yùn)算表達(dá)式,HASH運(yùn)算算法具有三種操作符,分別為〉、〈、FileName,分別用于從左到右邊截取GET字段字符串、從右到左邊截取GET字段字符串、截取GET字段中的文件名。
[0015]4.如權(quán)利要求3所述的基于模式匹配的HTTP請(qǐng)求報(bào)文識(shí)別方法,其特征在于,在S2.5中,如果遇到匹配的表達(dá)式組,則根據(jù)需要截取GET字段的字符串,將其與步驟S2.4對(duì)應(yīng)的分類名進(jìn)行字符串拼接,之后進(jìn)行HASH運(yùn)算得到HASH值。
【附圖說(shuō)明】
[0016]圖1為實(shí)例舉例列表。
【具體實(shí)施方式】
[0017]本發(fā)明的設(shè)計(jì)構(gòu)思為:將HTTP請(qǐng)求報(bào)文進(jìn)行分類,利用表達(dá)式組對(duì)HTTP請(qǐng)求報(bào)文包含的3個(gè)重要字段:GET、Host、Referer分別GET、Host、Referer算法匹配,當(dāng)GET、Host、Referer三個(gè)字段都成功匹配后,認(rèn)為HTTP請(qǐng)求報(bào)文匹配成功,并將其識(shí)別為一種分類。
[0018]在對(duì)詳細(xì)步驟進(jìn)行說(shuō)明前,對(duì)本發(fā)明涉及到的算法進(jìn)行說(shuō)明。
[0019]1.GET匹配算法
GET匹配為多模匹配,其分為操作邏輯、模式串兩部份。
[0020]操作邏輯有兩種:與(and)、或(or),表明了模式串的操作邏輯。
[0021]模式串:以空格為分隔的幾個(gè)字符串,字符串前的非Γ)符號(hào),表示不能匹配該串。
[0022]下面對(duì)不同操作邏輯的情況進(jìn)行說(shuō)明。
[0023]a.操作邏輯是or(或)時(shí):
沒(méi)有~(非)邏輯的:字符串A字符串B字符串C GET字段中,包含A或包含B或包含C,匹配成功。
[0024]包括~(非)邏輯的:~字符串A字符串B字符串C GET字段中,不包含A,但包含B或包含C,匹配成功。
[0025]b.操作邏輯是and(與)的:
沒(méi)有~(非)邏輯的:字符串A字符串B字符串C GET字段中,包含A且包含B且包含C,匹配成功。
[0026]c.包括~(非)邏輯的:~字符串A字符串B字符串C GET字段中,不包含A,但包含B且包含C,匹配成功。
[0027]2.Referer匹配算法
Referer匹配算法用于對(duì)Referer字段進(jìn)行單模匹配。
[0028]3.Host匹配算法
Host匹配算法用于對(duì)Host字段進(jìn)行單模匹配。
[0029]4.HASH算法
用于從GET字段中截取關(guān)鍵字符串,作為進(jìn)行HASH運(yùn)算的部分字段,HASH運(yùn)算具有三種操作符,分別為〉、〈、Fi I eName,作用分別如下:
>:從左至右運(yùn)算,截取從左邊字符串到右邊字符串之間的內(nèi)容,作為備HASH字符串。
[0030]<:從右至左運(yùn)算,截取從右邊字符串到左邊字符串之間的內(nèi)容,作為備HASH字符串O
[0031]Fi I eName:截取GET字段中包含的文件名,作為備HASH字符串。HASH算法將取到的“分類名”和“備HASH字符串”進(jìn)行字符串拼接,之后進(jìn)行HASH化,計(jì)算為HASH值,備后期查詢。
[0032]下面對(duì)本發(fā)明的工作步驟進(jìn)行說(shuō)明。
[0033]本發(fā)明包括如下步驟:
步驟一:預(yù)先定義HTTP請(qǐng)求報(bào)文的分類及其對(duì)應(yīng)的分類名,每個(gè)分類下有至少一條表達(dá)式組(可為多個(gè),因?yàn)橐环N分類下很可能含有若干種同源但不相同的HTTP請(qǐng)求包,需要分別有對(duì)應(yīng)的表達(dá)式組進(jìn)行匹配),每個(gè)表達(dá)式組包括Host匹配算法表達(dá)式、Referer匹配算法表達(dá)式、GET匹配算法表達(dá)式。
[0034]步驟二:選中一條待識(shí)別HTTP請(qǐng)求報(bào)文,進(jìn)行如下操作:
S2.1:選擇一個(gè)沒(méi)有對(duì)所述HTTP請(qǐng)求報(bào)文進(jìn)行過(guò)匹配計(jì)算的表達(dá)式組;
S2.2:利用S2.1選擇的表達(dá)式組對(duì)HTTP請(qǐng)求報(bào)文的Host字段進(jìn)行Host匹配運(yùn)算,如果匹配算法字段為空或匹配成功則進(jìn)行步驟S2.3,否則返回S2.1;
S2.3:對(duì)HTTP請(qǐng)求報(bào)文的Referer字段進(jìn)行匹配運(yùn)算,如果匹配算法字段為空或匹配成功則進(jìn)行步驟S2.4,否則返回S2.1;
S2.4:對(duì)HTTP請(qǐng)求報(bào)文的GET字段進(jìn)行匹配運(yùn)算,如果匹配成功則識(shí)別出HTTP請(qǐng)求報(bào)文對(duì)應(yīng)的分類名,否則返回S2.1;
S2.5:重復(fù)執(zhí)行步驟S2.1- S2.4,直到遇到匹配的表達(dá)式組,如遍歷完所有表達(dá)式組后不能匹配,則丟棄該HTTP請(qǐng)求報(bào)文;
步驟三:重復(fù)步驟二,直到遍歷完所有待識(shí)別的HTTP請(qǐng)求報(bào)文。
[0035]在上述方法的基礎(chǔ)上,本發(fā)明還有進(jìn)一步的優(yōu)化方案。即每個(gè)表達(dá)式組還包括HASH運(yùn)算表達(dá)式,在S2.5中,如果遇到匹配的表達(dá)式組,則根據(jù)需要截取GET字段的字符串,將其與步驟S2.4對(duì)應(yīng)的分類名進(jìn)行字符串拼接,之后進(jìn)行HASH運(yùn)算得到HASH值,備后期查詢。
[0036]下面結(jié)合圖1的應(yīng)用實(shí)例對(duì)本發(fā)明進(jìn)行說(shuō)明。
[0037]步驟一:接收到一個(gè)淘寶jpg圖片的HTTP請(qǐng)求報(bào)文,該報(bào)文Host: www.tbcdn.cn。
[0038]步驟二:先將請(qǐng)求報(bào)文解釋為HTTP字段,包括:Host,Referer,GET。
[0039]步驟三:用Host匹配算法,對(duì)Host字段進(jìn)行匹配,如匹配失敗則繼續(xù)匹配下一條接收到的請(qǐng)求報(bào)文。如匹配成功則執(zhí)行步驟四。
[0040]步驟四:用Referer匹配算法,對(duì)Referer字段進(jìn)行匹配。匹配規(guī)則為空,視為匹配成功:進(jìn)入下一步。
[0041 ] 步驟五:用Get匹配算法,匹配GET字段。GET中,包含.jpg或者.png字符串的,視為匹配成功,進(jìn)入步驟六。
[0042]步驟六:將該請(qǐng)求報(bào)文識(shí)別為分類“taobao”。
[0043 ]步驟七:根據(jù)HASH算法,將該請(qǐng)求報(bào)文中的請(qǐng)求文件名提取出來(lái)。
[0044]步驟八:根據(jù)六、步驟七的結(jié)果生成“taobao〉文件名”的字符串,然后將該串進(jìn)行HASH,得到的HASH值,作為該請(qǐng)求的唯一查詢碼。
[0045]本發(fā)明與現(xiàn)有正則表達(dá)式方法相比,實(shí)現(xiàn)了如下有益效果:
I.有針對(duì)性,專用于HTTP請(qǐng)求報(bào)文的識(shí)別。
[0046]2.充分考慮程序處理效率的情況下,滿足“HTTP請(qǐng)求報(bào)文識(shí)別”的靈活性。針對(duì)HTTP請(qǐng)求的特點(diǎn),采用自定義的表達(dá)式進(jìn)行識(shí)別,一方面避免了正規(guī)表達(dá)式過(guò)于龐大,程序處理效率低的問(wèn)題。一方面又可以滿足目前HTTP請(qǐng)求報(bào)文識(shí)別的所有需求。
[0047]3.擴(kuò)展靈活,隨時(shí)支持除Host、Referer、GET外其它字段。例如:需要匹配HTTP協(xié)議的User-Agent字段,可以直接添加一個(gè)User-Agent匹配算法。
[0048]4.識(shí)別精確,如果需要提高精確性,可將GET匹配算法應(yīng)用到其它字段。例如:需要精確匹配HTTP協(xié)議的User-Agent字段,可以直接添加一個(gè)User-Agent匹配算法,并完全采用GET匹配算法的“操作邏輯” “模式串”。
[0049]5.結(jié)構(gòu)簡(jiǎn)單,表達(dá)方式簡(jiǎn)單。
[0050]6.高執(zhí)行效率,針對(duì)程序算法進(jìn)行優(yōu)化,執(zhí)行效率高。
[0051 ] 7.高查詢效率,將HTTP請(qǐng)求報(bào)文按算法進(jìn)行HASH化,查詢效率高。
【主權(quán)項(xiàng)】
1.一種基于模式匹配的HTTP請(qǐng)求報(bào)文識(shí)別方法,所述HTTP請(qǐng)求報(bào)文包括GET、Host、Referer三個(gè)字段,其特征在于,所述方法包括如下步驟: 步驟一:預(yù)先定義HTTP請(qǐng)求報(bào)文的分類及其對(duì)應(yīng)的分類名,每個(gè)分類下有至少一條表達(dá)式組,每個(gè)表達(dá)式組包括Host匹配算法表達(dá)式、Referer匹配算法表達(dá)式、GET匹配算法表達(dá)式; 步驟二:選中一條待識(shí)別HTTP請(qǐng)求報(bào)文,進(jìn)行如下操作: S2.1:選擇一個(gè)沒(méi)有對(duì)所述HTTP請(qǐng)求報(bào)文進(jìn)行過(guò)匹配計(jì)算的表達(dá)式組; S2.2:利用S2.1選擇的表達(dá)式組對(duì)HTTP請(qǐng)求報(bào)文的Host字段進(jìn)行Host匹配運(yùn)算,如果匹配算法字段為空或匹配成功則進(jìn)行步驟S2.3,否則返回S2.1; S2.3:對(duì)HTTP請(qǐng)求報(bào)文的Referer字段進(jìn)行匹配運(yùn)算,如果匹配算法字段為空或匹配成功則進(jìn)行步驟S2.4,否則返回S2.1; S2.4:對(duì)HTTP請(qǐng)求報(bào)文的GET字段進(jìn)行匹配運(yùn)算,如果匹配成功則識(shí)別出HTTP請(qǐng)求報(bào)文對(duì)應(yīng)的分類名,否則返回S2.1; S2.5:重復(fù)執(zhí)行步驟S2.1- S2.4,直到遇到匹配的表達(dá)式組,如遍歷完所有表達(dá)式組后不能匹配,則丟棄該HTTP請(qǐng)求報(bào)文; 步驟三:重復(fù)步驟二,直到遍歷完所有待識(shí)別的HTTP請(qǐng)求報(bào)文。2.如權(quán)利要求1所述的基于模式匹配的HTTP請(qǐng)求報(bào)文識(shí)別方法,其特征在于,GET匹配算法包括的邏輯操作有or、~、and。3.如權(quán)利要求1或2所述的基于模式匹配的HTTP請(qǐng)求報(bào)文識(shí)別方法,其特征在于,每個(gè)表達(dá)式組還包括HASH運(yùn)算表達(dá)式,HASH運(yùn)算算法具有三種操作符,分別為〉、< ,FileName,分別用于從左到右邊截取GET字段字符串、從右到左邊截取GET字段字符串、截取GET字段中的文件名。4.如權(quán)利要求3所述的基于模式匹配的HTTP請(qǐng)求報(bào)文識(shí)別方法,其特征在于,在S2.5中,如果遇到匹配的表達(dá)式組,則根據(jù)需要截取GET字段的字符串,將其與步驟S2.4對(duì)應(yīng)的分類名進(jìn)行字符串拼接,之后進(jìn)行HASH運(yùn)算得到HASH值。
【文檔編號(hào)】H04L29/06GK106067876SQ201610359306
【公開(kāi)日】2016年11月2日
【申請(qǐng)日】2016年5月27日 公開(kāi)號(hào)201610359306.5, CN 106067876 A, CN 106067876A, CN 201610359306, CN-A-106067876, CN106067876 A, CN106067876A, CN201610359306, CN201610359306.5
【發(fā)明人】鐘昊華
【申請(qǐng)人】成都廣達(dá)新網(wǎng)科技股份有限公司