一種全自動的web客戶端人機識別的方法
【專利摘要】本發明涉及一種全自動的WEB客戶端人機識別的方法,包括如下步驟:接收來自客戶端的請求,根據客戶端的IP地址與HTTP請求頭的部分信息,生成一個能標識該客戶端的識別密鑰KEY,并把該KEY放在一段Javascript代碼中,返回給客戶端。客戶端接收并執行該Javascript代碼后,會生成包含了該KEY的客戶端身份Cookie,然后使用該Cookie再次訪問WEB服務器。如果請求包含了正確的Cookie值,則認為客戶端是瀏覽器,訪問被放行。如果請求未包含正確的Cookie,則認為客戶端是非瀏覽器,請求會被忽略。該方法實現了透明的客戶端瀏覽器與非瀏覽器的識別,能有效降低來自WEB爬蟲、WEB掃描器以及網頁信息采集程序等自動工具的訪問,非常適合應用在需要公開發布信息,但是又不希望發布的信息被自動化WEB獲取的網站。
【專利說明】—種全自動的WEB客戶端人機識別的方法
【技術領域】
[0001]本發明屬于計算機網絡【技術領域】,具體涉及一種全自動的WEB客戶端人機識別的方法。
【背景技術】
[0002]在互聯網快速發展浪潮的推動之下,金融、應用服務提供商、電子商務及政府單位等各類機構都將其業務系統移植到WEB上來,WEB已經儼然成為普適平臺,計算及業務資源向數據中心高度集中。因為越來越多地承載各類客戶的核心業務,WEB成為互聯網上最主要的信息發布平臺。WEB信息的獲取是如此的方便以及廉價,導致WEB信息被濫用、盜用的現象越來越普遍,越來越多的自動化工具被開發出來,夜以繼日地對互聯網上的信息進行收集。因為這些工具的訪問對WEB系統造成了一定的負面影響,人們開始采取一些技術手段限制針對某些WEB信息的訪問。
[0003]對于少量需要識別人與計算機訪問的網頁,可以通過CAPTCHA技術來進行。CAPTCHA是Completely Automated Public Turing Test to Tell Computers and HumansApart (全自動區分計算機和人類的圖靈測試)的簡稱。但是該過程需要人工的介入,不適合信息發布與瀏覽的網站。
[0004]有些網站通過過濾HTTP請求的特定User-Agent頭來過濾爬蟲等自動化工具的訪問,但是因為根據HTTP協議規范,User-Agent頭的值是可以任意設置的,因此很多自動化工具都把自己的User-Agent設置成與普通的瀏覽器一樣來逃避過濾。有些網站采取過濾客戶端IP的方法減少來自WEB爬蟲的訪問,但是這只能過濾掉已知的網絡爬蟲和網頁采集器的訪問,并不能阻斷來自非固定IP的WEB掃描器以及惡意WEB自動工具的訪問。
[0005]因此需要一種不需要人工介入,能夠有效屏蔽來自網絡爬蟲、WEB掃描器以及惡意網頁信息采集器等自動化WEB工具,同時不影響瀏覽器正常訪問的方法。
【發明內容】
[0006]本發明的目的在于公開一種全自動的WEB客戶端人機識別的方法,能夠識別出瀏覽器與非瀏覽器自動化工具的WEB訪問行為,通過阻止自動化工具的訪問,可以有效降低WEB信息被盜用、網站被自動化工具攻擊的概率。
[0007]本發明公開了一種全自動的WEB客戶端人機識別的方法,包括如下步驟:瀏覽器識別系統接收來自客戶端的請求,根據客戶端的IP地址與HTTP請求頭的部分信息,生成一個能標識該客戶端的識別密鑰KEY,并把該識別密鑰KEY放在一段Javascript代碼中,返回給客戶端。客戶端接收并執行該Javascript代碼后,會生成包含了該識別密鑰KEY的客戶端身份Cookie,然后使用該客戶端身份Cookie再次訪問WEB服務器。如果請求包含了正確的客戶端身份Cookie值,瀏覽器識別系統則認為客戶端是瀏覽器,訪問被放行。如果請求未包含正確的客戶端身份Cookie,則認為客戶端是非瀏覽器,請求會被忽略。
[0008]本發明的技術方案只要求客戶端的瀏覽器具有Javascript代碼執行功能,目前市場上主流的瀏覽器都具備執行Javascript代碼的功能,因此本發明方案的實施幾乎不受限制,具有廣泛的意義。
[0009]網絡爬蟲、WEB掃描器以及網頁信息采集器等自動化工具,通過構造HTTP請求,接收來自WEB服務器的響應內容,最后查找WEB服務器響應里的敏感內容,如網頁鏈接、郵件地址等來獲取相應信息。這些自動化的工具都是為獲取某一類信息而設計開發的,與瀏覽器程序的一個很重要的區別就是,非瀏覽器自動化工具通常都不具備Javascript代碼解析與執行的能力,因而并不會重新發出請求,而是會將瀏覽器識別系統返回的頁面作為先前請求的內容。
[0010]本發明的技術方案通過要求客戶端執行Javascript代碼來獲取該客戶端后續訪問WEB服務器時所需要的HTTP Cookie來區分瀏覽器與非瀏覽器客戶端,充分利用了非瀏覽器等自動化工具的缺陷,具有極高的識別準確率。
[0011]本發明與其他已有的過濾網絡爬蟲以及CAPTCHA的方案相比,具有如下的優點:
1.完全自動的完成瀏覽器訪問的識別過程,不需要人工介入,適合大量信息發布與瀏覽的網站和WEB應用系統;
2.可以有效防止User-Agent字段被假冒的情況,有效識別出通過篡改和假冒User-Agent頭來企圖逃避檢查的自動化工具;
3.系統部署后無復雜的維護過程,無需像傳統的過濾客戶端IP的方案那樣需要定期更新的需要過濾的客戶端IP列表;
4.能完全識別出現有各種自動化工具的變種以及未來出現的各種HTTP自動化工具。
[0012]本發明所述方法,實現了透明的客戶端瀏覽器與非瀏覽器的識別,能有效降低來自WEB爬蟲、WEB掃描器以及網頁信息采集程序等自動工具的訪問,非常適合應用在需要公開發布信息,但是又不希望發布的信息被自動化WEB獲取的網站。
【專利附圖】
【附圖說明】
[0013]圖1是本發明中瀏覽器識別過程的流程圖;
圖2是本發明中HTTP客戶端、瀏覽器識別系統與WEB服務器交互的過程圖。
【具體實施方式】
[0014]參見圖1、圖2所示,本發明提供一種全自動的WEB客戶端人機識別的方法,實現該方法的系統(以下稱為瀏覽器識別系統),既可以作為WEB服務器的插件部署在WEB服務器上,也可以作為HTTP反向代理服務部署在網關設備上,通過該系統對瀏覽器與非瀏覽器自動化工具的WEB訪問行為進行識別。
[0015]本發明所述方法包括如下步驟:
(I)針對任意一個客戶端發出的HTTP請求,瀏覽器識別系統根據客戶端的IP地址與HTTP請求頭的User-Agent字段信息,生成能標識該客戶端的Cookie名稱;生成的算法為md5 (client_ip, user_agent, preshared_key),其中 client_ip 是客戶端的 IP 地址,user_agent是客戶端發起請求時所用的HTTP請求頭中User-Agent字段的值,preshared_key是瀏覽器識別系統預先配置的一個密鑰,md5代表對client_ip、user_agent與preshared_key合并的字符串進行的md5消息摘要運算。運行該算法得到的摘要值進行十六進制字符化后作為該客戶端的身份識別Cookie的名稱,該Cookie稱為客戶端身份Cookie。
[0016](2)根據瀏覽器識別系統當前的時間戳、客戶端身份Cookie名稱,來生成客戶端的識別密鑰KEY,并把該識別密鑰KEY返回給客戶端。生成的算法為md5 (timestamp,cookie_name, preshared_key),其中timestamp為瀏覽器識別系統當前的時間戳,cookie_name是客戶端身份Cookie名稱,preshared_key是身份識別系統預先配置的一個密鑰,md5代表對timestamp、cookie_name與preshared_key合并的串進行的md5消息摘要運算,得到的摘要值進行十六進制字符化后作為該客戶端身份Cookie的值的一部分,完整的客戶端身份Cookie的值為“timestamp/KEY”。該Cookie值中的時間戳信息賦予了客戶端識別密鑰KEY時間屬性,可以識別出因為超時而失效的識別密鑰KEY。
[0017](3)瀏覽器識別系統檢查HTTP請求中是否帶有客戶端身份Cookie。如果請求帶有客戶端身份Cookie,則檢查客戶端的識別密鑰KEY是否合法,如果KEY合法則放行該請求,否則進入步驟(4);如果請求沒有帶客戶端身份Cookie,則直接進入步驟(4)。
[0018](4)把客戶端身份Cookie名稱字符串與識別密鑰KEY字符串,放在一段Javascript代碼中。瀏覽器識別系統生成一個包含了該Javascript代碼的html頁面作為HTTP響應內容,返回給客戶端。發送給客戶端的該Javascript代碼可以是明文的,也可是經過加密或混淆處理的。
[0019](5)客戶端讀取瀏覽器識別系統返回的頁面內容。
[0020](6)如果該客戶端不是瀏覽器,它會認為系統返回的應答內容就是原先請求的頁面的內容。因為客戶端無法從瀏覽器識別系統返回的應答內容里獲取更多的頁面鏈接等信息,因此無法繼續爬取其他頁面。
[0021](7)如果該客戶端是瀏覽器,會自動執行瀏覽器識別系統返回的頁面里的Javascript代碼。實際應用中可以是在頁面加載時執行,也可以是延遲一段時間執行。
[0022]執行該Javascript代碼后,會再次發起對原先頁面的請求。與客戶端第一次發送的請求不一樣的是,這次發送的HTTP請求,帶有由瀏覽器識別系統返回的Javascript代碼生成的客戶端身份Cookie以及作為Cookie值的識別密鑰KEY。
[0023](8)瀏覽器識別系統判斷客戶端身份Cookie以及識別密鑰KEY正確后,放行該請求。
[0024](9)WEB服務器接受該請求,返回正常的頁面內容。
[0025]本發明的上述方法,既可以對所有網頁的訪問進行檢查,也可以針對某類網頁或者某個具體的網頁的訪問進行檢查。
[0026]盡管本發明的內容已經通過上述優選實施例作了詳細介紹,但應當認識到上述的描述不應被認為是對本發明的限制。在本領域技術人員閱讀了上述內容后,對于本發明的多種修改和替代都將是顯而易見的。因此,本發明的保護范圍應由所附的權利要求來限定。
【權利要求】
1.一種全自動的WEB客戶端人機識別的方法,其特征在于,包含以下步驟: (a)瀏覽器識別系統接收來自客戶端的HTTP請求,并根據客戶端IP地址與HTTP請求頭的部分信息,生成能標識該客戶端的識別密鑰KEY ; (b)瀏覽器識別系統生成一段包含有識別密鑰KEY的Javascript代碼,并將該Javascript代碼返回給客戶端; (C)客戶端執行該Javascript代碼,生成包含了識別密鑰KEY的客戶端身份Cookie ; (d)客戶端用基于Javascript生成的客戶端身份Cookie,自動再次發出訪問WEB服務器的第二次HTTP請求; (e)瀏覽器識別系統對第二次HTTP請求是否含有合法的客戶端身份Cookie值進行識另IJ,以判斷第二次HTTP請求是否由瀏覽器發出,被識別為由瀏覽器發出的含有合法客戶端身份Cookie值的第二次HTTP請求被放行,其他請求會被瀏覽器識別系統忽略。
2.如權利要求1所述全自動的WEB客戶端人機識別的方法,其特征在于: 瀏覽器識別系統將生成的識別密鑰KEY與時間戳一起作為客戶端身份Cookie的值,則瀏覽器識別系統通過時間戳信息能夠識別因超時而失效的識別密鑰KEY。
3.如權利要求1所述全自動的WEB客戶端人機識別的方法,其特征在于: 客戶端通過自動執行系統向其返回的Javascript代碼,來生成能夠被系統正確識別的客戶端身份Cookie,則客戶端后續的HTTP請求中必須帶有該客戶端身份Cookie。
4.如權利要求1所述全自 動的WEB客戶端人機識別的方法,其特征在于: 所述方法對客戶端向所有網頁的訪問進行檢查,或者針對向某類網頁或某個具體的網頁的訪問進行檢查。
5.如權利要求1所述全自動的WEB客戶端人機識別的方法,其特征在于: 所述瀏覽器識別系統是在WEB服務器上作為WEB服務器的一個插件實現,或者在網關設備上作為一個HTTP反向代理實現。
6.如權利要求1所述全自動的WEB客戶端人機識別的方法,其特征在于: 發送給客戶端的Javascript代碼是在頁面加載時執行,或者是延遲一段時間后執行。
7.如權利要求1所述全自動的WEB客戶端人機識別的方法,其特征在于: 發送給客戶端的Javascript代碼是明文的,或者是經過加密或混淆處理的。
8.一種全自動的WEB客戶端人機識別的方法,用以防止WEB服務器被非瀏覽器訪問,其特征在于,包含以下步驟: (1)瀏覽器識別系統接收來自客戶端的HTTP請求,并根據客戶端IP地址與HTTP請求頭的部分信息,生成該客戶端的客戶端身份Cookie的名稱; (2)瀏覽器識別系統還根據當前的時間戳、客戶端的客戶端身份Cookie的名稱,來生成標識客戶端的識別密鑰KEY,并將該識別密鑰KEY作為客戶端身份Cookie的值中的至少一部分; (3)瀏覽器識別系統先檢查客戶端的HTTP請求中,是否帶有客戶端的客戶端身份Cookie,如果有則進一步檢查其中的識別密鑰KEY是否合法,如果KEY合法則放行該請求,否則進入步驟(4),如果HTTP請求沒有帶有客戶端的客戶端身份Cookie,則直接進入步驟(4); (4)瀏覽器識別系統生成一個包含Javascript代碼的頁面,并將該頁面返回給客戶端,所述Javascript代碼中帶有系統生成的客戶端身份Cookie的名稱字符串和識別密鑰KEY字符串; (5)客戶端讀取瀏覽器識別系統返回的頁面; (6)若客戶端是不能夠解析Javascript代碼的非瀏覽器時,會將瀏覽器識別系統返回的頁面,作為先前向WEB服務器請求的響應內容; (7)若客戶端是瀏覽器時,將自動執行系統返回頁面中的Javascript代碼并生成第二次HTTP請求;先前的HTTP請求與該第二次HTTP請求中,需要WEB服務器返回的響應內容是一致的;并且,所述第二次HTTP請求中包含能夠被系統正確識別的客戶端的客戶端身份Cookie及識別密鑰KEY ; (8)瀏覽器識別系統判斷第二次HTTP請求中客戶端的客戶端身份Cookie和識別密鑰KEY正確時,放行第二次請求; (9)WEB服務器接收到被放行的第二次HTTP請求后,返回相應的響應內容。
9.如權利要求8所述防止WEB服務器被非瀏覽器訪問的方法,其特征在于: 步驟(1)中,瀏覽器識別系統根據客戶端IP地址與HTTP請求頭的User-Agent字段信息,來生成該客戶 端的客戶端身份Cookie的名稱。
10.如權利要求8所述防止WEB服務器被非瀏覽器訪問的方法,其特征在于: 步驟(2)中完整的客戶端身份Cookie的值包含時間戳及識別密鑰KEY,則在步驟(3)中瀏覽器識別系統將進一步通過時間戳信息判斷識別密鑰KEY是否因超時而失效。
【文檔編號】H04L29/08GK103888490SQ201210557507
【公開日】2014年6月25日 申請日期:2012年12月20日 優先權日:2012年12月20日
【發明者】葉志強, 程勝年 申請人:上海天泰網絡技術有限公司