貓眼商傢後臺登錄rohrToken的加密方式

马尔多纳多 2024-09-23 00:00 5次浏览 0 条评论 taohigo.com

上周五臨近下班,本想美滋滋的回傢愉快的看電視、擼串,同事跟我說以前負責爬蟲的同事的一個功能掛瞭,想著一起解決一下,沒想到跌進一個坑中

直奔主題,本來以為是之前同事的代碼是不是因為網站後臺登錄改版,換瞭地址而已,用Fiddler抓包後對比以前的爬蟲登錄,發現提交的登錄參數明顯數量差瞭好幾個,現在的Form裡面明顯多瞭一個RohrToken

心想,有什麼難度啊,估計可能就藏在那個頁面裡5分鐘後,坐在辦公室和同事點瞭根煙,思考究竟是哪裡出瞭問題簡單總結一下頁面

初步發現頁面的內容都是經過JS渲染上去的,所以但從Chrome的開發人員看不出太多內容來,但是這時候就差不多知道這個站點一定用到瞭大量的JS點開篩選器,隻顯示JS,搜索"登錄"這個詞

仔細觀察瞭一遍,發現沒有什麼有用的信息,不過也間接的多學習瞭JS的技術。打開調試,點擊登錄按鈕,發現根據JS動態生成瞭一個彈窗,新加載瞭一些js和css,從這裡入手看一下。

這麼多東西我們無法一個接著一個看,所以,根據抓包的內容中,rohrtoken進行搜索。

發現有兩個JS還有一個html涉嫌跟這個rohr有關系,逐一排查一下。先將html的代碼復制出來,用bejson的js/html格式化功能進行格式化,放到sublime中方便我們查看。在sublime中搜索rohr關鍵字,得到結果

繼續看另外兩個Rohr.js裡有不少代碼操作瞭Rohr

大概找到瞭入手點,開發人員工具中點開Sources,進行調試。發現這裡面操作瞭ip這個對象,我們在var iP處加上斷點,刷新頁面後發現此處在頁面加載時被執行過。逐步分析,在iP.reload處加上斷點,刷新頁面,點擊登錄按鈕,隨意輸入賬號密碼點擊登錄。

Emmmm ,是不是覺得勝利就在眼前瞭呢,我當時也是這麼想的。根據慣例,我們發現jv的值其實是基本固定的,取出備用。那麼我們可以直接調用這個ip.reload函數麼,因為返回的jw就是我們想要的值,其實是可以的,下面我們單獨寫一個html頁面,將下列我們在html頁面中發現的內容粘貼到我們的html中。然後調用Rohr_Opt.reload()這個函數。為什麼要調用Rohr_Opt.reload,因為我們在前面的途中發現瞭ip被賦給瞭Rohr_Opt,因為我們定義Rohr_Opt為Object,並且在js中有如下判斷

if (typeof (Rohr_Opt) === _$_543c[2]) {
iP.bindUserTrackEvent();
Rohr_Opt.reload = iP.reload;
Rohr_Opt.sign = iP.sign;
Rohr_Opt.clean = iP.decrypt
})