這是老陳的交流羣裏一位羣友的提問,交流羣裏的大佬巨多,我想這個問題應該很快就會獲得解決。python
果不其然,很快有老哥給出了破解代碼,默默點個贊,說句牛逼。web
這裏先貼上 Loco大佬的知乎專欄 , 專欄內容主要是爬蟲反爬,逆向的文章,更多人關注說不定大佬能奮起更新。chrome
還有給出代碼的老哥i
寫的教程,發表在aio老陳的公衆號:ide
mp.weixin.qq.com/s/UP3EiMIuU…chrome-devtools
我看到原由裏有老哥給出解答後,也抱着試一試的態度本身去試試,此次破解的主要內容在aio老陳的公衆號寫的足夠詳細了,因此本文就說說我遇到的幾個卡住的點,對此次的解密作個筆記,便於以後複習回顧。工具
打開開發者模式
,切換到XHR選項卡
,發現這裏有兩個請求:測試
快捷鍵打開全局搜索,搜索encrypt_data
,發現只找到一個文件,在文件內搜索encrypt_data
有六處關聯的地方:google
這裏我遇到第一個坑:編碼
經過檢索我很快就找到了關聯的地方,可是我用錯了方法,沒有認真分析代碼一直在callback
裏找解密的地方把問題複雜化了。
其實解密的地方就在下面截圖斷點的地方:
經過兩次F11的調試,我找到了解密的地方:
這裏我遇到的第二個坑,這裏坑的主要緣由是我對調試工具的不熟悉,我一直使用的是F10的調試功能,正好 Loco大佬在羣裏講解的時候說到了這一方面的資料:
找到加密代碼以後就能夠按照前面缺啥補啥的套路了。
這裏來個代碼的開頭,拋轉引玉。
這裏是第三個坑:
摳出所有的js代碼後有一個坑的地方,就是在js運行正常的代碼在python中調用的時候出現報錯,這個報錯的解決方案以下:
正常咱們摳出的js代碼以下:(關鍵部分)
實際上在python中調用的時候要這樣寫:(代碼源自開頭給出代碼的老哥那)
function my_decrypt(t) {
return new Buffer(s("5e5062e82f15fe4ca9d24bc5", my_decode(t), 0, 0, "012345677890123", 1)).toString("base64")
}
複製代碼
之因此這麼改的緣由是:
「由於直接返回object給Python會報錯,因此這裏將JSON.parse移除了,返回parse前的json字符串,同時爲了防止這串字符串內有特殊編碼的字符,這裏將它轉成base64再return」 -- Loco大佬
以上就是此次源自羣聊的js破解歷程,但願本文中說起的文章、教程對你有所幫助。
代碼測試於2019-5-13
EOF