国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【爬蟲逆向案例】某道翻譯js逆向—— sign解密

這篇具有很好參考價(jià)值的文章主要介紹了【爬蟲逆向案例】某道翻譯js逆向—— sign解密。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

聲明:本文只作學(xué)習(xí)研究,禁止用于非法用途,否則后果自負(fù),如有侵權(quán),請(qǐng)告知?jiǎng)h除,謝謝!

1、前言

相信各位小伙伴在寫爬蟲的時(shí)候經(jīng)常會(huì)遇到這樣的情況,一些需要攜帶的參數(shù)一直在變化,今天逆向的這個(gè)網(wǎng)站某道翻譯也如此:

【爬蟲逆向案例】某道翻譯js逆向—— sign解密,Python,筆記,js逆向,前端,爬蟲,逆向
【爬蟲逆向案例】某道翻譯js逆向—— sign解密,Python,筆記,js逆向,前端,爬蟲,逆向
可以發(fā)現(xiàn)變的就兩個(gè)參數(shù),一個(gè) sign,一個(gè)是 mysticTime,mysticTime 一看就是時(shí)間戳,所以只要逆向 sign 參數(shù)就行了。

2、步驟

可以直接全局搜索 sign:,加一個(gè)冒號(hào)可能好搜一點(diǎn)。搜索返回的結(jié)果比較少,多的話就每個(gè)sign都打上斷點(diǎn),點(diǎn)擊翻譯看看停在哪里。如果實(shí)在是太多了,就采用跟棧的方法,準(zhǔn)確無(wú)誤,慢慢的,我們找到了 sign 的位置:

【爬蟲逆向案例】某道翻譯js逆向—— sign解密,Python,筆記,js逆向,前端,爬蟲,逆向

t 是個(gè)時(shí)間戳,方法就是 (new Date).getTime()。e 是個(gè)固定值 "fsdsogkndfokasodnaso",h 函數(shù)傳入了 t 和 e 后就生成了 sign,進(jìn)入 h 函數(shù),發(fā)現(xiàn)就在上面。而 d 和 u 這兩個(gè)參數(shù)也是固定的。并且 h 函數(shù)里面有調(diào)用了一個(gè) v 函數(shù),進(jìn)入 v 函數(shù),原來(lái) v 函數(shù)也在上面。這 v 函數(shù)太熟悉了啊,標(biāo)準(zhǔn)的 MD5 加密。

整理一下完整的 js 代碼就如下圖所示:

【爬蟲逆向案例】某道翻譯js逆向—— sign解密,Python,筆記,js逆向,前端,爬蟲,逆向

測(cè)試完沒(méi)問(wèn)題后,就可以封裝為 Python 進(jìn)行請(qǐng)求了,如下圖:

【爬蟲逆向案例】某道翻譯js逆向—— sign解密,Python,筆記,js逆向,前端,爬蟲,逆向

現(xiàn)在可以開(kāi)始編寫爬蟲程序,寫完運(yùn)行一下,發(fā)現(xiàn)返回的不是翻譯后的內(nèi)容,而是一串字符,那就需要我們來(lái)解密一下了:

【爬蟲逆向案例】某道翻譯js逆向—— sign解密,Python,筆記,js逆向,前端,爬蟲,逆向
我們用跟棧的方法看密文在哪里出現(xiàn)的和在哪里發(fā)生了變化,一步一步往下跟,最先調(diào)用的函數(shù)放在最下面,我們只需要跟到明文出現(xiàn)的那一刻就行了。

我們先復(fù)制請(qǐng)求的 URL:

【爬蟲逆向案例】某道翻譯js逆向—— sign解密,Python,筆記,js逆向,前端,爬蟲,逆向

切換到源代碼,在XHR/提取斷點(diǎn)把剛才復(fù)制的網(wǎng)址加上去,重新點(diǎn)一下翻譯

【爬蟲逆向案例】某道翻譯js逆向—— sign解密,Python,筆記,js逆向,前端,爬蟲,逆向
可以看到這個(gè) send 就是發(fā)請(qǐng)求,現(xiàn)在主要要找返回的數(shù)據(jù),我們一步步進(jìn)入下一個(gè)函數(shù)調(diào)用看看

【爬蟲逆向案例】某道翻譯js逆向—— sign解密,Python,筆記,js逆向,前端,爬蟲,逆向
不過(guò)一會(huì)咱們可以看見(jiàn),咱們剛才爬蟲請(qǐng)求返回的字符出現(xiàn)了,接下來(lái)咱們要注意看了,因?yàn)橐_(kāi)始處理這個(gè)返回的字符串

