當前位置: 泰州之窗首頁 > 汽車 > 正文

python輕松抓取app接口

python輕松抓取app接口

我們使用代理軟件攔截 http 或者 https 請求常見的有 Fiddler 和 Charles。

我們使用代理軟件攔截 http 或者 https 請求常見的有 Fiddler 和 Charles。這兩款軟件雖然比較強大,但是如果我們想實現 python 抓取一些 app 數據進行分析的話,今天介紹一款更方便的工具 mitmproxy

安裝 mitmproxy

如果我們本機安裝了 pip 或者 pip3

pip install mitmproxy --ignore-installed six

或者直接

brew install mitmproxy

或者下載安裝包手動安裝下載地址,安裝完成后配置環境變量

啟動

直接 mitmproxy 命令默認在端口 8080 上啟動一個 mitmproxy 本地的代理服務

mitmproxy

當然也可以使用如上命令 添加 -p 自定義啟動的端口如,mitmproxy -p 8888

使用 mitmweb 命令會同時在 8080 端口和 8081 端口啟動兩個服務,訪問 8081 端口是一個 web 頁面,實時顯示訪問數據

mitmweb

app 抓包

配置手機代理 手機代理和通用的代理配置一樣,在 wifi 網絡的高級里面設置手動,并輸入 pc 端的 ip 地址,端口號是上面啟動 mitmproxy 的端口默認 8080

https 抓包 瀏覽器訪問 http://mitm.it 下載對應的 pem 證書并安裝。然后在手機端打開需要抓包的 app 就可以正常讀取 app 請求每個頁面的數據包

測試抓取指定 app 接口數據 編寫 python 程序并使用命令為 test.py 程序如下然后使用 mitmweb -s wlw.py 命令啟動服務

#!/usr/bin/env python3# -*- coding: UTF-8 -*-import jsonfrom mitmproxy import ctx
def response(flow) : url = "https://xxx/handle/execute.jhtml" if flow.request.url.startswith(url) : text = flow.response.text data = json.loads(text) print(data)
result = data.get('result') print(result) ctx.log.info(str(result)) else: print(flow.request.url) print("\n") print(flow.request.text) print("\n") print(flow.response.text)

可以發現我們可以直接把抓包得到的數據結果在控制臺打印出來,這樣我們在 python 程序中獲取到指定的數據以后就可以非常方便的保存和進行分析。

{'result: '{"sign":"","secret":"","oper":"loginoffice","type":"account","source":"O","version":"1009","app_version":"4.9.4_debug","device":{"OSV":"","OS":"","IMEI":"00000000-21a8-bdd2-ffff-ffff97d5da05"},"para":{"umtoken":"","password":"123456","username":"FJFZSOP1Y1"},"deviceBrand":"HUAWEI","deviceModel":"PRA-AL00X","deviceOsVersion":"8.0.0","deviceOs":"Android","name":"","userName":"FJFZSOP1Y1","code":"3","msg":"密碼不正確!"}', 'arg': '{"sign":"","secret":"","oper":"loginoffice","type":"account","source":"O","version":"1009","app_version":"4.9.4_debug","device":{"OSV":"","OS":"",""00000000-21a8-bdd2-ffff-ffff97d5da05"},"para":{"umtoken":"","password":"123456","username":"FJFZSOP1Y1"},"deviceBrand":"HUAWEI","deviceModel":"PRA-AL00X","deviceOsVersion":"8.0.0","deviceOs":"Android","name":"","userName":"FJFZSOP1Y1"}'}

至此 app 的數據包的抓包流程就走完了。

申明 特此申明:本文只作為筆者自己的 app 數據抓包分析使用,請讀者不要惡意使用抓包程序對商業 app 進行違法的一些行為。

推薦閱讀:移動硬盤是什么

[責任編輯:無]
正规男模特赚钱吗 nba选秀 微乐贵阳麻将下载安 如何做股票短线高手 91金蟾捕鱼破解版 九游棋牌大厅手机版? 打麻将的技巧 湖北高频11选5走势图 街机千炮捕鱼网络版 怎么可以在网上赚钱 武汉麻将的实战技巧