爬蟲:對網站加密請求的分析

爬蟲:對網站加密請求的分析

引語:

最近由於有一些需求,須要對某些網站的數據進行抓取而後分析用戶的行爲之類的.因此對遇到的一些問題進行一個記錄,第一次處理這種加密的請求, 也花費了本身很多時間,作一個處理過程的記錄.給有相似需求的朋友也增長一個可參考的資料.java

分析步驟:

1.首先是要看請求的url大體樣子是 chrome

這裏是一個get請求, uri的組成是:網站域名+api地址+analysis參數.
加密的部分其實就是這個analysis,這個網站有get和post的請求,可是都會在參數裏面加一個analysis參數,用來區分是 內部調用仍是其餘人的請求.因此我們只要破解了這個參數的生成規則,就能夠拿到這個網站的數據了. 2.所以咱們找找看能不能從網站的js文件或者哪裏找出這個拼接參數加密的規則,就從第一個的請求參數開始,咱們處於開發者模式下,點擊Network,而後選擇第一個接口,點擊Initiator. 會跳轉到對應的js中.這時候發現js是壓縮的,點擊chrome開發者工具自帶的格式化代碼
格式代碼後,咱們就方便查看加密規則是從哪裏來的了.
3.這時候咱們能夠在Network右邊的側邊欄加入XHR breakPoint,
將咱們前面的url中的關鍵字添加進來,而後刷新頁面,當再次請求到這個url的時候,就回進入到這個斷點中
左邊就是代碼中各類參數的變量,值等,右邊就是調用棧,咱們能夠一步步從中去找尋參數是從哪裏加密的.
4.這個網站的js裏面的函數對於我一個後端來講講道理,有些難讀懂,我是從參考了網上一些大神的資料,而後從最初的一個調用棧一個個網上查看傳遞的參數是什麼,來查看究竟是哪一步進行的加密.
這個過程很花時間,js文件中有不少不少匿名函數,調試的時候無法一步步所有看完,主要是要找傳參的問題,對比發現圖中兩個調用棧中的參數中有一個沒有analysis參數,說明加密是在另外一個調用棧中完成的.因而乎定位到了是在get這個調用中加密的, 知道了在哪一個文件中加密的就好辦了.
5.咱們在剛纔的get調用這個裏面打上斷點一步步調試看看參數值
這裏其實可讀性也挺差的,咱們能夠將鼠標選中本身要查看的參數一步步推出來大體的加密過程 這裏也是要花很多時間,推算出來

結果:

最後翻譯爲java代碼大概是這樣後端

private static String generatorAnalysis() {
       final String FLAG = "@#";
       // @#/rank/indexPlus/brand_id/1@#52217050198@#1
       // 時間戳的差值
       Long time = System.currentTimeMillis() - 1515125653845L;
       // 請求的api
       String baseUrl = "/rank/indexPlus/brand_id/1";
       StringBuilder builder = new StringBuilder(FLAG);
       // 拼接字符串的規則 api + @# + 時間戳差值 + @#1
       builder.append(baseUrl).append(FLAG).append(time).append(FLAG).append(1);
       // 自定義的加密 這裏加密函數不就給出了  能夠本身根據斷點裏面的值推算出來哦
       String encodeStr = diyEncode(builder.toString());
       // 最後base64編碼下
       return new String(Base64.getEncoder().encode(encodeStr.getBytes()));
   }
複製代碼

1.先根據當前13位的時間戳和固定的一個時間戳生成一個差值
2.第二個參數是請求的api
3.再根據js中的拼接規則給拼接出來一個具體的字符串 其中有一個@#是拼接的分隔符
4.在對這個字符串進行加密操做
5.最後對這個字符串進行base64編碼就完成了api

總結:

    之後遇到遇到加密參數先不要慌,若是是網站不是app的加密參數,仍是有很大的機率能夠弄出來的.分析好url的結構,而後根據引用到的js文件反推加密的過程,這個過程可能會用到fidder或者Charles這樣的工具, 替換掉網站的js(用來窺探一些參數的值,文中沒有給出,打算下次再寫一篇專門介紹下).最後在將加密規則翻譯爲代碼就能夠了.主要花時間的點就在於從js文件中尋找加密的代碼和翻譯加密代碼的過程,要細心有可能加密的部分就是一行,可是倒是最關鍵的點. 再次作個記錄,也幫助其餘朋友破解相似網站來抓取數據,可是不要用來做違反的事情.bash

相關文章
相關標籤/搜索