【爬蟲逆向案例】某道翻譯js逆向—— sign解密,Python,筆記,js逆向,前端,爬蟲,逆向
跟到這邊的話,可以發(fā)現(xiàn)在這字符串成功翻譯出來(lái)了,如圖所示:

【爬蟲逆向案例】某道翻譯js逆向—— sign解密,Python,筆記,js逆向,前端,爬蟲,逆向

可以看到起作用的是這個(gè) decodeData ,我們進(jìn)入那個(gè) js 文件

【爬蟲逆向案例】某道翻譯js逆向—— sign解密,Python,筆記,js逆向,前端,爬蟲,逆向
把其他斷點(diǎn)取消,這邊打上斷點(diǎn),重新翻譯一下,一步一步往下跟,我們只需要跟到明文出現(xiàn)的那一刻就行了。
【爬蟲逆向案例】某道翻譯js逆向—— sign解密,Python,筆記,js逆向,前端,爬蟲,逆向
到 t 的時(shí)候還是一串字符串,繼續(xù)往下走
【爬蟲逆向案例】某道翻譯js逆向—— sign解密,Python,筆記,js逆向,前端,爬蟲,逆向
可以看到到 s 的時(shí)候已經(jīng)翻譯出來(lái)了

【爬蟲逆向案例】某道翻譯js逆向—— sign解密,Python,筆記,js逆向,前端,爬蟲,逆向
我們把代碼扣下來(lái)放到 js 文件中去執(zhí)行應(yīng)該就差不多了
【爬蟲逆向案例】某道翻譯js逆向—— sign解密,Python,筆記,js逆向,前端,爬蟲,逆向
看到了 r.a.createDecipheriv,就可以用 node 中內(nèi)置的加密庫(kù) crypto 庫(kù)去執(zhí)行,當(dāng)然也可以硬扣,就是有點(diǎn)費(fèi)時(shí)間,而且還可能出現(xiàn)各種報(bào)錯(cuò)。

運(yùn)行報(bào)錯(cuò)缺 g ,去代碼再摳出來(lái),記得 r.a.createHash("md5").update(e).digest() 改為 node 中內(nèi)置的加密庫(kù) crypto 庫(kù):
【爬蟲逆向案例】某道翻譯js逆向—— sign解密,Python,筆記,js逆向,前端,爬蟲,逆向
【爬蟲逆向案例】某道翻譯js逆向—— sign解密,Python,筆記,js逆向,前端,爬蟲,逆向

運(yùn)行報(bào)錯(cuò)缺了 o ,直接把 o 復(fù)制進(jìn)來(lái),
【爬蟲逆向案例】某道翻譯js逆向—— sign解密,Python,筆記,js逆向,前端,爬蟲,逆向
【爬蟲逆向案例】某道翻譯js逆向—— sign解密,Python,筆記,js逆向,前端,爬蟲,逆向

再次運(yùn)行報(bào)錯(cuò)沒(méi)有 e.alloc 函數(shù) ,這就需要補(bǔ)充一點(diǎn) node.js 的相關(guān)知識(shí)了:

逆向改寫知識(shí)補(bǔ)充之 Node.js
Buffer.alloc() 方法:用于創(chuàng)建指定大小的新緩沖區(qū)對(duì)象。
此方法比 Buffer.alloconsafe() 方法慢,但它確保新創(chuàng)建的 Buffer 實(shí)例永遠(yuǎn)不會(huì)包含可能敏感的舊信息或數(shù)據(jù)。
語(yǔ)法:Buffer.alloc(size, fill, encoding)
參數(shù)三個(gè)參數(shù):

  • 大小:指定緩沖區(qū)的大小。
  • 填充:為可選參數(shù),指定填充緩沖區(qū)的值。其默認(rèn)值為 0。
  • 編碼:如果緩沖區(qū)值是字符串,它是指定值的可選參數(shù)。其默認(rèn)值為‘utf8’。

返回值:

  • 這個(gè)方法返回一個(gè)新的指定大小的初始化緩沖區(qū)。
  • 如果給定的大小不是數(shù)字,將引發(fā)類型錯(cuò)誤。

故我們只需要修改 js 代碼為如下:

function data(t) {
    // const a = e.alloc(16, g(o))
    //     , c = e.alloc(16, g(n))
    const a = Buffer.alloc(16, g(o))
        , c = Buffer.alloc(16, g(n))
        , i = crypto.createDecipheriv("aes-128-cbc", a, c);
    //, i = r.a.createDecipheriv("aes-128-cbc", a, c);
    let s = i.update(t, "base64", "utf-8");
    return s += i.final("utf-8"),
        s
}

