<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python 爬蟲進階必備 | 某公共資源交易平臺加密參數(shù)與數(shù)據(jù)解密邏輯分析

          共 1255字,需瀏覽 3分鐘

           ·

          2022-05-06 05:21

          點擊上方“咸魚學(xué)Python”,選擇“加為星標(biāo)

          第一時間關(guān)注Python技術(shù)干貨!


          443d74e74a03d972ee4254a91754994e.webp

          圖源:極簡壁紙

          今日網(wǎng)站

          aHR0cHM6Ly9nZ3p{刪掉我}5ZncuZmouZ292LmNuL3dlYi9pb{防撞}mRleC5odG1sPyMv{刪掉我}YnVzaW5lc3MvbGlzdA==

          抓包分析

          打開網(wǎng)站,隨便設(shè)置一個查詢條件,可以在 Chrome 的網(wǎng)絡(luò)選項卡中抓到如下樣式的請求包

          061002b4d0cc6bf30e56c0616389f97f.webp

          需要分析的參數(shù)如下

          請求頭參數(shù):protal-sign

          7c0c45e859754cb086db72afc52b9380.webp

          以及加密查詢結(jié)果Data的解密邏輯

          9cf343064e111734831aba95d8258178.webp

          加密參數(shù)的定位與分析

          先看請求頭的部分,這里的protal-sign是網(wǎng)站在請求頭中添加的

          一般像這樣xhr請求用xhr斷點是比較好的選擇

          同樣的也可以通過hook window.XMLHttpRequest.prototype.setRequestHeader來定位

          var?setRequestHeader_?=?window.XMLHttpRequest.prototype.setRequestHeader;
          window.XMLHttpRequest.prototype.setRequestHeader?=?function(key,value){
          ????????console.log(key)
          ????????if(key.indexOf("portal-sign")?!==?-1){
          ????????????debugger;
          ????????}
          ????????return?setRequestHeader_.apply(this,arguments);
          ?}
          }

          但是!這個站它不一般,他不走尋常路,用上面兩種方法都不如直接檢索來的快

          直接檢索portal-sign,找到下面的位置

          c611ab617a4a5423942b3b0a6d079e87.webpf0fec75c42f2c1d467c669b53a6688c0.webp

          這個時候分析的重心就轉(zhuǎn)移到get_Sign方法了

          單步進去,可以看到先是循環(huán)遍歷了傳入的參數(shù)

          e91a08d26dcf48bf9a2b4b2190b55e09.webp

          然后將遍歷結(jié)果傳入s(e)并且和r["d"]進行了拼接

          先看這里的s方法,結(jié)果如下

          3260b60d8b01244d00159e595ea16b3e.webp

          很明顯s方法就是將傳入的參數(shù)拼接起來,這里的r[d]是一串字符串

          7997a3cadddf4a4765859038a29f1618.webp

          可以理解為加鹽,防止加密的結(jié)果被撞庫,拼接鹽值之后的結(jié)果經(jīng)過了u和轉(zhuǎn)小寫之后就返回了

          所以這里的u就是關(guān)鍵的加密方法了,不過這里的u也比較簡單,單步進去就可以看到了

          73d27b663e16729d04df898b91d20966.webp

          解密方法的定位與分析

          上面進行了加密參數(shù)邏輯的定位和分析,現(xiàn)在還剩一個返回值Data的解密

          這種返回值加密,按照開發(fā)的邏輯來說是在xhr請求之后回調(diào)解密方法,所以要在xhr中方法找到回調(diào)的位置打上斷點

          像下面這樣

          79b183ca6b3a3140fc90fc8d3ec45b35.webp

          而像上一部分的請求參數(shù)分析,因為請求需要帶上參數(shù)在請求發(fā)出的時候參數(shù)已經(jīng)生成好了,所以我們進入xhr斷點的時候,是從斷點位置往上翻堆棧分析之前的邏輯

          9442b63a21623c366ee5efe81eef3522.webp

          現(xiàn)在重新加載是否能找到解密的邏輯,加載斷點之后單步進入o方法

          43111b4791bf52a0721911e7dea4d733.webp

          一直單步可以看到如下位置的代碼

          357c292f168dec85059cc9b58c54d728.webp

          很明顯的aes解密方法,拿出key還有iv就可以直接進行還原了

          簡單測試一下

          a58e89940d91583fe0b42166d93769bf.webp

          以上就是今天的全部內(nèi)容了。

          我是沒有更新就在摸魚的咸魚

          收到請回復(fù)~

          我們下次再見。

          bc359448aab7ae44fca21f69d3115e11.webp對了,看完記得一鍵三連,這個對我真的很重要。

          瀏覽 83
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲国产成人在线播放 | 在线视频中文字幕亚洲 | 熟女搜索结果 - 91Porn | 欧美福利在线 | 91精品久久久久久综合 |