反爬蟲監控系統
思路:
數據源
- nginx 獲取客戶端的請求 lua腳本收集nginx獲取的請求的數據推送到kafka(ps:lua腳本在收集數據時採用’$CS#'進行拼接)
數據處理模塊:
數據處理
- 數據切分:獲取kafka的數據,按照’#CS#'進行切分,並封裝到AccessLog對象中(其中的jessionId和userId需要從http_cookie中單獨提取出來)
- 鏈路統計:1.計算每臺nginx的數據量->根據server_addr直接進行統計 2.統計活躍連接數->由於活躍連接數時遞增的,只需要取出最後一個值即可。reduceByKey((x,y)=>y),
最後需要將結果存入到redis中,並設置過期時間=24h - 數據清洗:獲取mysql的過濾規則(過濾掉請求中不需要的文件,例如jpg,gif,png),進行廣播。通過在redis中設置flag,對數據庫的規則實時監控,
當規則變化時,標誌發生變化,去更新規則,重新廣播。將從kafka獲取的數據進行規則匹配,過濾掉規則內的文件 - 數據脫敏:本項目中涉及的敏感數據爲:身份證,手機號。從過濾後的數據中對http_cookie進行
正則匹配,格式爲 ‘=phone;’ 和 ‘=IdCard;’ 進行md5加密,進行替換 - 數據分類:根據需求,數據分爲 國內查詢(0,0),國際查詢(1,0),國內預定(0,1),國際預定(1,1)
獲取數據庫中的分類規則,分別獲取到了四種規則,封裝到一個Map進行廣播
通過在redis設置flag,實時監控數據庫規則變化
通過request對規則進行匹配,打上對應的標籤 封裝到 RequestType(代表查詢預定標籤)
通過對http_referer中的時間個數的判斷,打標籤(單程-> 0,往返-> 1) - 數據解析:獲取數據庫中的解析規則(查詢規則和預定規則),封裝到一個Map廣播並實時監控,根據上述打的對應的標籤對規則進行匹配,執行相應的解析