关于手机 app 抓包一般流程是不是使用 fiddler 或者 Charles 来查找接口,在使用 mitmproxy 的 mitmdunmp 对接口所含有的数据进行提取,再用自动化 appium 或者 AirtestIDE 控制?

2019-06-20 10:44:10 +08:00
 z1421012325

前言

我这边是没办法测试这个流程了,因为我的手机和电脑按照上面这几个软件所写的开端口,手机搞证书搞代理,但是只能抓取到 http 的,https 根本抓不到.

fiddler 根据设置,发现我只有在 pc 端可以看到 https 请求和内容,手机上设置完 网络就出现问题 并且在 fiddler 中发送的 https 请求看不到, http://i2.tiimg.com/691087/985a55c38b750b7e.png

但使用 pc 访问手机版的 V2EX 能看到 https 请求,内容也看得到 http://i2.tiimg.com/691087/7b490d2497620ecf.png

http://i2.tiimg.com/691087/bcea635ba47531e0.png

使用 mitmproxy 中只能看到有 http 请求,
并且在手机上设置代理 ip:8080,我去访问 bilibili 时网络无法连接的情况 http://i2.tiimg.com/691087/b203a4b95300089b.png

charles 也是同样,设置了代理 ip:8888,证书,ssl,能看到 https 请求,但出现 unknown 显示,显示都是乱码 http://i2.tiimg.com/691087/97d9d4e77e7f8684.png

也就只有自动化软件能用了...

有哪位知道怎么搞定这些,能否告知一下


我先来说说流程

相对页面的数据进行抓取

(1) 使用 fiddler 或者 Charles 想抓取的接口

(2) 编写要在 mitmdump 筛选提取 addons.py 文件

(2)(1)

impoer mitmproxy.http.HTTPFlow

from mitmproxy import ctx, http

def response(self, flow: mitmproxy.http.HTTPFlow):

if '找到接口中所有含有的关键字' in flow.response.url or flow.request.host == "关键字":

	text = flow.response.get_text()
    
    text = re.findall('提取的内容',text)
    
    #存入数据库或者文本
	
    with open(....)as f:
    	
        f.writer(text)

addons = [ response() ]

(2)(2)

开启 mitmproxy 中的 mitmweb ->>> 直接在命令行开启 mitmweb

(2)(3)

mitmdump 加载刚刚写出来的文件 ->>> 加载文件 mitmdump -s addons.py

这样手机在使用 app 滑动的时候,mitmdump 会对所有经过的请求进行过滤,进行文本提取,保存

(3) 上面几乎已经完成,只需要使用自动化工具 appium 或者 AirtestIDE 来对手机不断滑动发送请求,mtimdump 则保存


网络上教程太少了,文档也就那么几个反反复复,

这个流程是否正确??????????? 是可以无视 js 和加密的把?

5475 次点击
所在节点    Python
39 条回复
newGamingLife
2019-06-20 10:57:16 +08:00
噶 你的头像和我做的事情真的是一模一样。。。怀疑是不是自己梦游建的账号发的帖
newGamingLife
2019-06-20 10:57:36 +08:00
小声 BB,微信头像
z1421012325
2019-06-20 11:53:52 +08:00
更新一下,我试了用 ios,结果可以用 chlarles 抓取到 https 的请求了,果然是小米手机的问题吗?

http://i1.fuimg.com/691087/749b4cdaed5b307c.png

http://i1.fuimg.com/691087/511747de62e4717a.png
z1421012325
2019-06-20 11:54:22 +08:00
抓的起点和趣天下
artandlol
2019-06-20 11:55:53 +08:00
用 goproxy
crab
2019-06-20 11:56:10 +08:00
反编译 app,得到算法密钥类能算出签名,直接 api 请求了吧?
KuroNekoFan
2019-06-20 11:58:38 +08:00
android7 之后,用户证书不再被信任,抓不到 https 是正常的,root 了之后把用户证书移到信任区应该可以,另外一种情况是 sslpinging,不太了解
z1421012325
2019-06-20 12:58:27 +08:00
@crab 我要是能这么弄,我还需要这么多流程搞的这么乱吗........

不动反编译 app 啊
crab
2019-06-20 13:03:12 +08:00
@z1421012325 还是得到反编译这阶段啊。抓不到 https 你查下 SSL Pinning。
des
2019-06-20 13:08:02 +08:00
@z1421012325 JustTruestMe 走起
z1421012325
2019-06-20 13:17:44 +08:00
@artandlol 我看了一下,这个软件使用来建立代理服务器开端口用的? 不懂
z919126592
2019-06-20 13:25:59 +08:00
Xposed+JustTruestme
stop9125
2019-06-20 14:12:25 +08:00
安卓 8(?不确定)之后只信任系统证书了
z1421012325
2019-06-20 14:24:50 +08:00
@KuroNekoFan 不敢 root 自己用的手机, ios 我测试了可以抓 https 的, sslpinnning 也不可能每个 app 都用了吧
z1421012325
2019-06-20 14:29:26 +08:00
@crab 难道爬虫终极阶段要有反编译 app 的能力吗,别吓我. 也不可能能每个 app 都有 SSL Pinning 吧?,ios 手机测试了能抓到 https


是安卓版本问题吧?
artandlol
2019-06-20 15:03:40 +08:00
@z1421012325 golang 版本的,静态文件比 mitproxy 好用
muchengxue
2019-06-20 15:16:05 +08:00
小米 note4 charles 抓起点 https 没问题
yoqu
2019-06-20 15:42:41 +08:00
@z1421012325 安卓 8.0 以后用户自己安装的证书都不认了,需要 root 权限安装证书到设备中
z1421012325
2019-06-20 15:42:54 +08:00
@muchengxue 应该是安卓版本没有到 8 把?
lzvezr
2019-06-20 15:44:25 +08:00
弄个 Android6.0 的实机或者虚拟机是最好的,低版本 xposed 支持不好,高版本安全性太高

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/575731

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX