專利名稱:表單識別方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,具體而言,涉及一種表單識別方法和裝置。
背景技術(shù):
雙核瀏覽器,即有兩個內(nèi)核的瀏覽器,包括Trident內(nèi)核與Webkit內(nèi)核。Trident內(nèi)核為網(wǎng)頁瀏覽器(Internet Explorer,簡稱IE)所使用,IE瀏覽器在國內(nèi)普及率非常高,很多網(wǎng)站只考慮兼容IE,而不符合萬維網(wǎng)聯(lián)盟(World Wide Web Consortium,簡稱W3C)標(biāo)準(zhǔn),例如網(wǎng)銀,在線支付類網(wǎng)站。Webkit內(nèi)核對W3C標(biāo)準(zhǔn)支持的很完善,同時(shí)具有高速的特點(diǎn)。Trident內(nèi)核的兼容性加Webkit內(nèi)核的高速,雙核瀏覽器滿足了不同的用戶需求。現(xiàn)有技術(shù)中,Trident內(nèi)核與Webkit內(nèi)核的雙核表單識別采用了針對超文本標(biāo)記語言(Hypertext Markup Language,簡稱HTML)網(wǎng)頁中form表單進(jìn)行識別,具體識別方式是當(dāng)用戶在頁面中填入表單信息,點(diǎn)擊提交按鈕,執(zhí)行提交事件后,通過執(zhí)行提交事件的結(jié)果來判斷表單是否提交成功。如果表單提交成功,則將表單數(shù)據(jù)存儲在數(shù)據(jù)庫中,數(shù)據(jù)庫中會存儲表單中的多個字段,視為一個成功的表單信息,通過上述描述可以看出,現(xiàn)有技術(shù)中在對表單進(jìn)行識別時(shí)需要對提交成功后的表單中的多個字段進(jìn)行判斷,在多個字段均滿足條件的情況下才能達(dá)到對表單的識別,此種需要對表單中多個字段進(jìn)行識別的方式不僅會造成表單識別率降低,在后續(xù)用戶對表單進(jìn)行填寫時(shí),仍然需要對數(shù)據(jù)庫中的多個字段分別進(jìn)行匹配才能判斷出用戶正在填寫的表單是否為當(dāng)前網(wǎng)頁表單,只有在判斷出為當(dāng)前表單時(shí)才可正常填寫,造成不方便用戶操作,用戶體驗(yàn)度降低。針對相關(guān)技術(shù)中表單識別率較低的問題,目前尚未提出有效的解決方案。
發(fā)明內(nèi)容
本發(fā)明的主要目的在于提供一種表單識別方法和裝置,以解決現(xiàn)有技術(shù)中表單識別率較低的問題。為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的一個方面,提供了一種表單識別方法,包括接收訪問指令;加載與訪問指令相對應(yīng)的網(wǎng)頁;對加載的網(wǎng)頁的網(wǎng)頁代碼進(jìn)行掃描;判斷掃描到的網(wǎng)頁代碼中是否包括屬性為第一預(yù)設(shè)屬性的元素,其中,第一預(yù)設(shè)屬性對應(yīng)的元素為密碼元素;判斷掃描到的網(wǎng)頁代碼中是否包括屬性為第二預(yù)設(shè)屬性的元素,其中,第二預(yù)設(shè)屬性對應(yīng)的元素為用戶名元素;以及若判斷出掃描到的網(wǎng)頁代碼中包括屬性為第一預(yù)設(shè)屬性的元素,并且還包括屬性為第二預(yù)設(shè)屬性的元素,則確定加載的網(wǎng)頁為表單網(wǎng)頁。進(jìn)一步地,對加載的網(wǎng)頁的網(wǎng)頁代碼進(jìn)行掃描包括獲取產(chǎn)生訪問指令的內(nèi)核類型;若獲取到的內(nèi)核類型為Trident內(nèi)核,則注入預(yù)設(shè)腳本代碼至網(wǎng)頁代碼中以對網(wǎng)頁代碼進(jìn)行掃描;以及若獲取到的內(nèi)核類型為Webkit內(nèi)核,則對網(wǎng)頁代碼中的DOM樹中的input控件進(jìn)行掃描。進(jìn)一步地,在確定加載的網(wǎng)頁為表單網(wǎng)頁之后,表單識別方法還包括判斷是否接收到觸發(fā)指令,其中,觸發(fā)指令用于提交表單網(wǎng)頁;以及若判斷出接收到觸發(fā)指令,則確定表單網(wǎng)頁為有效表單。進(jìn)一步地,在產(chǎn)生訪問指令的內(nèi)核類型為Trident內(nèi)核時(shí),判斷是否接收到觸發(fā)指令包括獲取網(wǎng)頁代碼中屬性為第三預(yù)設(shè)屬性的元素,得到第一元素,其中,第三預(yù)設(shè)屬性對應(yīng)的元素為提交事件;復(fù)制第一元素,得到第二元素;以第二元素覆蓋第一元素;以及判斷第二元素是否被執(zhí)行,若判斷出第二元素被執(zhí)行,則確定接收到觸發(fā)指令。進(jìn)一步地,在產(chǎn)生訪問指令的內(nèi)核類型為Webkit內(nèi)核時(shí),判斷是否接收到觸發(fā)指令包括獲取網(wǎng)頁代碼中屬性為第三預(yù)設(shè)屬性的元素,得到第一元素,其中,第三預(yù)設(shè)屬性對應(yīng)的元素為提交事件;以及判斷第一元素是否被執(zhí)行,若判斷出第一元素被執(zhí)行,則確定接收到觸發(fā)指令。進(jìn)一步地,在確定加載的網(wǎng)頁為表單網(wǎng)頁之后,并且在判斷是否接收到觸發(fā)指令之前,表單識別方法還包括獲取屬性為第一預(yù)設(shè)屬性的元素,得到密碼元素;獲取屬性為第二預(yù)設(shè)屬性的元素,得到用戶名元素;查詢預(yù)設(shè)數(shù)據(jù)庫以判斷密碼數(shù)據(jù)和用戶名數(shù)據(jù)是否均已保存在預(yù)設(shè)數(shù)據(jù)庫中,其中,密碼數(shù)據(jù)為密碼元素對應(yīng)的數(shù)據(jù),用戶名數(shù)據(jù)為用戶名元素對應(yīng)的數(shù)據(jù);以及若判斷出密碼數(shù)據(jù)和用戶名數(shù)據(jù)均已保存在預(yù)設(shè)數(shù)據(jù)庫中,則添加密碼數(shù)據(jù)至加載的網(wǎng)頁的密碼元素中,以及添加用戶名數(shù)據(jù)至加載的網(wǎng)頁的用戶名元素中。進(jìn)一步地,在確定加載的網(wǎng)頁為表單網(wǎng)頁之后,并且在判斷是否接收到觸發(fā)指令之前,表單識別方法還包括獲取屬性為第一預(yù)設(shè)屬性的元素,得到密碼元素;獲取屬性為第二預(yù)設(shè)屬性的元素,得到用戶名元素;查詢預(yù)設(shè)數(shù)據(jù)庫以判斷密碼數(shù)據(jù)和用戶名數(shù)據(jù)是否均已保存在預(yù)設(shè)數(shù)據(jù)庫中,其中,密碼數(shù)據(jù)為密碼元素對應(yīng)的數(shù)據(jù),用戶名數(shù)據(jù)為用戶名元素對應(yīng)的數(shù)據(jù);若判斷出用戶名數(shù)據(jù)已保存在預(yù)設(shè)數(shù)據(jù)庫中,并且密碼數(shù)據(jù)未保存在預(yù)設(shè)數(shù)據(jù)庫中,則添加用戶名數(shù)據(jù)至加載的網(wǎng)頁的用戶名元素中,并且接收用戶輸入的密碼數(shù)據(jù);以及若判斷出用戶名數(shù)據(jù)和密碼數(shù)據(jù)均未保存在預(yù)設(shè)數(shù)據(jù)庫中,則接收用戶輸入的密碼數(shù)據(jù)和用戶名數(shù)據(jù)。進(jìn)一步地,在判斷出接收到觸發(fā)指令之后,表單識別方法還包括顯示預(yù)設(shè)彈窗,其中,預(yù)設(shè)彈窗上設(shè)置有提示內(nèi)容,提示內(nèi)容用于提示用戶選擇是否保存密碼數(shù)據(jù)和用戶名數(shù)據(jù),或提示用戶選擇是否保存密碼數(shù)據(jù);接收來自用戶的選擇指令;以及在選擇指令表示選擇保存密碼數(shù)據(jù)和用戶名數(shù)據(jù)時(shí),保存密碼數(shù)據(jù)和用戶名數(shù)據(jù)至預(yù)設(shè)數(shù)據(jù)庫,或保存密碼數(shù)據(jù)至預(yù)設(shè)數(shù)據(jù)庫。為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的另一方面,提供了一種表單識別裝置,該表單識別裝置用于執(zhí)行本發(fā)明上述內(nèi)容所提供的任一種表單識別方法。為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的另一方面,提供了一種表單識別裝置,包括接收單元,用于接收訪問指令;加載單元,用于加載與訪問指令相對應(yīng)的網(wǎng)頁;掃描單元,用于對加載的網(wǎng)頁的網(wǎng)頁代碼進(jìn)行掃描;第一判斷單元,用于判斷掃描到的網(wǎng)頁代碼中是否包括屬性為第一預(yù)設(shè)屬性的元素,其中,第一預(yù)設(shè)屬性對應(yīng)的元素為密碼元素;第二判斷單元,用于判斷掃描到的網(wǎng)頁代碼中是否包括屬性為第二預(yù)設(shè)屬性的元素,其中,第二預(yù)設(shè)屬性對應(yīng)的元素為用戶名元素;以及確定單元,用于若判斷出掃描到的網(wǎng)頁代碼中包括屬性為第一預(yù)設(shè)屬性的元素,并且還包括屬性為第二預(yù)設(shè)屬性的元素,則確定加載的網(wǎng)頁為表單網(wǎng)頁。
進(jìn)一步地,掃描單元包括第一獲取子單元,用于獲取產(chǎn)生訪問指令的內(nèi)核類型;第一掃描子單元,用于在獲取到的內(nèi)核類型為Trident內(nèi)核時(shí),注入預(yù)設(shè)腳本代碼至網(wǎng)頁代碼中以對網(wǎng)頁代碼進(jìn)行掃描;以及第二掃描子單元,用于在獲取到的內(nèi)核類型為Webkit內(nèi)核時(shí),對網(wǎng)頁代碼中的DOM樹中的input控件進(jìn)行掃描。通過本發(fā)明,采用接收訪問指令;加載與訪問指令相對應(yīng)的網(wǎng)頁;對加載的網(wǎng)頁的網(wǎng)頁代碼進(jìn)行掃描;判斷掃描到的網(wǎng)頁代碼中是否包括屬性為第一預(yù)設(shè)屬性的元素,其中,第一預(yù)設(shè)屬性對應(yīng)的元素為密碼元素;判斷掃描到的網(wǎng)頁代碼中是否包括屬性為第二預(yù)設(shè)屬性的元素,其中,第二預(yù)設(shè)屬性對應(yīng)的元素為用戶名元素;以及若判斷出掃描到的網(wǎng)頁代碼中包括屬性為第一預(yù)設(shè)屬性的元素,并且還包括屬性為第二預(yù)設(shè)屬性的元素,則確定加載的網(wǎng)頁為表單網(wǎng)頁。通過對用戶訪問所加載的網(wǎng)頁的網(wǎng)頁代碼進(jìn)行掃描,實(shí)現(xiàn)對網(wǎng)頁代碼的監(jiān)測,進(jìn)而實(shí)現(xiàn)對網(wǎng)頁代碼中各個元素屬性的監(jiān)測,以快速檢測出加載的網(wǎng)頁是否包含滿足預(yù)設(shè)屬性的元素(即,實(shí)現(xiàn)快速檢測出密碼元素和用戶名元素),此種只需通過對網(wǎng)頁中的用戶名字段和密碼字段進(jìn)行監(jiān)測的方法,只需對加載的網(wǎng)頁的網(wǎng)頁代碼進(jìn)行掃描即可實(shí)現(xiàn)對加載的網(wǎng)頁是否為表單網(wǎng)頁的識別,相對現(xiàn)有技術(shù)中需要對提交成功后的表單中的多個字段進(jìn)行判斷的識別方法而言,有效地降低了表單識別的復(fù)雜度,解決了現(xiàn)有技術(shù)中表單識別率較低的問題,進(jìn)而達(dá)到了提高表單識別率的效果。
構(gòu)成本申請的一部分的附圖用來提供對本發(fā)明的進(jìn)一步理解,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中圖1是根據(jù)本發(fā)明實(shí)施例的表單識別方法的流程圖;圖2是根據(jù)本發(fā)明實(shí)施例的表單識別方法對Webkit內(nèi)核瀏覽器中密碼元素和用戶名元素掃描的流程圖;圖3是根據(jù)本發(fā)明實(shí)施例的表單識別方法對Trident內(nèi)核瀏覽器中是否接收到觸發(fā)指令的判斷流程圖;圖4是根據(jù)本發(fā)明實(shí)施例的應(yīng)用于Trident內(nèi)核瀏覽器的表單識別方法;圖5是根據(jù)本發(fā)明實(shí)施例的應(yīng)用于Webkit內(nèi)核瀏覽器的表單識別方法;以及圖6是根據(jù)本發(fā)明實(shí)施例的表單識別裝置的示意圖。
具體實(shí)施例方式需要說明的是,在不沖突的情況下,本申請中的實(shí)施例及實(shí)施例中的特征可以相互組合。下面將參考附圖并結(jié)合實(shí)施例來詳細(xì)說明本發(fā)明。本發(fā)明實(shí)施例提供了一種表單識別方法,以下對本發(fā)明實(shí)施例所提供的表單識別方法進(jìn)行具體介紹圖1是根據(jù)本發(fā)明實(shí)施例的表單識別方法的流程圖,如圖1所示,該方法包括如下的步驟SlOl至步驟S107 SlOl :接收來自用戶的訪問指令,具體地,當(dāng)用戶想要對某個網(wǎng)站進(jìn)行訪問時(shí),會輸入或鏈接輸入這個網(wǎng)站的網(wǎng)址以進(jìn)行打開網(wǎng)頁,此時(shí),即可接收到用戶的訪問指令。S102 :加載與訪問指令相對應(yīng)的網(wǎng)頁,即,對與訪問指令相對應(yīng)的網(wǎng)址上的HTML進(jìn)行加載,得到與訪問指令相對應(yīng)的網(wǎng)頁。S103 :對加載的網(wǎng)頁的網(wǎng)頁代碼進(jìn)行掃描;S104:判斷掃描到的網(wǎng)頁代碼中是否包括屬性為第一預(yù)設(shè)屬性的元素,其中,第一預(yù)設(shè)屬性對應(yīng)的元素為密碼元素,具體地,主要通過對加載的網(wǎng)頁的網(wǎng)頁代碼進(jìn)行掃描,檢測掃描過程中是否能夠掃描到屬性為第一預(yù)設(shè)屬性的元素,在本發(fā)明實(shí)施例中,第一預(yù)設(shè)屬性可以定義為屬性type= “password”,如果在加載的網(wǎng)頁的網(wǎng)頁代碼中掃描到含屬性type= “password”的input元素,則確定掃描到的網(wǎng)頁代碼中包括屬性為第一預(yù)設(shè)屬性的元素。S105:判斷掃描到的網(wǎng)頁代碼中是否包括屬性為第二預(yù)設(shè)屬性的元素,其中,第二預(yù)設(shè)屬性對應(yīng)的元素為用戶名元素,具體地,主要通過檢測掃描過程中是否能夠掃描到屬性為第二預(yù)設(shè)屬性的元素,在本發(fā)明實(shí)施例中,第二預(yù)設(shè)屬性可以定義為距離密碼元素距離最近,并且滿足屬性type= “text”,如果在加載的網(wǎng)頁的網(wǎng)頁代碼中掃描到含屬性type=“teXt”的input元素,則確定掃描到的網(wǎng)頁代碼中包括屬性為第二預(yù)設(shè)屬性的元素。S106:若判斷出掃描到的網(wǎng)頁代碼中包括屬性為第一預(yù)設(shè)屬性的元素,并且還包括屬性為第二預(yù)設(shè)屬性的元素,則確定步驟S102中加載的網(wǎng)頁為表單網(wǎng)頁,即,當(dāng)判斷出網(wǎng)頁代碼中既包含密碼元素又包含用戶名元素,即可確定加載的網(wǎng)頁是一個表單網(wǎng)頁,也即實(shí)現(xiàn)對表單的識別。本發(fā)明實(shí)施例的表單識別方法通過對用戶訪問所加載的網(wǎng)頁的網(wǎng)頁代碼進(jìn)行掃描,實(shí)現(xiàn)對網(wǎng)頁代碼的監(jiān)測,進(jìn)而實(shí)現(xiàn)對網(wǎng)頁代碼中各個元素屬性的監(jiān)測,以快速檢測出加載的網(wǎng)頁是否包含滿足預(yù)設(shè)屬性的元素(即 ,實(shí)現(xiàn)快速檢測出密碼元素和用戶名元素),此種只需通過對網(wǎng)頁中的用戶名字段和密碼字段進(jìn)行監(jiān)測的方法,只需對加載的網(wǎng)頁的網(wǎng)頁代碼進(jìn)行掃描即可實(shí)現(xiàn)對加載的網(wǎng)頁是否為表單網(wǎng)頁的識別,相對現(xiàn)有技術(shù)中需要對提交成功后的表單中的多個字段進(jìn)行判斷的識別方法而言,有效地降低了表單識別的復(fù)雜度,解決了現(xiàn)有技術(shù)中表單識別率較低的問題,進(jìn)而達(dá)到了提高表單識別率的效果。具體地,當(dāng)用戶通過不同類型的瀏覽器內(nèi)核進(jìn)行訪問指令的下發(fā)時(shí),對于不同內(nèi)核的瀏覽器,本發(fā)明實(shí)施例所提供的識別方法中的步驟S103的具體處理方式不同。其中,在對加載網(wǎng)頁的網(wǎng)頁代碼進(jìn)行掃面時(shí),首先對產(chǎn)生訪問指令的內(nèi)核類型進(jìn)行獲取,然后按照獲取到的內(nèi)核類型的不同采取不同的掃描方法,具體地,當(dāng)獲取到的內(nèi)核類型為Trident內(nèi)核時(shí),則在訪問指令對應(yīng)的網(wǎng)頁加載結(jié)束后,在加載的網(wǎng)頁的網(wǎng)頁代碼中注入預(yù)設(shè)的JavaScript腳本代碼(g卩,JS腳本代碼),然后依靠JS腳本代碼對加載的網(wǎng)頁的網(wǎng)頁代碼HTML進(jìn)行掃描監(jiān)測;當(dāng)獲取到的內(nèi)核類型為Webkit內(nèi)核時(shí),則可以直接對網(wǎng)頁代碼中的DOM樹中的input控件進(jìn)行掃描,其中,DOM樹是指文檔對象模型(HTMLDocument Object Model,簡稱 HTML DOM), HTML DOM 則是專門適用與 HTML 最佳化 HTML/XHTML的文檔對象模型,對DOM樹中的input控件進(jìn)行掃描確定密碼元素和用戶名元素的流程如圖2所示,其中,當(dāng)掃描出DOM樹中含有通用的input控件時(shí),直接確定屬性為type= “password”的input元素即為密碼輸入框元素,DOM樹中在密碼輸入框之上、距離最近的屬性type#text”、可編輯的input元素即為用戶名輸入框;當(dāng)掃描出DOM樹中不是通用的input控件時(shí),可以在網(wǎng)頁啟動自動填表功能的網(wǎng)頁的情況下,根據(jù)網(wǎng)頁Origin URL、元素id、元素name屬性及其它元素組成的復(fù)合條件定位用戶名元素和密碼元素。
在確定出加載的網(wǎng)頁為表單網(wǎng)頁之后,即在識別出表單之后,本發(fā)明實(shí)施例的識別方法還包括判斷是否接收到用戶下發(fā)的觸發(fā)指令,其中,觸發(fā)指令用于提交表單網(wǎng)頁,在判斷出接收到觸發(fā)指令后,確定表單網(wǎng)頁為有效表單,即,當(dāng)加載的這個表單網(wǎng)頁被用戶提交后,瀏覽器即確定這個提交的表單是個有效表單,以便后續(xù)再次對這個表單網(wǎng)頁進(jìn)行加載時(shí),能夠更加快速準(zhǔn)確地識別出這個表單。具體地,當(dāng)用戶在對包括密碼元素和用戶名元素的表單網(wǎng)頁進(jìn)行提交時(shí),會相應(yīng)地觸發(fā)網(wǎng)頁代碼中對應(yīng)的提交事件,則可以通過判斷該提交事件是否被觸發(fā)來實(shí)現(xiàn)判斷是否接收到用戶下發(fā)的觸發(fā)指令。其中,若產(chǎn)生訪問指令的內(nèi)核類型為Trident內(nèi)核時(shí),判斷是否接收到觸發(fā)指令的判斷流程在圖3中示出,具體地,如圖3所示,首先通過JS腳本代碼對加載的網(wǎng)頁的網(wǎng)頁代碼進(jìn)行掃描,以獲取屬性為第三預(yù)設(shè)屬性的元素(以下稱作第一元素),其中,在網(wǎng)頁代碼中的提交按鈕采用通用規(guī)則的情況下,第三預(yù)設(shè)屬性可以定義為屬性type= “submit”,獲取到第一元素就是指獲取到網(wǎng)頁代碼中屬性為type= “submit”的元素,也即指查找到加載的網(wǎng)頁中的提交按鈕;在網(wǎng)頁代碼中的提交按鈕采用非通用規(guī)則的情況下,則根據(jù)元素、屬性及其它元素組成符合條件定位提交按鈕;然后對第一元素進(jìn)行復(fù)制得到第二元素,并以第二元素覆蓋第一元素,即,采用預(yù)設(shè)的JavaScript腳本代碼中的克隆方法對該提交按鈕進(jìn)行克隆,并將克隆后的提交按鈕放在原提交按鈕前端,并通過時(shí)間流命名方式對克隆后的提交按鈕命名一個復(fù)雜且唯一的id ;最后,判斷第二元素是否被執(zhí)行,由于用戶在進(jìn)行密碼元素和用戶名元素提交時(shí),必須經(jīng)過觸發(fā)提交事件id來實(shí)現(xiàn),此時(shí)第二元素則被執(zhí)行,所以,通過判斷第二元素是否被執(zhí)行則可以實(shí)現(xiàn)判斷是否接收到用戶下發(fā)的觸發(fā)指令,其中,在第二元素被執(zhí)行時(shí),確定接收到用戶下發(fā)的觸發(fā)指令。當(dāng)處理執(zhí)行克隆的提交按鈕后,原有提交按鈕對應(yīng)的事件也會按照原有的順序被執(zhí)行,如果執(zhí)行提交按鈕本身事件后,返回值為真,則繼續(xù)執(zhí)行網(wǎng)頁代碼中的form事件,若返回值為假,則停止。其中,采用“第一元素”、“第二元素”這樣的描述語言只是為了對不同的元素進(jìn)行區(qū)分表達(dá),而并非是對元素的先后順序作限定,下文中出現(xiàn)類似表述的地方也是為了進(jìn)行區(qū)分,不是對先后順序的限定。若產(chǎn)生訪問指令的內(nèi)核類型為Webkit內(nèi)核,則通過對網(wǎng)頁代碼中的DOM樹中的input控件進(jìn)行掃描獲取到加載的網(wǎng)頁的網(wǎng)頁代碼中屬性為第三預(yù)設(shè)屬性的元素,得到第一元素,即,獲取到Webkit內(nèi)核型瀏覽器的網(wǎng)頁中的提交按鈕,然后通過判斷第一元素是否被執(zhí)行來判斷是否接收到用戶下發(fā)的觸發(fā)指令,若判斷出第一元素被執(zhí)行,則確定接收到觸發(fā)指令。進(jìn)一步地,本發(fā)明實(shí)施例的表單識別方法還包括對表單填寫和表單保存的處理步驟,當(dāng)瀏覽器的內(nèi)核類型為Trident內(nèi)核時(shí),整個表單識別方法在圖4中示出,當(dāng)瀏覽器的內(nèi)核類型為Webkit內(nèi)核時(shí),整個表單識別方法在圖5中示出,從圖4和圖5中可以看出,對于不同內(nèi)核的瀏覽器,具體的表單填寫和表單保存的處理步驟相同。具體地,在確定加載的網(wǎng)頁為表單網(wǎng)頁之后,及判斷是否接收到觸發(fā)指令之前進(jìn)行表單填寫,具體為在判斷出網(wǎng)頁代碼中既包括屬性為第一預(yù)設(shè)屬性的元素,并且還包括屬性為第二預(yù)設(shè)屬性的元素之后,當(dāng)用戶點(diǎn)擊用戶名登錄框時(shí),觸發(fā)Renderer進(jìn)程對屬性為第一預(yù)設(shè)屬性的元素和屬性為第二預(yù)設(shè)屬性的元素進(jìn)行捕獲,得到密碼元素和用戶名元素,并由Renderer進(jìn)程發(fā)送IPC請求至主進(jìn)程以對主進(jìn)程的預(yù)設(shè)數(shù)據(jù)庫進(jìn)行查詢判斷與密碼元素相對應(yīng)的密碼數(shù)據(jù)和與用戶名元素相對應(yīng)的用戶名數(shù)據(jù)是否均已保存在預(yù)設(shè)數(shù)據(jù)庫中,其中,該預(yù)設(shè)數(shù)據(jù)庫是用來保存表單信息的數(shù)據(jù)庫,通過將表單信息保存在預(yù)設(shè)數(shù)據(jù)中,實(shí)現(xiàn)了對雙核瀏覽器下表單數(shù)據(jù)的互通;最后,在判斷出密碼數(shù)據(jù)和用戶名數(shù)據(jù)均已保存在預(yù)設(shè)數(shù)據(jù)庫中時(shí),主進(jìn)程發(fā)送一條IPC請求至Renderer進(jìn)程,由Renderer進(jìn)程篩選出最佳匹配的已保存的用戶名數(shù)據(jù)和密碼數(shù)據(jù),并執(zhí)行將篩選出的密碼數(shù)據(jù)添加至加載的網(wǎng)頁的密碼元素中,以及將用戶名數(shù)據(jù)添加至加載的網(wǎng)頁的用戶名元素中。其中,Renderer進(jìn)程對用戶名數(shù)據(jù)和密碼數(shù)據(jù)進(jìn)行篩選和匹配的原則是首先判斷當(dāng)前URL下是否有已保存過的表單,如果當(dāng)前URL下有已保存的表單,則優(yōu)先將這個表單的密碼數(shù)據(jù)和用戶名數(shù)據(jù)添加到網(wǎng)頁上對應(yīng)的元素中,實(shí)現(xiàn)精準(zhǔn)匹配;如果當(dāng)前URL下沒有已保存過的表單,則查找當(dāng)前URL主域下保存過的表單,并將其主域下所保存的表單的密碼數(shù)據(jù)和用戶名數(shù)據(jù)添加到網(wǎng)頁上對應(yīng)的元素中,實(shí)現(xiàn)模糊匹配。舉例說明,如果在URL “a. xxx.com”下保存了 A表單,在URL “b. XXX. com”下保存了 B表單,當(dāng)用戶打開“a. xxx. com”時(shí),會將表單A和B的用戶名數(shù)據(jù)和密碼數(shù)據(jù)均做為備選,但是優(yōu)先選擇A表單的用戶名數(shù)據(jù)和密碼數(shù)據(jù)作為最佳匹配;如果在URL “a. xxx. com”下未保存表單,在URL “b. xxx. com”下保存了 B表單,當(dāng)用戶打開“a. xxx. com”時(shí),則會將表單B的用戶名數(shù)據(jù)和密碼數(shù)據(jù)做為篩選出的用戶名數(shù)據(jù)和密碼數(shù)據(jù)。在對表單保存進(jìn)行處理時(shí),具體為首先,在確定加載的網(wǎng)頁為表單網(wǎng)頁之后,并且在判斷是否接收到觸發(fā)指令之前,當(dāng)用戶點(diǎn)擊用戶名登錄框時(shí),觸發(fā)Renderer進(jìn)程對屬性為第一預(yù)設(shè)屬性的元素和屬性為第二預(yù)設(shè)屬性的元素進(jìn)行捕獲,得到密碼元素和用戶名元素,并由Renderer進(jìn)程發(fā)送IPC請求至主進(jìn)程以對主進(jìn)程的預(yù)設(shè)數(shù)據(jù)庫進(jìn)行查詢判斷與密碼元素相對應(yīng)的密碼數(shù)據(jù)和與用戶名元素相對應(yīng)的用戶名數(shù)據(jù)是否均已保存在預(yù)設(shè)數(shù)據(jù)庫中,當(dāng)判斷出用戶名數(shù)據(jù)保存在預(yù)設(shè)數(shù)據(jù)庫中,但是密碼數(shù)據(jù)未保存在預(yù)設(shè)數(shù)據(jù)庫中時(shí),一方面主進(jìn)程發(fā)送一條IPC請求至Renderer進(jìn)程,由Renderer進(jìn)程篩選出最佳匹配的已保存的用戶名數(shù)據(jù),并將篩選出的用戶名數(shù)據(jù)添加至加載的網(wǎng)頁的用戶名元素中,另一方面接收用戶輸入的密碼數(shù)據(jù);當(dāng)判斷出用戶名數(shù)據(jù)和密碼數(shù)據(jù)均未保存在預(yù)設(shè)數(shù)據(jù)庫中時(shí),則直接接收用戶輸入的用戶名數(shù)據(jù)和密碼數(shù)據(jù)。至此只達(dá)到了對表單進(jìn)行填寫的步驟。其次,在接收到觸發(fā)指令之后,即,在用戶觸發(fā)了登錄之后,由Renderer進(jìn)程發(fā)送一個IPC請求至主進(jìn)程,由主進(jìn)程觸發(fā)彈窗提示,以提示用戶是否選擇保存密碼數(shù)據(jù)和用戶名數(shù)據(jù),或提示是否保存密碼數(shù)據(jù);最后,接收用戶的選擇指令,并在選擇指令表示選擇保存時(shí),保存密碼數(shù)據(jù)和用戶名數(shù)據(jù)至預(yù)設(shè)數(shù)據(jù)庫,或保存密碼數(shù)據(jù)至預(yù)設(shè)數(shù)據(jù)庫。本發(fā)明實(shí)施例還提供了一種表單識別裝置,以下對本發(fā)明實(shí)施例所提供的表單識別裝置進(jìn)行具體介紹圖6是根據(jù)本發(fā)明實(shí)施例的表單裝置的示意圖,如圖6所示,該實(shí)施例的表單識別裝置包括接收單元10、加載單元20、掃描單元30、第一判斷單元40、第二判斷單元50和確定單元60。接收單元10用于接收訪問指令,具體地,當(dāng)用戶想要對某個網(wǎng)站進(jìn)行訪問時(shí),會輸入或鏈接輸入這個網(wǎng)站的網(wǎng)址以進(jìn)行打開網(wǎng)頁,此時(shí),接收單元10可以通過對用戶輸入的網(wǎng)址或鏈接輸入的網(wǎng)址進(jìn)行接收實(shí)現(xiàn)對用戶訪問指令的接收;加載單元20用于加載與訪問指令相對應(yīng)的網(wǎng)頁,具體地,對與訪問指令相對應(yīng)的網(wǎng)址上的HTML進(jìn)行加載,得到與訪問指令相對應(yīng)的網(wǎng)頁;掃描單元30用于對加載的網(wǎng)頁的網(wǎng)頁代碼進(jìn)行掃描;第一判斷單元40用于判斷掃描到的網(wǎng)頁代碼中是否包括屬性為第一預(yù)設(shè)屬性的元素,其中,第一預(yù)設(shè)屬性對應(yīng)的元素為密碼元素,具體地,主要通過對加載的網(wǎng)頁的網(wǎng)頁代碼進(jìn)行掃描,檢測掃描過程中是否能夠掃描到屬性為第一預(yù)設(shè)屬性的元素,在本發(fā)明實(shí)施例中,第一預(yù)設(shè)屬性可以定義為屬性type#paSSWOrd”,如果在加載的網(wǎng)頁的網(wǎng)頁代碼中掃描到含屬性type= “password”的input元素,則確定掃描到的網(wǎng)頁代碼中包括屬性為第一預(yù)設(shè)屬性的元素;第二判斷單元50用于判斷掃描到的網(wǎng)頁代碼中是否包括屬性為第二預(yù)設(shè)屬性的元素,其中,第二預(yù)設(shè)屬性對應(yīng)的元素為用戶名元素,具體地,主要通過檢測掃描過程中是否能夠掃描到屬性為第二預(yù)設(shè)屬性的元素,在本發(fā)明實(shí)施例中,第二預(yù)設(shè)屬性可以定義為距離密碼元素距離最近,并且滿足屬性type^text”,如果在加載的網(wǎng)頁的網(wǎng)頁代碼中掃描到含屬性type= “text”的input元素,則確定掃描到的網(wǎng)頁代碼中包括屬性為第二預(yù)設(shè)屬性的元素;確定單元60用于若判斷出掃描到的網(wǎng)頁代碼中包括屬性為第一預(yù)設(shè)屬性的元素,并且還包括屬性為第二預(yù)設(shè)屬性的元素,則確定加載單元20中加載的網(wǎng)頁為表單網(wǎng)頁,即,在判斷出網(wǎng)頁代碼中既包含密碼元素又包含用戶名元素,即可確定加載的網(wǎng)頁時(shí)一個表單網(wǎng)頁,也即實(shí)現(xiàn)對表單的識別。本發(fā)明實(shí)施例的表單識別裝置通過對用戶訪問所加載的網(wǎng)頁的網(wǎng)頁代碼進(jìn)行掃描,實(shí)現(xiàn)對網(wǎng)頁代碼的監(jiān)測,進(jìn)而實(shí)現(xiàn)對網(wǎng)頁代碼中各個元素屬性的監(jiān)測,以快速檢測出是否包含滿足預(yù)設(shè)屬性的元素(即,實(shí)現(xiàn)快速檢測出密碼元素和用戶名元素),此種只需通過對網(wǎng)頁中的用戶名字段和密碼字段進(jìn)行監(jiān)測的方法,只需對加載的網(wǎng)頁的網(wǎng)頁代碼進(jìn)行掃描即可實(shí)現(xiàn)對加載的網(wǎng)頁是否為表`單網(wǎng)頁的識別,相對現(xiàn)有技術(shù)中需要對提交成功后的表單中的多個字段進(jìn)行判斷的識別方法而言,有效地降低了表單識別的復(fù)雜度,解決了現(xiàn)有技術(shù)中表單識別率較低的問題,進(jìn)而達(dá)到了提高表單識別率的效果。具體地,當(dāng)用戶通過不同類型的瀏覽器內(nèi)核進(jìn)行訪問指令的下發(fā)時(shí),對于不同內(nèi)核的瀏覽器,在執(zhí)行對加載的網(wǎng)頁的網(wǎng)頁代碼進(jìn)行掃描時(shí)所對應(yīng)的掃描單元30的掃描方式不同。其中,在對加載網(wǎng)頁的網(wǎng)頁代碼進(jìn)行掃描時(shí),首先由掃描單元30中的第一獲取子單元產(chǎn)生訪問指令的內(nèi)核類型進(jìn)行獲??;當(dāng)獲取到的內(nèi)核類型為Trident內(nèi)核時(shí),則由掃描單元30中的第一掃描子單元注入預(yù)設(shè)腳本代碼至網(wǎng)頁代碼中以對網(wǎng)頁代碼進(jìn)行掃描;當(dāng)獲取到的內(nèi)核類型為Webkit內(nèi)核時(shí),則由掃描單元30中的第二掃描子單元對網(wǎng)頁代碼中的DOM樹中的input控件進(jìn)行掃描。進(jìn)一步地,本發(fā)明實(shí)施例的表單識別裝置在接收到用于提交表單網(wǎng)頁的觸發(fā)指令后,能夠確定表單網(wǎng)頁為有效表單,以便后續(xù)再次對這個表單網(wǎng)頁進(jìn)行加載時(shí),能夠更加快速準(zhǔn)確地識別出這個表單。其中,對于是否接收到觸發(fā)指令的判斷方法已在上述本發(fā)明實(shí)施例所提供的表單識別方法中做具體介紹,此處不再贅述。此外,本發(fā)明實(shí)施例的表單識別裝置還可以對識別出的表單進(jìn)行保存和填寫,表單識別裝置進(jìn)行表單保存和填寫的具體方法與上述本發(fā)明實(shí)施例所提供的表單識別方法中進(jìn)行表單保存和填寫的步驟相同,此處同樣不再贅述。從以上的描述中,可以看出,本發(fā)明通過快速檢測網(wǎng)頁代碼中是否包括密碼元素和用戶名元素,有效地降低了表單識別的復(fù)雜度,達(dá)到了提高表單識別率的效果;同時(shí),通過對表單數(shù)據(jù)進(jìn)行保存,實(shí)現(xiàn)了雙核瀏覽器下的表單數(shù)據(jù)的互通,提高了表單的適用性。需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計(jì)算裝置來實(shí)現(xiàn),它們可以集中在單個的計(jì)算裝置上,或者分布在多個計(jì)算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來實(shí)現(xiàn),從而,可以將它們存儲在存儲裝置中由計(jì)算裝置來執(zhí)行,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種表單識別方法,其特征在于,包括 接收訪問指令; 加載與所述訪問指令相對應(yīng)的網(wǎng)頁; 對加載的網(wǎng)頁的網(wǎng)頁代碼進(jìn)行掃描; 判斷掃描到的網(wǎng)頁代碼中是否包括屬性為第一預(yù)設(shè)屬性的元素,其中,所述第一預(yù)設(shè)屬性對應(yīng)的元素為密碼元素; 判斷掃描到的網(wǎng)頁代碼中是否包括屬性為第二預(yù)設(shè)屬性的元素,其中,所述第二預(yù)設(shè)屬性對應(yīng)的元素為用戶名元素;以及 若判斷出掃描到的網(wǎng)頁代碼中包括屬性為所述第一預(yù)設(shè)屬性的元素,并且還包括屬性為所述第二預(yù)設(shè)屬性的元素,則確定加載的網(wǎng)頁為表單網(wǎng)頁。
2.根據(jù)權(quán)利要求1所述的表單識別方法,其特征在于,對加載的網(wǎng)頁的網(wǎng)頁代碼進(jìn)行掃描包括 獲取產(chǎn)生所述訪問指令的內(nèi)核類型; 若獲取到的內(nèi)核類型為Trident內(nèi)核,則注入預(yù)設(shè)腳本代碼至所述網(wǎng)頁代碼中以對所述網(wǎng)頁代碼進(jìn)行掃描;以及 若獲取到的內(nèi)核類型為Webkit內(nèi)核,則對所述網(wǎng)頁代碼中的DOM樹中的input控件進(jìn)行掃描。
3.根據(jù)權(quán)利要求1所述的表單識別方法,其特征在于,在確定加載的網(wǎng)頁為表單網(wǎng)頁之后,所述表單識別方法還包括 判斷是否接收到觸發(fā)指令,其中,所述觸發(fā)指令用于提交所述表單網(wǎng)頁;以及 若判斷出接收到所述觸發(fā)指令,則確定所述表單網(wǎng)頁為有效表單。
4.根據(jù)權(quán)利要求3所述的表單識別方法,其特征在于,在產(chǎn)生所述訪問指令的內(nèi)核類型為Trident內(nèi)核時(shí),判斷是否接收到觸發(fā)指令包括 獲取所述網(wǎng)頁代碼中屬性為第三預(yù)設(shè)屬性的元素,得到第一元素,其中,所述第三預(yù)設(shè)屬性對應(yīng)的元素為提交事件; 復(fù)制所述第一元素,得到第二元素; 以所述第二元素覆蓋所述第一元素;以及 判斷所述第二元素是否被執(zhí)行,若判斷出所述第二元素被執(zhí)行,則確定接收到所述觸發(fā)指令。
5.根據(jù)權(quán)利要求3所述的表單識別方法,其特征在于,在產(chǎn)生所述訪問指令的內(nèi)核類型為Webkit內(nèi)核時(shí),判斷是否接收到觸發(fā)指令包括 獲取所述網(wǎng)頁代碼中屬性為第三預(yù)設(shè)屬性的元素,得到第一元素,其中,所述第三預(yù)設(shè)屬性對應(yīng)的元素為提交事件;以及 判斷所述第一元素是否被執(zhí)行,若判斷出所述第一元素被執(zhí)行,則確定接收到所述觸發(fā)指令。
6.根據(jù)權(quán)利要求3所述的表單識別方法,其特征在于,在確定加載的網(wǎng)頁為表單網(wǎng)頁之后,并且在判斷是否接收到觸發(fā)指令之前,所述表單識別方法還包括 獲取屬性為所述第一預(yù)設(shè)屬性的元素,得到密碼元素; 獲取屬性為所述第二預(yù)設(shè)屬性的元素,得到用戶名元素;查詢預(yù)設(shè)數(shù)據(jù)庫以判斷密碼數(shù)據(jù)和用戶名數(shù)據(jù)是否均已保存在所述預(yù)設(shè)數(shù)據(jù)庫中,其中,所述密碼數(shù)據(jù)為所述密碼元素對應(yīng)的數(shù)據(jù),所述用戶名數(shù)據(jù)為所述用戶名元素對應(yīng)的數(shù)據(jù);以及 若判斷出所述密碼數(shù)據(jù)和所述用戶名數(shù)據(jù)均已保存在所述預(yù)設(shè)數(shù)據(jù)庫中,則添加所述密碼數(shù)據(jù)至加載的網(wǎng)頁的密碼元素中,以及添加所述用戶名數(shù)據(jù)至加載的網(wǎng)頁的用戶名元素中。
7.根據(jù)權(quán)利要求3所述的表單識別方法,其特征在于,在確定加載的網(wǎng)頁為表單網(wǎng)頁之后,并且在判斷是否接收到觸發(fā)指令之前,所述表單識別方法還包括 獲取屬性為所述第一預(yù)設(shè)屬性的元素,得到密碼元素; 獲取屬性為所述第二預(yù)設(shè)屬性的元素,得到用戶名元素; 查詢預(yù)設(shè)數(shù)據(jù)庫以判斷密碼數(shù)據(jù)和用戶名數(shù)據(jù)是否均已保存在所述預(yù)設(shè)數(shù)據(jù)庫中,其中,所述密碼數(shù)據(jù)為所述密碼元素對應(yīng)的數(shù)據(jù),所述用戶名數(shù)據(jù)為所述用戶名元素對應(yīng)的數(shù)據(jù); 若判斷出所述用戶名數(shù)據(jù)已保存在所述預(yù)設(shè)數(shù)據(jù)庫中,并且所述密碼數(shù)據(jù)未保存在所述預(yù)設(shè)數(shù)據(jù)庫中,則添加所述用戶名數(shù)據(jù)至加載的網(wǎng)頁的用戶名元素中,并且接收用戶輸入的密碼數(shù)據(jù);以及 若判斷出所述用戶名數(shù)據(jù)和所述密碼數(shù)據(jù)均未保存在所述預(yù)設(shè)數(shù)據(jù)庫中,則接收用戶輸入的密碼數(shù)據(jù)和用戶名數(shù)據(jù)。
8.根據(jù)權(quán)利要求7所述的表單識別方法,其特征在于,在判斷出接收到所述觸發(fā)指令之后,所述表單識別方法還包括 顯示預(yù)設(shè)彈窗,其中,所述預(yù)設(shè)彈窗上設(shè)置有提示內(nèi)容,所述提示內(nèi)容用于提示所述用戶選擇是否保存所述密碼數(shù)據(jù)和所述用戶名數(shù)據(jù),或提示所述用戶選擇是否保存所述密碼數(shù)據(jù); 接收來自所述用戶的選擇指令;以及 在所述選擇指令表示選擇保存所述密碼數(shù)據(jù)和所述用戶名數(shù)據(jù)時(shí),保存所述密碼數(shù)據(jù)和所述用戶名數(shù)據(jù)至所述預(yù)設(shè)數(shù)據(jù)庫,或保存所述密碼數(shù)據(jù)至所述預(yù)設(shè)數(shù)據(jù)庫。
9.一種表單識別裝置,其特征在于,包括 接收單元,用于接收訪問指令; 加載單元,用于加載與所述訪問指令相對應(yīng)的網(wǎng)頁; 掃描單元,用于對加載的網(wǎng)頁的網(wǎng)頁代碼進(jìn)行掃描; 第一判斷單元,用于判斷掃描到的網(wǎng)頁代碼中是否包括屬性為第一預(yù)設(shè)屬性的元素,其中,所述第一預(yù)設(shè)屬性對應(yīng)的元素為密碼元素; 第二判斷單元,用于判斷掃描到的網(wǎng)頁代碼中是否包括屬性為第二預(yù)設(shè)屬性的元素,其中,所述第二預(yù)設(shè)屬性對應(yīng)的元素為用戶名元素;以及 確定單元,用于若判斷出掃描到的網(wǎng)頁代碼中包括屬性為所述第一預(yù)設(shè)屬性的元素,并且還包括屬性為所述第二預(yù)設(shè)屬性的元素,則確定加載的網(wǎng)頁為表單網(wǎng)頁。
10.根據(jù)權(quán)利要求9所述的表單識別裝置,其特征在于,所述掃描單元包括 第一獲取子單元,用于獲取產(chǎn)生所述訪問指令的內(nèi)核類型; 第一掃描子單元,用于在獲取到的內(nèi)核類型為Trident內(nèi)核時(shí),注入預(yù)設(shè)腳本代碼至所述網(wǎng)頁代碼中以對所述網(wǎng)頁代碼進(jìn)行掃描;以及 第二掃描子單元, 用于在獲取到的內(nèi)核類型為Webkit內(nèi)核時(shí),對所述網(wǎng)頁代碼中的DOM樹中的input控件進(jìn)行掃描。
全文摘要
本發(fā)明公開了一種表單識別方法和裝置。其中,表單識別方法包括接收訪問指令;加載與訪問指令相對應(yīng)的網(wǎng)頁;對加載的網(wǎng)頁的網(wǎng)頁代碼進(jìn)行掃描;判斷掃描到的網(wǎng)頁代碼中是否包括屬性為第一預(yù)設(shè)屬性的元素;判斷掃描到的網(wǎng)頁代碼中是否包括屬性為第二預(yù)設(shè)屬性的元素;若判斷出掃描到的網(wǎng)頁代碼中包括屬性為第一預(yù)設(shè)屬性的元素,并且還包括屬性為第二預(yù)設(shè)屬性的元素,則確定加載的網(wǎng)頁為表單網(wǎng)頁。通過本發(fā)明,解決了現(xiàn)有技術(shù)中表單識別率較低的問題,進(jìn)而達(dá)到了提高表單識別率的效果。
文檔編號G06F17/30GK103034711SQ20121052991
公開日2013年4月10日 申請日期2012年12月10日 優(yōu)先權(quán)日2012年12月10日
發(fā)明者蔡磊, 張駿, 萬振, 傅盛, 徐鳴, 王昆 申請人:北京金山安全軟件有限公司, 北京金山網(wǎng)絡(luò)科技有限公司, 貝殼網(wǎng)際(北京)安全技術(shù)有限公司, 可牛網(wǎng)絡(luò)技術(shù)(北京)有限公司