網絡爬蟲-58同城·招聘聯繫電話js解密

一個簡單的cryptojs加密的網站,58同城·招聘的隱藏電話號碼 如下圖示

在這裏插入圖片描述

注意,58招聘查看聯繫方式是需要登錄授權的,所以前面的步驟一一省略,僅分析抓包請求,如何通過requests拿到我們想要的電話號碼

接下來進行抓包分析,我們點擊電話溝通,看看是加載了哪些請求

在這裏插入圖片描述

不難發現 這個異步請求給我們返回了一個值 virtualNum 虛擬電話號碼 於是可以聯想到這個數據是經過了加密的 於是接下來就需要在網頁上去尋找加密算法

在上一篇icgoo電子元件網js加密破解分析 中已經介紹過了如何使用chrome去全局搜索js方法 這裏就不再重複囉嗦了 直接上圖

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

有點js基礎的童鞋不難發現 這裏實際上是使用了cryptojs來對電話號碼進行逆向解密的,有點類似於公鑰加密,私鑰解密的東西,一眼就可以看出來。。。 於是就可以歡快地把這段js趴下來運行了. 對cryptojs不太懂的童鞋可以面向百度瞭解一波,我們這裏就不囉嗦了,直接在58招聘這個頁面搜到cryptojs拿來運行。

在這裏插入圖片描述

js代碼如下(cryptoJS過長所以未在此展示)

var CryptoJS=CryptoJS // 內容太長請去原網站複製

function getRealPhone(word) {
    var key = CryptoJS.enc.Utf8.parse("RIOHwmVrvD+tt8Xv")
      , decrypt = CryptoJS.AES.decrypt(word, key, {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
    });
    return CryptoJS.enc.Utf8.stringify(decrypt).toString()
}

python代碼如下

import execjs

js = execjs.compile(open("js.js", "r").read())
token = "EteFNAJt19Y7/qQuQIhDvlMNBD2PGpoWvoGEmqZm4xE="
realPhone = js.call("getRealPhone", token)
print(realPhone)

效果圖如下

在這裏插入圖片描述

到此分析結束。結果能完全對應上。實際上這個網站的js加密難度爲入門級,初學者可以多試試這類網站。多斷點調試,多全局搜索,多用fiddler抓包,每個流程,每個函數一層一層地去解析,實際上再難的網站也是一步一步解析出來的。

github傳送門 → 58同城·招聘聯繫電話js解密

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章