瑞數FSSBBIl1UgzbN7N443T分析

2021-10-01 17:45:58 字數 2487 閱讀 6600

本文僅做研究使用.

研究的是乙個移動的**,12580惠生活

觀察抓包:

分2次請求,才得到了頁面:

加入不處理cookie,直接進行第二次請求:

這樣是獲取不到資料的.

原因:

第一次請求獲取了js**,生成fssbbil1ugzbn7n443t這個cookie.帶著這個cookie請求才是成功的,這也是今天要分析的.

目標:

由於第一次請求獲取js**的資料每次都是變化的,變數也是混淆的,因此要完美的破解的話,必須解決每次多變不一的混淆,因此我們的目標是這樣,每次獲取得到的js**,直接使用乙個eval來執行,偽**:

function

get_data

(jscode)

思路:按照以上的目標,分析還是要以單次獲取的js來分析:

首先來觀察下**:

基本上是無法閱讀的,細心看下:

string物件被替換了

window物件被替換了.

所以要檢視如何呼叫的話,在**裡面基本讀不出來了.

js 扒下來執行,發現

1.id=

"9dhefwqgprzgxep9hpaoag" 的content屬性是乙個關鍵的地方

2.window[

'$_ts'

];這個也是解密相關的引數,是固定的,也可以抓出來.

接著來到了下一層的eval:

呼叫的關係是這樣的:

eval.

call

(window,code)

源**是這樣的,但是我們在node中執行的時候就會出錯.

出錯的原因是:

_$da函式沒有定義

但是函式明顯有定義:

由於我們的目標是不打算替換任何的**和改變任何一處源**的內容,所以我們打算深入的研究一下這個問題:

舉例:在瀏覽器中,我們定義了乙個函式a和全域性變數b,使用window[『a』]和window[『b』]來進行呼叫,發現是可以呼叫成功的

node中:

這樣發現,函式a並沒有新增到全域性的global物件中.window[『a』]和window[『b』]均為undefined

這是乙個非常有意思的結果.在瀏覽器中,var 定義的全域性變數會加到全域性window屬性中去,函式也自動加到了全域性為window呼叫.但是在node中卻不會加到全域性.

這個也是我們使用eval執行出現報錯的原因.

解決辦法:

使用遍歷ast修改**,將全域性的var和**第一層函式新增到window物件上去:

全域性var

首層函式

這樣就不需要改變任何**內容就完美的解決了這個問題

剩下的所有分析都在第二層的eval中了.

有幾個難點:

2.canvas物件:

某數中不僅使用了2d的canvas畫圖也是用了webgl的3d畫圖,所以這一部分的模擬需要很認真.

3.檢測的瀏覽器物件需要一一模擬,當然按照我們追求完美的結果的話需要這樣

接下來python模擬請求:

後面還有乙個引數mmewmd會在接下來的日子裡分享思路.

方格取數 1

problem description 給你乙個n n的格仔的棋盤,每個格仔裡面有乙個非負數。從中取出若干個數,使得任意的兩個數所在的格仔沒有公共邊,就是說所取的數所在的2個格仔不能相鄰,並且取出的數的和最大。input 包括多個測試例項,每個測試例項包括乙個整數n 和n n個非負數 n 20 ou...

1 兩數之和

給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 解class solution hash nums i...

1 兩數之和

給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 由於元素不能重複利用,所以使用j i 1,通過雙迴圈,...