Python爬取APP上的資料教程(轉發記錄)
Python爬取APP上的資料教程
來源:https://blog.csdn.net/wcg541/article/details/99117909
App抓包原理
1.客戶端向伺服器發起HTTPS請求
2.抓包工具攔截客戶端的請求,偽裝成客戶端向伺服器進行請求
3.伺服器向客戶端(實際上是抓包工具)返回伺服器的CA證書
4.抓包工具攔截伺服器的響應,獲取伺服器證書公鑰,然後自己製作一張證書,
將伺服器證書替換後傳送給客戶端。(這一步,抓包工具拿到了伺服器證書的公鑰)
5.客戶端接收到伺服器(實際上是抓包工具)的證書後,生成一個對稱金鑰,
用抓包工具的公鑰加密,傳送給“伺服器”(抓包工具)
6.抓包工具攔截客戶端的響應,用自己的私鑰解密對稱金鑰,然後用伺服器證書公鑰加密,
傳送給伺服器。(這一步,抓包工具拿到了對稱金鑰)
7.伺服器用自己的私鑰解密對稱金鑰,向客戶端(抓包工具)傳送響應
8.抓包工具攔截伺服器的響應,替換成自己的證書後傳送給客戶端
爬蟲的本質就是「騙」過伺服器,各種反反爬手段就是增強信任的過程,不停的讓伺服器相信你是自己人
如果你被反爬了,就是你騙術不精,被發現了。
App資料好抓嗎?
App資料有易有難,目前我還是停留在簡單的部分,這裡簡單說下我理解的(如果說錯求放過):
簡單:
app的資料比web端資料更容易抓取,基本都是http、https協議,返回的資料格式也相對規整,
大多是json格式
困難:
1.需要反編譯的知識,需要分析加密演算法
2.需要脫殼+反編譯
3.需要破解各式各類的簽名,證書。。
所以一個爬蟲工程師慢慢就需要掌握以下技能:
java程式設計基礎
android程式設計基礎
app逆向
app脫殼
破解加密
…
從入門到全棧,學習過程中有不懂的可以加入我的python零基礎系統學習交流秋秋qun:784758,214,與你分享Python企業當下人才需求及怎麼從零基礎學習Python,和學習什麼內容。相關學習視訊資料、開發工具都有分享
常用抓包工具
fiddler
mitmproxy
Charles
fiddler安裝和使用
下載:
https://telerik-fiddler.s3.amazonaws.com/fiddler/FiddlerSetup.exe
安裝:一路Next
主要介面介紹:
會話列表介面:
監控面板在點選會話列表介面的某個請求後會出現下面兩個介面:
請求面板:
響應面板:
本地CA證書安裝
-
點選 Tools - Options - HTTPS - 勾選勾選 Capture HTTPS CONNECTs,勾選 Decrypt HTTPS trafic,會彈出安裝證書的提示。一路點是或確定安裝即可。
-
重啟fiddler,點選右側Actions,能看一個下拉選單,點選 Export Root Certificate to Desktop,此時證書會生成到桌面上,名為 FiddlerRoot.cer,點OK儲存
-
點選安裝
連線手機抓包需要的配置
先設定PC端fiddler:
之後手機需要訪問 本地主機IP + 設定的埠,安裝證書,證書安裝成功後即可抓包。
以上就是關於Fiddler的安裝和簡單使用,進階使用還有很多騷操作,
mitmproxy安裝和使用
mitmproxy在linux版本下和windows版本下略有不同。
linux下藉助pip,可以一鍵安裝:pip install mitmproxy
windows 下需要安裝Microsoft Visual C++ V14.0以上,之後再使用pip install mitmproxy安裝
mitmproxy有三大元件:
mitmproxy - linux下的抓包元件
mitmdump - python互動
mitmweb - windows下的視覺化介面工具
在windows下僅支援後兩種元件的使用。
證書配置
在安裝目錄下可以看到以下這些檔案:
其中:
window安裝證書
雙擊mitmproxy-ca.p12,一路確定直至結束。期間會彈出警告點選“確認”即可。
Mac安裝證書
Mac下雙擊mitmproxy-ca-cert.pem即可彈出鑰匙串管理頁面,然後找到mitmproxy證書,開啟其設定選項,選擇“始終信任”即可
Android/iPhone安裝證書
方法一: 將mitmproxy-ca-cert.pem傳送到手機上點選安裝就可以了,蘋果手機點選安裝描述檔案即可。
方法二: 在linux下啟動 mitmproxy,命令為mitmproxy -p 8889
,同時將手機代理設定為linux的IP地址與埠後訪問mitm.it
安裝證書。
簡單使用
mitmproxy過濾功能的使用舉例:
輸入z,清除螢幕上全部的包
- 1
mitmproxy斷點功能的使用舉例:
輸入i,進入編輯模式,可在最下面編輯條件,ESC或Enter退出編輯
- 1
mitmproxy經常配合appium使用:
首先我們需要寫一個抓包的指令碼,類似下面這個:
import json
Python交流學習qun 784758214 ,內有安裝包,PDF,學習視訊,這裡是Python學習者的聚集地,零基礎,進階,都歡迎
- 1
- 2
- 3
注意:這裡的方法名必須使用response
編寫完抓包的指令碼後,使用mitmdump -p [port] -s [指令碼檔案]
啟動,配合appium自動化指令碼即可實現app自動化抓取