程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

使用python實現自動爬取得物交易記錄,商品信息進行數據分析

編輯:Python

使用python實現自動爬取得物交易記錄,商品信息進行數據分析

  • 前言
  • 開發流程
  • 實現過程
    • 1、API抓包
    • 2、破解請求數據
      • 分析數據包
      • 逆向
      • 驗證
    • 3、編寫爬蟲代碼
    • 4、反爬
  • 結束語與結果展示

前言

文章僅用於交流學習。

剛剛學習爬蟲有一段時間,打算找一個網站突破一下,提升一下自己的爬蟲與逆向能力。剛好最近買東西都在使用得物APP,所以就決定突破一下它。整個過程很曲折,踩了很多坑,遇到很多做之前沒有預料到的問題。項目一共分為兩個版本,第一版是由mitmproxy+appium自動化操作APP完成獲取數據,由於完成之後發現爬取過程耗時很長並且無法准確的抓到指定的商品數據所以放棄,發開第二版。第二版突破了,得物sign值的加密過程,實現了使用調用API來獲取商品數據。
目前實現功能:
1、定時爬取商品詳情數據
2、定時爬取商品交易記錄數據
3、對交易記錄進行分析、統計

以上為項目的簡要介紹。本人處於初學階段,還有很多的不足之處,全文有任何疑問,歡迎各位大神指出錯誤。

開發流程

1、API抓包
2、破解請求數據
3、編寫爬蟲代碼
4、反爬

實現過程

1、API抓包

我們在抓包之前可以登錄得物web網站以及APP、小程序三個入口查看數據情況,會發現能獲取商品信息的地方只有小程序與APP,並且小程序的數據要比APP的少很多內容。這個時候我們同時對兩個入口進行抓包操作。我這裡使用的抓包工具是Charles .
下載地址: Charles下載地址.
具體的安裝步驟自行百度,這裡不詳細介紹了。

這裡會遇到兩個相對比較繁瑣的問題:
1、配置抓取HTTPS的包
2、配置抓取APP的包
這裡推薦篇文章用於解決這兩個問題: 推薦文章

APP數據包與小程序數據包抓下來之後,我們會發現APP的請求數據相對與小程序的請求數據要復雜的很多,基於到時間成本與需要數據的考慮,我選擇了突破小程序。ps:APP端雖然有點復雜但是最後也搞明白了。

2、破解請求數據

分析數據包

根據抓包數據我們會發現,商品詳情請求數據為

加上sign的一個結構。
請求地址為:https://app.dewu.com/api/v1/h5/index/fire/flow/product/detail
其中spuid為商品的唯一值,其他的為默認即可,只有sign值我們無法知道來歷。那麼這個sign就是我們需要突破的點,不然無法通過調用API獲取數據。

逆向

我這邊使用的思路是通過反編譯小程序的,拿到其中的加密key,然後嘗試多種加密方式最終得到與抓包獲得的sign相同的值。
這裡我使用的逆向工具是wxappUnpacker,具體使用教程網上有很多就不一一贅述了。
反編譯腳本下載地址

驗證

拿著逆向獲得的key構造請求參數,最終發現sign是由所有請求參數拼接,最後加上key加密生成。
構造完請求參數,就可以拿著抓包獲得的header發送請求了,這裡是三個接口的請求header

至此,破解請求數據就完了。

3、編寫爬蟲代碼

編寫代碼就是一個枯燥無味的過程,文章最後會給出項目代碼的github地址。
其中需要處理幾個問題:
(1)如何通過python發送https請求,繞過ssl認證。
(2)如何保證每次獲取的交易記錄是上一次交易交易記錄的後一條。
如何保證每次請求都能夠成功獲取數據。
(3)如何保證每次請求都能夠成功獲取數據,不被得物服務器攔截。

4、反爬

我目前所了解到的得物小程序做了兩個反爬措施,一個是簽名認證,就是剛剛提到的破解請求數據中的sign,第二是IP限流。
第一個問題在上一節中已經講到。
第二個問題我采用的反反爬手段是使用IP代理。ps:代理是需要自行購買的。

結束語與結果展示

以上就是關於使用python實現自動爬取得物交易記錄,商品信息的所有內容,如發現有遺漏或是對於文章有疑問歡迎與我溝通,郵箱:[email protected]
如文章影響得物平台利益,請通過上方聯系方式與我取得聯系。

Github地址

貼幾張獲取到的數據圖


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved