菜單導航

解析高考志愿信息網站爬蟲分析

作者:?精裝之家 來源:?精裝之家 發布時間:?2020年11月23日 20:45:05

對于某高考志愿信息網站寫了一個爬蟲, 遇到了一些問題, 在這里記錄一下, 順便學到了一些反爬蟲的技巧.

獲取每個學校的分數線情況, 首先在瀏覽器查看所有請求, 找到獲取數據的請求, 但是可以發現他這個請求回來的某些數據應該是經過加密的.

解析高考志愿信息網站爬蟲分析

這個解密代碼一定在客戶端, 因此我們找找, 看看能不能找到解密的代碼. 首先我們添加請求斷點, 看看能有什么突破.

解析高考志愿信息網站爬蟲分析

接下來觸發請求, 我們來看一下Call Stack中的信息, 經過排查, 我們可以發現如下重要的函數:

解析高考志愿信息網站爬蟲分析

通過查找源碼, 我們找到上面的那個函數的源碼, 這里代碼沒經過壓縮和混淆, 因此可讀性是真的好, 太良心了. 我們可以發現其中的兩個關鍵的函數showNumber和cnDeCrypt, 猜測應該是這兩個函數完成的對于參數的解密

解析高考志愿信息網站爬蟲分析

直接在這些函數下斷點, 來看看具體的調用, 我們可以發現showNumber的代碼非常簡單, 這里就不解釋了.

解析高考志愿信息網站爬蟲分析

接下來是cnDeCrypt, 這個函數看起來比較復雜, 實際上, 可以直接復制代碼到控制臺, 這個是可以直接執行的, 簡單分析一下可以知道他調用了split()和forEach兩個函數

解析高考志愿信息網站爬蟲分析

解析高考志愿信息網站爬蟲分析

解析高考志愿信息網站爬蟲分析

在這里, 簡單翻譯一下這段代碼吧, 到這里, 這個函數的作用就十分明顯了.

var _cnDeCrypt = function (zlVjhiyMm1) { var YB2 = ""; zlVjhiyMm1.split("|").forEach(function ($lvd3) { if ($lvd3.search(/【(.*?)】/) !== -1) { YB2 += $lvd3.replace('【', '').replace('】', ''); } else { $lvd3 = $lvd3.replace(/[g-t]/ig, ""); YB2 += "&#x" + $lvd3 + ";" } }); return YB2 }

最后我們可以發現, 最終返回的是html編碼, 但是這個和數據好像并不一樣, 我們審查元素來看看, 發現其內容是看不懂的內容, 這里感覺應該是采用了字體加密

解析高考志愿信息網站爬蟲分析

我們通過請求搜索一下字體文件, 我們可以發現如下的可疑文件, 利用FontEditor, 來查看一下.

解析高考志愿信息網站爬蟲分析

首先打開數字來看看, 字符串和數字差不多, 在這里就不截圖展示了.

(-^O^-)丧尸来袭游戏好玩吗 重庆麻将有多少张牌 北京pk拾手机版 蓝洞棋牌第一版 湖南哈哈麻将 南昌麻将算子规则 海南4+1彩票规则 中彩双色球综合分布图 白山棋牌松江河麻将 江西南昌麻将怎么玩 下载琼崖海南麻将2019 街机捕鱼波克 11选5规则 广西快乐双彩开奖情况 平特一肖方法 888棋牌手机版下载 南宁麻将app