<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ù) _signature 邏輯分析 (無...

          共 1757字,需瀏覽 4分鐘

           ·

          2022-01-21 01:21

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

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


          bda43e31a0701c2c1feaa29c311100b5.webp

          圖源:極簡壁紙

          今日網(wǎng)站

          aHR0cHM6Ly93d3cudG91dGlhby5jb20v

          不會吧,不會吧,不會有人還不會頭條的sign

          抓包分析與加密定位

          打開網(wǎng)頁,隨便找到一個欄目,向下滑動可以抓到以下的請求包

          22a0df70696afbdae3cdf4f199394ea9.webp

          這里提交的參數(shù)里就有我們需要分析的參數(shù)_signature

          現(xiàn)在直接搜索_signature,就可以直接定位到相關(guān)的位置了

          a6d6c42faac979f66ba9bbef0ee5a163.webp

          在這個文件中再次搜索,就可以看到如下代碼

          8b379c22d25eb4fded85a2333d1d79e3.webp

          這里的r就是我們需要獲取到的_signature

          加密分析

          先打上斷點,可以看到,當(dāng)代碼運行到n的時候,還沒有生成_signature

          71efb35c93a95645ccb1a803cbeaf450.webp853abb2b845847bfa5ef5024127ce119.webp

          當(dāng)繼續(xù)向下運行到r的時候就返回_signature的值了,所以上面那一大坨的代碼里面只有S的邏輯才是我們需要的

          e6add9f185f3eaf0f5c3ffe01e067024.webp

          進入S中再次分析

          7e4dc4c85b4b06bb355b065035de922d.webp

          這里可以看到傳入的參數(shù)只和url有關(guān),o以上的代碼都很簡單就是對url進行拼接的操作而已,但是最后返回的o等于一大長串

          繼續(xù)看o的邏輯

          var?o?=?(null?===?(n?=?window.byted_acrawler)?||?void?0?===?n???void?0?:?null?===?(r?=?n.sign)?||?void?0?===?r???void?0?:?r.call(n,?i))

          看這個邏輯之前,需要有幾個關(guān)于 js 的姿勢儲備

          1、===,這個的意思就是判斷三等號左右兩端的值和類型是否相等,只有值和類型都相等才為true

          2、value = 條件?值1:值2,這個是當(dāng)前面的條件判斷為true時,賦值值1,為false時返回值2

          3、||, 或的邏輯運算符,參與運算的任意一個參數(shù)為 true,返回的結(jié)果就為 true,否則返回 false

          了解了上面的幾個 js 知識之后,現(xiàn)在再來看o

          首先null === (n = window.byted_acrawler)肯定是不相等的,所以這個時候o可簡寫為

          var?o?=?(false?||?void?0?===?n???void?0?:?null?===?(r?=?n.sign)?||?void?0?===?r???void?0?:?r.call(n,?i))

          之后void 0 === n肯定也是不相等的結(jié)果為 false,所以void 0 === n ? void 0 : null === (r = n.sign)返回的是null === (r = n.sign),同時null === (r = n.sign)也是不相等的,這個時候o可簡寫為

          var?o?=?(false?||?false?||?void?0?===?r???void?0?:?r.call(n,?i))

          同樣的void 0 === r的結(jié)果是false,返回的是r.call(n, i),這個時候o可簡寫為

          var?o?=?(false?||?false?||?r.call(n,?i))

          這個時候的邏輯運算結(jié)果var o = r.call(n, i)

          這里的nwindow.byted_acrawler,這里的i是上面拼接好的urlrn.sign也就是window.byted_acrawler.sign

          var?i?=?{
          ????url:?a?+?e
          };

          所以o就是window.byted_acrawler.sign.call(window.byted_acrawler,url),簡化的結(jié)果就是window.byted_acrawler.sign(url)

          現(xiàn)在就是jsvmp了,反正我干不出來,補環(huán)境直接沖就是了

          9b5aac29f3d1ce0f1c3291aef500434c.webp

          這個js放到html就能直接用

          7d7ef2d29a31efa1c3cd806ae2df176a.webp

          就是有點短,不過用來請求問題不大

          如果要用node直接運行,肯定會報錯的,因為node少瀏覽器環(huán)境,這個大家應(yīng)該都知道

          這里提供兩個方案

          1、jsdom,這個不會補環(huán)境的朋友應(yīng)該沒少用吧,npm instal jsdom,就可以安裝了,然后按照運行報錯缺啥補啥就行了

          2、這個可以參考補環(huán)境的課程,用 vm2 補,補的視頻鏈接放后臺,回復(fù)【補環(huán)境】獲取,照著來就行。

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

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

          收到請回復(fù)~

          我們下次再見。

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

          瀏覽 64
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  青娱乐91 | 老外玩csgo中国的妹子视频 | 欧美XXX黑人XYX性爽 | 三级无码在线观看 | 日韩三级麻豆 |