今日頭條爬蟲,signature、as、cp 參數破解, 詳情頁__ac_nonce和__ac_signature加密

前言:最近爲了學習頭條的加密代碼,自己對signature as cp 的生成過程進行了研究和學習。

一、接口的尋找

1.目的是爲了獲取頭條號用戶的文章數據,要訪問的是這個頁面
https://www.toutiao.com/c/user/104246645773/
2.進行抓包分析
發現這個是我們需要的數據
在這裏插入圖片描述
3.對接口進行分析,發現是get請求,需要帶下面幾個參數
在這裏插入圖片描述

二、as, cp 參數的破解
  1. 分析as cp 的生成過程
    全局搜索 as: 或者cp:
    在這裏插入圖片描述
  2. 點擊去對JS格式化後,文件中搜索as: 發現下面,生成as cp的代碼
    在這裏插入圖片描述
三、signature 參數的破解

1.全局搜索signature關鍵字
在這裏插入圖片描述在這裏插入圖片描述
2.signature 參數是由 utils.tacSign() 生成的,你可以去構造utils對象,或者去分析tacSign方法
3.打斷點調試,進入到tacSign方法裏面
在這裏插入圖片描述
4.對tacSign 打斷點調試,發現傳入的兩個參數e 是url的前綴,t是get請求的參數,構造出來一個o對象
在這裏插入圖片描述
5.調用window.byted_acrawler.sign(o) 生成了祕鑰signature,現在關鍵是對sign這個方法進行破解
在這裏插入圖片描述
6.在console中輸入window.byted_acrawler.sign 在vm中找到sign的執行函數
在這裏插入圖片描述
7.把這個TAC function全部複製出來,
在這裏插入圖片描述
8.我們把構造好的o對象用 window.byted_acrawler.sign(o)去執行,就生成了signature
在這裏插入圖片描述
9.用node執行JS的時候會各種報錯,我們添加上一些windows或者document對象的屬性,在裏面添加navigator location 和body和cookie屬性
在這裏插入圖片描述
10.會生成這樣一個鏈接,拿個這個鏈接攜帶cookie就可以獲取到內容了
在這裏插入圖片描述在這裏插入圖片描述
11.signature 還有一種是比較長的,長sign不用攜帶cookie可以直接獲取數據,長signature的獲取先需要執行 頁面中的一段JS代碼,初始化一下,用純JS執行的時候會報錯缺少屬性,會對瀏覽器特徵進行檢測。
在這裏插入圖片描述

四、請求cookie尋找
  1. 短連接請求的時候要攜帶cookie,這個cookie可以用selenium隨便訪問一個頭條用戶鏈接,cookie的失效時間很長,基本不用更換
五、獲取到文章的標識media_id
  • 解析出文章的唯一標識
  • 拼接成詳情頁的鏈接 https://www.toutiao.com/i6824408619564401163/
六、文章詳情頁接口的破解(__ac_nonce, __ac_signature)加密
  • 通過抓包工具抓包發現,沒有cookie訪問詳情頁鏈接的時候,會返回下面一段代碼,從cookie中獲取__ac_nonce 使用ac_nonce 生成 __ac_signature
    在這裏插入圖片描述
  • 使用selenium 訪問詳情頁獲取到這一對cookie,失效時間是半個小時左右,攜帶這對cookie成功獲取到詳情頁
    -內容在頁面的源代碼裏,用正則解析
    在這裏插入圖片描述

如果對採集方案感興趣或者對JS加密有興趣的,可以加我qq: 330446875 學習交流(註明:CSDN頭條爬蟲)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章