关于手机 app 抓包一般流程是不是使用 fiddler 或者 Charles 来查找接口,在使用 mitmproxy 的 mitmdunmp 对接口所含有的数据进行提取,再用自动化 appium 或者 AirtestIDE 控制? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
z1421012325
V2EX    Python

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

  •  
  •   z1421012325 2019-06-20 10:44:10 +08:00 6366 次点击
    这是一个创建于 2385 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前言

    我这边是没办法测试这个流程了,因为我的手机和电脑按照上面这几个软件所写的开端口,手机搞证书搞代理,但是只能抓取到 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 和加密的把?

    第 1 条附言    2019-06-21 16:02:41 +08:00
    更新一下,对于 mitmproxy 的控制,

    下载 pip 下载下来的 mitmproxy 其实是三个程序,分别是 mitmproxy,mitmweb 和 itmdump

    其中 mitmproxy,mitmweb 可以分为一个用途,只是功能差异不是很大,都是对抓取的 url 分析.但是 mitmproxy 不能在 win 上使用,所以一般在 win 上使用的是 mitmweb

    我这里流程写错了,今天在抓取的时候发现,win 上只要先开启 mitmweb 在开启 mitmdump,后一个就不会运行,一直保持监听状态,所以在抓取的时候最好确定接口,编写链接内容,对该接口 url 进行拦截时,请确定只开启一个 mitmdump

    ------------------------------------------------------------------------------------------------------------------------

    还有第一个流程其实用 mitmweb 来抓接口也是可以的,不过不如 charles 那么直接,界面特别乱

    使用第一第二流程要注意默然的端口是不一样的,如果你设置一样的端口请无视,一个是 8888,一个是 8080,注意每个流程使用完成之后关闭当前流程抓包软件,修改手机上的 ip 端口
    39 条回复    2019-07-05 10:08:08 +08:00
    newGamingLife
        1
    newGamingLife  
       2019-06-20 10:57:16 +08:00
    噶 你的头像和我做的事情真的是一模一样。。。怀疑是不是自己梦游建的账号发的帖
    newGamingLife
        2
    newGamingLife  
       2019-06-20 10:57:36 +08:00
    小声 BB,微信头像
    z1421012325
        3
    z1421012325  
    OP
       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
        4
    z1421012325  
    OP
       2019-06-20 11:54:22 +08:00
    抓的起点和趣天下
    artandlol
        5
    artandlol  
       2019-06-20 11:55:53 +08:00 via Android
    用 goproxy
    crab
        6
    crab  
       2019-06-20 11:56:10 +08:00
    反编译 app,得到算法密钥类能算出签名,直接 api 请求了吧?
    KuroNekoFan
        7
    KuroNekoFan  
       2019-06-20 11:58:38 +08:00 via iPhone   4
    android7 之后,用户证书不再被信任,抓不到 https 是正常的,root 了之后把用户证书移到信任区应该可以,另外一种情况是 sslpinging,不太了解
    z1421012325
        8
    z1421012325  
    OP
       2019-06-20 12:58:27 +08:00
    @crab 我要是能这么弄,我还需要这么多流程搞的这么乱吗........

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


    是安卓版本问题吧?
    artandlol
        16
    artandlol  
       2019-06-20 15:03:40 +08:00 via Android
    @z1421012325 golang 版本的,静态文件比 mitproxy 好用
    muchengxue
        17
    muchengxue  
       2019-06-20 15:16:05 +08:00
    小米 note4 charles 抓起点 https 没问题
    yoqu
        18
    yoqu  
       2019-06-20 15:42:41 +08:00
    @z1421012325 安卓 8.0 以后用户自己安装的证书都不认了,需要 root 权限安装证书到设备中
    z1421012325
        19
    z1421012325  
    OP
       2019-06-20 15:42:54 +08:00
    @muchengxue 应该是安卓版本没有到 8 把?
    lzvezr
        20
    lzvezr  
       2019-06-20 15:44:25 +08:00 via iPhone
    弄个 Android6.0 的实机或者虚拟机是最好的,低版本 xposed 支持不好,高版本安全性太高
    z1421012325
        21
    z1421012325  
    OP
       2019-06-20 15:44:32 +08:00
    @artandlol go'看不懂,再说了我也只是 app 抓数据,不可能数据都给加密了吧,中途拦截数据 mitmdump 挺好用的,简单
    z1421012325
        22
    z1421012325  
    OP
       2019-06-20 15:46:13 +08:00
    @lzvezr 哈哈 我也正在做虚拟机版的,


    不知道 windows 的电脑使用 AirtestIDE 能不能控制 ios 啊?
    KuroNekoFan
        23
    KuroNekoFan  
       2019-06-20 16:12:39 +08:00
    @z1421012325 找个 android5/6 的设备呗...
    Jirajine
        24
    Jirajine  
       2019-06-20 16:25:17 +08:00 via Android
    楼上说 root 导入到系统 CA 真的尝试过吗?我弄了很多次,确定按正确格式导入,权限也配置好,仍然不被信任。
    至于 justtrustme,试了下他的 release 版仍然不行,回去编译一下看看。
    locoz
        25
    locoz  
       2019-06-20 16:34:00 +08:00   4
    可以看一下我的这几篇文章
    [当你写爬虫遇到 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
        26
    unclemcz  
       2019-06-20 19:07:26 +08:00 via Android
    @locoz 膜拜大佬
    duan602728596
        27
    duan602728596  
       2019-06-20 19:44:56 +08:00 via iPhone
    ios 直接越狱然后装个 ssl-kill-switch2 就能抓到了啊
    z1421012325
        28
    z1421012325  
    OP
       2019-06-20 22:56:15 +08:00
    @Jirajine 我用模拟器试了下,直接用安卓版本 5.0 以上的 用 xposed +justtrustme 可以无视证书,证书的安装也不用了,charles 能抓到 https 的请求了 这是我写的随笔 https://www.cnblogs.com/zengxm/p/11061900.html
    z1421012325
        29
    z1421012325  
    OP   2019-06-20 23:34:16 +08:00
    @duan602728596 根据需求来越狱吧? 我直接在 wifi 中写入代理和端口,在 ios 自带的浏览器上下证书,直接安装信任就好了,直接抓到 https 的请求,比起安卓简单的太多了,除非 app 中含有 sslpinning 才需要把?我尝试了起点的 https 请求可以抓到,抖音也行
    locoz
        30
    locoz  
       2019-06-21 00:18:43 +08:00
    @unclemcz #26
    jamev5
        31
    jamev5  
       2019-06-21 00:24:06 +08:00 via Android
    还有种简单的方法是安装平行空间,在平行空间里打开对应的软件,然后抓包平行空间的请求就可以了。
    hp66722667
        32
    hp66722667  
       2019-06-21 09:48:55 +08:00
    https 指定是能抓到的,跟手机没关系,因为我们测试过小米,华为,IOS
    unclemcz
        33
    unclemcz  
       2019-06-21 10:57:36 +08:00
    @hp66722667 要看情况,没做证书验证随便抓,如果客户端有做证书验证,就要干掉 sslpinning,进一步如果客户端服务端做双向验证,则还要找到客户端保存的证书和秘钥,@locoz 发在站上的系列文章,算是很全面教程了。
    foxyier
        34
    foxyier  
       2019-06-21 14:02:19 +08:00
    @locoz 学到了。666
    z1421012325
        35
    z1421012325  
    OP
       2019-06-21 15:50:32 +08:00
    @jamev5 这种对于证书能搞定吗,对安卓版本有没有要求啊?
    z1421012325
        36
    z1421012325  
    OP
       2019-06-21 22:33:38 +08:00
    @locoz 感谢大佬的文档,不过我有个问题,

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

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


    网络上的教程都是使用抓包软甲+有线 adb 手机抓取, 难道只能使用真机+有线来操控吗
    gaopan123
        37
    gaopan123  
       2019-07-05 10:01:05 +08:00
    感谢 @locoz,我目前也是刚深入到 LZ 的地步,止步于 xposed
    locoz
        38
    locoz  
       2019-07-05 10:07:44 +08:00
    @z1421012325 #36 卧槽我居然没看到你这个回复的,赶紧补一下,ADB 群控可以用网络控制,不一定非要有线,这些都是灰黑产玩烂的东西了。最简单的就是网络 ADB,但效率没有直接用专门的网络群控 APP+控制端高,而且连接不太稳定,管理起来也不是很方便,所以如果要搞的话建议走第二个方案。
    locoz
        39
    locoz  
       2019-07-05 10:08:08 +08:00
    @gaopan123 #37 能对你有帮助就好
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5611 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 03:06 PVG 11:06 LAX 19:06 JFK 22:06
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86