<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 爬蟲進(jìn)階必備 | 某壁紙網(wǎng)站請求頭參數(shù)與用戶指紋 sign 加密邏輯分析

          共 2775字,需瀏覽 6分鐘

           ·

          2021-03-02 16:09

          今日網(wǎng)站

          aHR0cHM6Ly9iei56enptaC5jbi8=

          這個網(wǎng)站來自東哥讀者群的讀者提問(截圖為轉(zhuǎn)發(fā)消息)

          抓包分析

          打開目標(biāo)網(wǎng)站,需要采集的是網(wǎng)站中的圖片

          開發(fā)者工具中抓到的包是這樣的

          頁面上加載的圖片名字是沒有規(guī)律的,且網(wǎng)頁上不點擊圖片是沒有辦法顯示高清圖片的,所以需要找到這些圖片名稱是哪里返回的。

          通過查找,可以看到圖片名稱是經(jīng)過getJson這個包返回的,并且返回的包中還標(biāo)識了分辨率

          所以只要構(gòu)建這個請求,拿到返回值再拼接出壁紙的鏈接就可以下載高清的壁紙了。

          參數(shù)沒有什么要看的,見名知意

          {"target":"index","pageNum":1}

          主要是請求的 header 中有兩個未知參數(shù)signaccess

          加密定位與分析

          這類比較純粹的 XHR 請求,直接使用xhr斷點分析比較輕松

          source面板添加xhr請求斷點

          完成之后重新刷新頁面,就斷上了

          斷點斷住的位置是ajax請求發(fā)出的位置,在這個位置可以看到我們需要分析的access參數(shù)已經(jīng)找到了

           var access = sha256(contentType + location + sign + timestamp);

          這個表達(dá)式對應(yīng)的參數(shù)在上面的截圖里都有(除了 sign),直接拼接在一起使用 sha256 加密即可。

          這里的 sign 需要在堆棧中向上翻,可以看到一個 sign請求

          斷點的位置如下

          可以看到 sign 是sessionStorage中取出的,可以在當(dāng)前的文件中檢索sessionStorage,可以看到下面setItem的邏輯

          sign 的實際生成邏輯其實就是我們當(dāng)前瀏覽器指紋

          sign = Fingerprint2.x64hash128(components.map(function(component{return component.value}).join(''), 31);
          // 將當(dāng)前瀏覽器的屬性值拼接在一起,使用 x64hash128 生成指紋

          這個指紋算法是有漏洞的,因為算法取的是當(dāng)前的設(shè)備信息,而x64hash128算法是固定的,這就導(dǎo)致了傳入x64hash128中的 key 相同的話,生成的指紋也是相同的,一個常見的規(guī)避手段是在設(shè)備信息中添加獲取當(dāng)前設(shè)備的ip這樣可以減少一部分的指紋重復(fù),不過這個網(wǎng)站的sign沒有添加這個屬性

          如果這里你想調(diào)試sign的生成需要清除當(dāng)前瀏覽器的緩存,斷點才會進(jìn)入生成的邏輯

          userAgent: navigator.userAgent
          language : 語言
          colorDepth: 返回目標(biāo)設(shè)備或緩沖器上的調(diào)色板的比特深度 screen.colorDepth
          deviceMemory: 以千兆字節(jié)為單位返回設(shè)備內(nèi)存量。該值是通過舍入到最接近的2的冪并將該數(shù)除以1024而給出的近似值。 
          pixelRatio: 像素比 devicePixelRatio  
          hardwareConcurrency:navigator.hardwareConcurrency返回可用于運(yùn)行在用戶的計算機(jī)上的線程的邏輯處理器的數(shù)量 
          screenResolution: 檢測屏幕寬高,并根據(jù)屏幕方向矯正返回值[width,height]
          availableScreenResolution:返回屏幕分辨率[width,height],無頭瀏覽器無法獲取。
          timezoneOffset: 返回從當(dāng)前區(qū)域設(shè)置(主機(jī)系統(tǒng)設(shè)置)到UTC的時區(qū)差異(以分鐘為單位)鏈接
          timezone:時區(qū)
          sessionStorage: 是否支持sessionStorage,不支持時返回錯誤 
          localStorage: 是否支持localStorage 
          indexedDb:是否支持indexedDb 
          addBehavior:此時可能未定義body或以編程方式刪除
          openDatabase: 返回是否支持Web SQL
          cpuClass:返回瀏覽器系統(tǒng)的 CPU 等級,一般無法獲取 *
          platform: 返回表示瀏覽器平臺的字符串,該規(guī)范允許瀏覽器始終返回空字符串,因此不要依賴此屬性來獲得可靠的答案.鏈接 *
          doNotTrack: 返回用戶的“不跟蹤”設(shè)置。如果用戶請求不被網(wǎng)站,內(nèi)容或廣告跟蹤,則為“1”。一般結(jié)果為* 。
          plugins:返回瀏覽器安裝的插件列表。
          canvas: 如果瀏覽器支持canvas則返回生成baes64數(shù)據(jù)。
          webgl:返回瀏覽器對webgl繪圖協(xié)議的支持情況匯總 
          webglVendorAndRenderer: 返會顯卡型號相關(guān)信息 
          adBlock:返回是否安裝去廣告插件。
          hasLiedLanguages: 返回用戶是否改變了首選語言
          hasLiedResolution:返回用戶是否改變了分辨率
          hasLiedOs:返回用戶是否改變了操作系統(tǒng)
          hasLiedBrowser:返回用戶是否改變了瀏覽器
          touchSupport: 返回最大觸摸點數(shù),是否支持touch,是否支持ontouchstart事件]
          fonts:返回從64種字體種篩選出的可用字體
          fontsFlash:Flash字體枚舉,如果沒有swfobject,不會觸發(fā)。
          audio: 返回音頻指紋
          enumerateDevices:navigator.mediaDevices 請求可用媒體輸入和輸出設(shè)備的列表,例如麥克風(fēng),相機(jī),耳機(jī)等
          // 參考鏈接:https://juejin.cn/post/6844903773211459597

          所以這里的sign是可以設(shè)置成固定值,因為指紋是可以重復(fù)的

          到這里上面access生成邏輯的所有變量均已獲得,通過python復(fù)寫加密即可獲取網(wǎng)站的圖片名稱并拼接鏈接下載高清圖片。

          有知有行

          [ 完 ]

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

          瀏覽 65
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(jī)掃一掃分享

          分享
          舉報
          <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>
                  黄色一级免费大片 | 影音先锋亚洲一区 | 99在线精品视频观看 | 美女操逼免费网页 | 欧美一级A黄片 |