关于手机 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 和加密的把?

5495 次点击
所在节点    Python
39 条回复
z1421012325
2019-06-20 15:44:32 +08:00
@artandlol go'看不懂,再说了我也只是 app 抓数据,不可能数据都给加密了吧,中途拦截数据 mitmdump 挺好用的,简单
z1421012325
2019-06-20 15:46:13 +08:00
@lzvezr 哈哈 我也正在做虚拟机版的,


不知道 windows 的电脑使用 AirtestIDE 能不能控制 ios 啊?
KuroNekoFan
2019-06-20 16:12:39 +08:00
@z1421012325 找个 android5/6 的设备呗...
Jirajine
2019-06-20 16:25:17 +08:00
楼上说 root 导入到系统 CA 真的尝试过吗?我弄了很多次,确定按正确格式导入,权限也配置好,仍然不被信任。
至于 justtrustme,试了下他的 release 版仍然不行,回去编译一下看看。
locoz
2019-06-20 16:34:00 +08:00
可以看一下我的这几篇文章
[当你写爬虫遇到 APP 的请求有加密参数时该怎么办? [初级篇-常规模式] ]( https://mp.weixin.qq.com/s/KFM37LN7phd8nbI8iIHDtw)

[当你写爬虫遇到 APP 的请求有加密参数时该怎么办? [初级篇-秒杀模式] ]( https://mp.weixin.qq.com/s/_FjW6zzBv7-LENfB9B2loA)

[当你写爬虫抓不到 APP 请求包的时候该怎么办? [初级篇] ]( https://zhuanlan.zhihu.com/p/46433599)

[当你写爬虫抓不到 APP 请求包的时候该怎么办? [中级篇] ]( https://zhuanlan.zhihu.com/p/56397466)

[当你写爬虫抓不到 APP 请求包的时候该怎么办? [高级篇-混淆导致通用 Hook 工具失效] ]( https://zhuanlan.zhihu.com/p/63028507)
unclemcz
2019-06-20 19:07:26 +08:00
@locoz 膜拜大佬
duan602728596
2019-06-20 19:44:56 +08:00
ios 直接越狱然后装个 ssl-kill-switch2 就能抓到了啊
z1421012325
2019-06-20 22:56:15 +08:00
@Jirajine 我用模拟器试了下,直接用安卓版本 5.0 以上的 用 xposed +justtrustme 可以无视证书,证书的安装也不用了,charles 能抓到 https 的请求了 这是我写的随笔 https://www.cnblogs.com/zengxm/p/11061900.html
z1421012325
2019-06-20 23:34:16 +08:00
@duan602728596 根据需求来越狱吧? 我直接在 wifi 中写入代理和端口,在 ios 自带的浏览器上下证书,直接安装信任就好了,直接抓到 https 的请求,比起安卓简单的太多了,除非 app 中含有 sslpinning 才需要把?我尝试了起点的 https 请求可以抓到,抖音也行
locoz
2019-06-21 00:18:43 +08:00
@unclemcz #26
jamev5
2019-06-21 00:24:06 +08:00
还有种简单的方法是安装平行空间,在平行空间里打开对应的软件,然后抓包平行空间的请求就可以了。
hp66722667
2019-06-21 09:48:55 +08:00
https 指定是能抓到的,跟手机没关系,因为我们测试过小米,华为,IOS
unclemcz
2019-06-21 10:57:36 +08:00
@hp66722667 要看情况,没做证书验证随便抓,如果客户端有做证书验证,就要干掉 sslpinning,进一步如果客户端服务端做双向验证,则还要找到客户端保存的证书和秘钥,@locoz 发在站上的系列文章,算是很全面教程了。
foxyier
2019-06-21 14:02:19 +08:00
@locoz 学到了。666
z1421012325
2019-06-21 15:50:32 +08:00
@jamev5 这种对于证书能搞定吗,对安卓版本有没有要求啊?
z1421012325
2019-06-21 22:33:38 +08:00
@locoz 感谢大佬的文档,不过我有个问题,

比如我是在 win 下使用 mitmdump 拦截数据保存的,

但是我需要手动滑动一些页面,想要使用自动化软件 airtestIDE 让手机自动化,发现使用的是模拟器,没有使用真机,想知道怎么无线让两个运作起来??共用同一个端口也不行吧?


网络上的教程都是使用抓包软甲+有线 adb 手机抓取, 难道只能使用真机+有线来操控吗
gaopan123
2019-07-05 10:01:05 +08:00
感谢 @locoz,我目前也是刚深入到 LZ 的地步,止步于 xposed
locoz
2019-07-05 10:07:44 +08:00
@z1421012325 #36 卧槽我居然没看到你这个回复的,赶紧补一下,ADB 群控可以用网络控制,不一定非要有线,这些都是灰黑产玩烂的东西了。最简单的就是网络 ADB,但效率没有直接用专门的网络群控 APP+控制端高,而且连接不太稳定,管理起来也不是很方便,所以如果要搞的话建议走第二个方案。
locoz
2019-07-05 10:08:08 +08:00
@gaopan123 #37 能对你有帮助就好

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

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

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

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

© 2021 V2EX