1. 程式人生 > 實用技巧 >Python爬取APP上的資料教程(轉發記錄)

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自動化抓取