再次運(yùn)行,缺少 n ,返回復(fù)制補(bǔ)到 js 代碼中:
【爬蟲逆向案例】某道翻譯js逆向—— sign解密,Python,筆記,js逆向,前端,爬蟲,逆向
最后咱們的 js 代碼如下,測(cè)試之后,確實(shí)沒(méi)有問(wèn)題,直接用 Python 封裝起來(lái):

const crypto = require('crypto')
const o = 'ydsecret://query/key/B*RGygVywfNBwpmBaZg*WT7SIOUP2T0C9WHMZN39j^DAdaZhAnxvGcCY6VYFwnHl';
const n = 'ydsecret://query/iv/C@lZe2YzHtZ2CYgaXKSVfsb7Y4QWHjITPPZ0nQp87fBeJ!Iv6v^6fvi2WN@bYpJ4';

function data(t) {
    const a = Buffer.alloc(16, g(o))
        , c = Buffer.alloc(16, g(n))
        , i = crypto.createDecipheriv("aes-128-cbc", a, c);
    //, i = r.a.createDecipheriv("aes-128-cbc", a, c);
    let s = i.update(t, "base64", "utf-8");
    return s += i.final("utf-8"),
        s
}

function g(e) {
    return crypto.createHash("md5").update(e).digest()
    // r.a.createHash("md5").update(e).digest()
}


text = 'Z21kD9ZK1ke6ugku2ccWu4n6eLnvoDT0YgGi0y3g-v0B9sYqg8L9D6UERNozYOHqnYdl2efZNyM6Trc_xS-zKtfTK4hb6JP8XwCzNh0avc8qItQUiIU_4wKKXJlIpvMvfKvJaaZzaX6VEtpkr2FdkfoT_Jgbm2GRSVj3r40autIdlImENG8hC0ZH4ww7utwuTt3Oo_ZpXg0BSq9wePSAB75-ChkiGKF9HTIPeCl2bl84SBD1XDfFCZpkKQhecYSs0JLoXOqP2ltavxRrg58Hp1q5uIgZZ_Oo2-Jmd-t1r4es40drcAq5bjmS62M2VJF8D6ojtOh9JTfNwgzD3CxYn-Pd7-TgHMyNEJEkFXTAyxzpjlFqtrCYDE3SZUYlENkqsL8Wrra1hM-1nTfiB-BLcWAdRBynNpP5_54aq_-GBsq8bB_9yEX5ovzDB4_Ry_spVVuUnb39iplMHCdCnjOD3ngiIDbl9SUz-9npjBX05ZYRdPmFPAl424qdoaxeVqnVoH8jQFPZVqaHMzu4mJg0SICDWFH7GP1zqGRbXd3ESjT_iBInl3gICt2XVuhh_nubcELkTEC6xbqEDRQkPUNMpzXJHjcvsLHtcmSW0S9F0445ho9kT2qZYdMBC3Fs0OaHpUtFu77gZpQn7sGiqh8VliXIcUtfvvop-1c-Vu5QjfUbLn2-s5POR9fGYG6rt6ioe_PGmwWj-Cc00zUM7FybfarKTr4D3Rk57R72qpXN4Ja86ZsCAMmDG-m5z31RQh_V7echJ8Kna3Go3yWKCK4vtSwOWrFhiS5RTz6EkrGc3SkFKbb5vp8Wop_84myBtgnBmj4CczhTq2HcOxrJf4def6yDt2uBxyv4bTVGx9Yx3uB4Gx0iK5kYvfma6B_LnkRWk331wjuXKQtBGYIuWkR8J5QtvBmIRVaa7AA19Z4xMIEAqbcuQ5p4I9FCElthBrJd9YOcouHK4U27xxYWJJXcJoTvzG7zWtiV76fHDeQLgAWvJJ7ww4NFgjhqc6AKA_2afxa4c_lAvVZgFuKL3XSCL7PfKxp6GhjcGKeSRr80PT1gfFw2xi8X4ejjNm_prsUZ\n'
console.log(data(text))

用 json.loads 解析一下解密后的數(shù)據(jù),即可獲取翻譯的正文,

def get_explain_data(data):
    with open('./youdao.js', 'r', encoding='utf-8') as file:
        result = file.read()
        context1 = execjs.compile(result)
        explain_data = context1.call('data', data)
    explain_data = json.loads(explain_data)
    eng = explain_data['translateResult'][0][0]['tgt']
    return eng

最終效果如下:

【爬蟲逆向案例】某道翻譯js逆向—— sign解密,Python,筆記,js逆向,前端,爬蟲,逆向

3、源碼

