<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 爬蟲進階必備 | 關(guān)于投訴平臺網(wǎng)頁參數(shù) signature 加密邏輯分析

          共 1356字,需瀏覽 3分鐘

           ·

          2021-01-17 16:11

          今日網(wǎng)站

          aHR0cHM6Ly90b3VzdS5zaW5hLmNvbS5jbi9jb21wYW55L3ZpZXcvP2NvdWlkPTYzODQ5MTI0MzE=

          很久沒有寫原創(chuàng)了,其實我私底下囤了不少原創(chuàng)的文章,不過都不是爬蟲相關(guān)的。。。

          關(guān)于今天這個網(wǎng)站的分析流程還是老三樣,直接開搞。

          抓包與加密定位

          這個網(wǎng)站的下拉翻頁是 ajax 加載的,所以可以直接在 xhr 翻頁里面找到這個請求

          打開請求的參數(shù),可以看到有幾個比較明顯的加密參數(shù)是需要分析的

          我們這里主要分析的是第三個參數(shù)signature

          直接檢索下參數(shù),看看相關(guān)的結(jié)果(因為是 xhr 請求,用 xhr 斷點也行,往上翻兩個堆棧就能找到)

          結(jié)果很少,點進這個文件繼續(xù)在文件中檢索

          可以看到match到 9 個相關(guān)的值,可以逐一分析一下,不會分析也沒有關(guān)系,每個檢索項都打上斷點即可

          稍微看了下邏輯,這個 js 沒有做混淆處理,斷點可以直接打在下面這個位置上

          主要邏輯是下面這行代碼

          ("&signature=").concat(t)
          var?t?=?s([u,?d,?l,?window.couid,?e,?c,?h["type"?+?e]].sort().join(""))

          加密分析

          從上一個環(huán)節(jié)已經(jīng)得出了 signature 的代碼所以接下來只要分析出上面t賦值等式的代碼就完成了

          結(jié)合上下文的代碼,其中比較簡單的幾個未知變量可以直接答案了

          u?#?當(dāng)前時間,參見?14469?行的代碼?(new?Date).getTime()
          l?#?固定值,一串字符串$d6eb7ff91ee257475%
          window.couid?#?查詢的id
          e?#?類型,在這個例子中為固定值1
          c?#?是pagesize,即一頁有幾條
          h["type"?+?e]]?#?這個是頁數(shù)

          出去上面的簡單的值外,就只剩下d還有s兩個未知了

          變量 d 是一個函數(shù)

          d?=?function(e,?t,?r)?{
          ????????var?n?=?""
          ??????????,?i?=?t
          ??????????,?a?=?["0",?"1",?"2",?"3",?"4",?"5",?"6",?"7",?"8",?"9",?"a",?"b",?"c",?"d",?"e",?"f",?"g",?"h",?"i",?"j",?"k",?"l",?"m",?"n",?"o",?"p",?"q",?"r",?"s",?"t",?"u",?"v",?"w",?"x",?"y",?"z",?"A",?"B",?"C",?"D",?"E",?"F",?"G",?"H",?"I",?"J",?"K",?"L",?"M",?"N",?"O",?"P",?"Q",?"R",?"S",?"T",?"U",?"V",?"W",?"X",?"Y",?"Z"];
          ????????e?&&?(i?=?Math.round(Math.random()?*?(r?-?t))?+?t);
          ????????for?(var?o?=?0;?o?????????????n?+=?a[Math.round(Math.random()?*?(a.length?-?1))]
          ????????}
          ????????return?n
          ????}(!1,?16)

          這個d,拿出來就能用

          函數(shù)s是追進去是下面這個圖中的方法

          往上翻看到下面這個邏輯

          我盲猜一手 sha256

          我們把s()包裹的這串邏輯[u, d, l, window.couid, e, c, h["type" + e]].sort().join("")執(zhí)行出來的結(jié)果拿出來看看

          再拿到網(wǎng)頁加密的網(wǎng)站上測試一下

          猜對了,這樣就完成了這個加密參數(shù)的邏輯分析了。

          總結(jié)

          有讀者說這個是玄學(xué),我講講大致的思路。

          看到加密先多刷新幾遍,看看加密參數(shù)的值,摸清出加密參數(shù)的規(guī)律,像我們今天分析的這個值,針對不同長度的值產(chǎn)生相同長度的值大概率是哈希類的加密算法,所以想 AES 之類的分組算法就排除了。

          再結(jié)合分析邏輯,結(jié)合你看到的代碼,用加密器輔助驗證你的猜想(像我上面那樣測試)可以解決 80% 的徒勞分析。

          Love&Share?

          [ 完 ]

          對了,看完記得一鍵四連,這個對我真的很重要。

          瀏覽 42
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  国产精品久久久久久久久久乐趣播 | 超碰97夫妻 | 久久伊人一区二区 | 在线免费看毛片 | 91国精品 |