Github:網(wǎng)易有道翻譯逆向
CSDN:有道翻譯sign解密,js逆向資源

4、號(hào)外

如果我的博客對(duì)你有幫助、如果你喜歡我的博客內(nèi)容,請(qǐng) “??點(diǎn)贊” “??評(píng)論” “??收藏” 一鍵三連哦!
【????????????關(guān)注我| 獲取更多源碼 | 定制源碼】大學(xué)生畢設(shè)模板、期末大作業(yè)模板 、Echarts大數(shù)據(jù)可視化、爬蟲逆向等! 「一起探討 ,互相學(xué)習(xí)」!(vx:python812146)
以上內(nèi)容技術(shù)相關(guān)問(wèn)題??歡迎一起交流學(xué)習(xí)??????????????文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-606756.html

到了這里,關(guān)于【爬蟲逆向案例】某道翻譯js逆向—— sign解密的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • python爬蟲之JS逆向基礎(chǔ)小案例:網(wǎng)抑云數(shù)據(jù)獲取

    python爬蟲之JS逆向基礎(chǔ)小案例:網(wǎng)抑云數(shù)據(jù)獲取

    嗨嘍~大家好呀,這里是魔王吶 ? ~! python更多源碼/資料/解答/教程等 點(diǎn)擊此處跳轉(zhuǎn)文末名片免費(fèi)獲取 所用軟件 解釋器: python 3.8 編輯器: pycharm 2022.3 使用的模塊 第三方模塊: requests 數(shù)據(jù)請(qǐng)求 execjs pip install pyexecjs 內(nèi)置模塊(無(wú)需安裝): nodejs 模塊安裝: win + R 輸入cmd 輸入安

    2024年01月20日
    瀏覽(28)
  • 【Python爬蟲案例】抖音下載視頻+X-Bogus參數(shù)JS逆向分析

    【Python爬蟲案例】抖音下載視頻+X-Bogus參數(shù)JS逆向分析

    選擇自己感興趣的抖音博主,本次以“經(jīng)典老歌【車載U盤】”為例 每次請(qǐng)求的頁(yè)面會(huì)有很多接口,需要對(duì)接口進(jìn)行篩選: 第一步篩選XHR篩選 第二步篩選URL中帶有post 通過(guò)篩選play_add值找到視頻的地址 通過(guò)對(duì)比兩次請(qǐng)求發(fā)現(xiàn)只有X-Bogus數(shù)值會(huì)有變化,max_cursor是用翻頁(yè),后文再

    2024年03月15日
    瀏覽(26)
  • 網(wǎng)頁(yè)爬蟲之WebPack模塊化解密(JS逆向)

    網(wǎng)頁(yè)爬蟲之WebPack模塊化解密(JS逆向)

    WebPack打包: webpack是一個(gè)基于模塊化的打包(構(gòu)建)工具, 它把一切都視作模塊。 概念: webpack是 JavaScript 應(yīng)用程序的模塊打包器,可以把開(kāi)發(fā)中的所有資源(圖片、js文件、css文件等)都看成模塊,通過(guò)loader(加載器)和plugins(插件)對(duì)資源進(jìn)行處理,打包成符合生產(chǎn)環(huán)境部署

    2024年02月02日
    瀏覽(27)
  • 【python】python結(jié)合js逆向,讓有道翻譯成為你的翻譯官,實(shí)現(xiàn)本地免費(fèi)實(shí)時(shí)翻譯

    【python】python結(jié)合js逆向,讓有道翻譯成為你的翻譯官,實(shí)現(xiàn)本地免費(fèi)實(shí)時(shí)翻譯

    ?? 歡迎大家來(lái)到景天科技苑?? ???? 養(yǎng)成好習(xí)慣,先贊后看哦~???? ?? 作者簡(jiǎn)介:景天科技苑 ??《頭銜》:大廠架構(gòu)師,華為云開(kāi)發(fā)者社區(qū)專家博主,阿里云開(kāi)發(fā)者社區(qū)專家博主,CSDN新星創(chuàng)作者等等。 ??《博客》:Python全棧,前后端開(kāi)發(fā),人工智能,js逆向,App逆

    2024年03月23日
    瀏覽(32)
  • Python實(shí)現(xiàn)Up數(shù)據(jù)信息采集 <內(nèi)含JS逆向解密>

    Python實(shí)現(xiàn)Up數(shù)據(jù)信息采集 <內(nèi)含JS逆向解密>

    前言 嗨嘍~大家好呀,這里是魔王吶 ? ~! 環(huán)境使用: python 3.8 運(yùn)行代碼 pycharm 2021.2 輔助敲代碼 模塊使用: 第三方模塊 需要安裝 import requests 導(dǎo)入數(shù)據(jù)請(qǐng)求模塊 內(nèi)置模塊 你安裝好python環(huán)境就可以了 import datetime 對(duì)日期數(shù)據(jù)進(jìn)行處理的主要模塊 import hashlib 提供了多種安全方便的

    2024年02月15日
    瀏覽(23)
  • Python采集法外狂徒張三所有視頻【含jS逆向解密】

    Python采集法外狂徒張三所有視頻【含jS逆向解密】

    傳說(shuō)中,有人因?yàn)橹皇沁h(yuǎn)遠(yuǎn)的看了一眼法外狂徒張三就進(jìn)去了?? 我現(xiàn)在是獲取他視頻,豈不是直接終生了?? 網(wǎng)友:趕緊跑路吧 ?? 好了話不多說(shuō),我們直接開(kāi)始今天的內(nèi)容吧! 你需要準(zhǔn)備 環(huán)境使用 Python 3.8 Pycharm 模塊使用 import requests import csv import datetime import hashlib impor

    2024年02月16日
    瀏覽(24)
  • 爬蟲案例-使用Session登錄指定網(wǎng)站(JS逆向AES-CBC加密+MD5加密)

    爬蟲案例-使用Session登錄指定網(wǎng)站(JS逆向AES-CBC加密+MD5加密)

    總體概覽:使用Session登錄該網(wǎng)站,其中包括對(duì)password參數(shù)進(jìn)行js逆向破解 ????????????????(涉及加密:md5加密+AES-CBC加密) 難度:兩顆星 目標(biāo)網(wǎng)址:aHR0cHM6Ly93d3cuZnhiYW9nYW8uY29tLw== 下面文章將分為四個(gè)部分: ????????1、定位主體加密函數(shù),進(jìn)行斷點(diǎn) ????????2、分

    2024年02月09日
    瀏覽(21)
  • 簡(jiǎn)單的用Python實(shí)現(xiàn)一下JS逆向解密,采集空氣質(zhì)量數(shù)據(jù)

    簡(jiǎn)單的用Python實(shí)現(xiàn)一下JS逆向解密,采集空氣質(zhì)量數(shù)據(jù)

    最近天氣降溫厲害,咱們用 Python 來(lái)分析一下空氣質(zhì)量如何~ 話不多說(shuō),我們直接開(kāi)始上手。 環(huán)境使用 Python 3.8 Pycharm nodejs 模塊使用 import requests import execjs import json requests 和 execjs 都是第三方模塊,需要手動(dòng)安裝,直接pip install 加上模塊名字即可。 明確需求: 明確采集的網(wǎng)站

    2024年02月05日
    瀏覽(28)
  • 使用Python突破某網(wǎng)游游戲JS加密限制,進(jìn)行逆向解密,實(shí)現(xiàn)自動(dòng)登錄

    使用Python突破某網(wǎng)游游戲JS加密限制,進(jìn)行逆向解密,實(shí)現(xiàn)自動(dòng)登錄

    兄弟們天天看基礎(chǔ)看膩了吧 今天來(lái)分享一下如何使用Python突破某網(wǎng)游游戲JS加密限制,進(jìn)行逆向解密,實(shí)現(xiàn)自動(dòng)登錄。 目標(biāo):某 7 網(wǎng)游登錄 主頁(yè):aHR0cHM6Ly93d3cuMzcuY29tLw== 接口:aHR0cHM6Ly9teS4zNy5jb20vYXBpL2xvZ2luLnBocA== 逆向參數(shù):Query String Parameters: password: SlVEOThrcjgzNDNjaUYxOTQzNDM0eVM

    2023年04月13日
    瀏覽(22)
  • JS逆向解密秀動(dòng)app(網(wǎng)頁(yè)接口)實(shí)現(xiàn)搶票【python異步請(qǐng)求】

    JS逆向解密秀動(dòng)app(網(wǎng)頁(yè)接口)實(shí)現(xiàn)搶票【python異步請(qǐng)求】

    ? ?HI,上一期我出了js逆向解析五邑大學(xué)的AES加密實(shí)現(xiàn)模擬登錄,后臺(tái)不少人想讓我去解析一下秀動(dòng)app,去實(shí)現(xiàn)搶票。我看因此本文就是介紹如何去實(shí)現(xiàn)js逆向解析秀動(dòng)網(wǎng)頁(yè)端口實(shí)現(xiàn)搶票。 (本文拿最近的場(chǎng):廣州姜云升2022巡演) 一.逆向分析過(guò)程 首先,我們想要進(jìn)入下單的

    2024年01月23日
    瀏覽(23)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包