APP 开发中实时透明的抓包并展示的正确姿势

2016-08-31 12:22:20 +08:00
 rrfeng
开发 APP 的过程中肯定有很多抓包需求,相信大家目前用的不外乎 Fiddler/Charles/AnyProxy 等等,土豪用 Surge ?

除了 Surge ,都是代理模型,首先开启一个代理服务(即抓包软件本体),然后在设备上设置代理。最后开启 APP ,访问网站,到电脑上查看请求和回应。


为什么没有一个更优雅的方式呢?
1. 在 router/switch 上抓包( tcpdump ),或者做端口镜像然后在某个 server 上抓包。
2. 实时解析抓到的流量,然后在一个 web 上展示。可以根据简单的条件过滤。

主要问题:
1. 实时 decoding 需要其他工具支持(例如 packetbeat 可以完成 http 的抓取和存储,展示再想办法)
2. SSL 的问题(我们自己的服务器,当然有 private key ,理论上是可以解密的)

目前现有的工具来说, wireshark 是唯一比较完美的解决方案:可以实时抓包,实时显示,实时过滤,并且实时解密 ssl (只要你有 server private key )。但是如何将 wireshark web 化?

看了一下 wireshark 的 command line 版也支持很丰富的功能。但是尚未找到正确姿势。

大家有什么想法?(不局限于 wireshark ,其实 packetbeat 就是很好的工具,但是不支持 https ……)
4896 次点击
所在节点    问与答
13 条回复
icebergSnow
2016-08-31 12:34:24 +08:00
wireshark + tcpdump 不好用???
ssh root@HOST tcpdump -U -s0 -w - 'not port 22' | wireshark -k -i -

Fiddler/Burp 也不麻烦吧??哪里不优雅了,对于 web 抓包然后展示来说。还能修改数据包呢。


web 抓包然后展示来说这种肯定麻烦多了
icebergSnow
2016-08-31 12:38:46 +08:00
给你一个更好的方案,开个热点,然后用 wireshark 。
我真不信有比这个优雅的
kevinroot
2016-08-31 12:40:13 +08:00
zeo0811
2016-08-31 12:56:15 +08:00
手机上有一款抓包的 APP,叫 replica
sunhr
2016-08-31 13:12:55 +08:00
iOS 设备连接 Mac ,开 rvi ,然后 Wireshark 抓包
qnnnnez
2016-08-31 13:26:23 +08:00
arpspoof+wireshark
rrfeng
2016-08-31 14:08:20 +08:00
@icebergSnow
不优雅的原因说了,需要开启代理,配置代理,而且不能共享。比如测试发现一个接口有问题,要么截图给后端 /客户端看,要么开发再自己抓一遍(或者 curl/postman )。

而且我的重点不是怎么抓包,这个很容易。重点是如何方便的查看,过滤,分享,并且对用户(测试 /运营)透明。
所以我说 packetbeat 是一个很好的工具。

@kevinroot
这个需要在某个地方集成它的 client ,没法对用户透明。

@zeo0811
一切需要修改手机的,其实都不如直接用 Fiddler 之流。

@sunhr
Android 怎么办?

@qnnnnez
arpspoof 不如 mirror port
also24
2016-08-31 14:25:02 +08:00
楼主的需求,让我想起了这个:
http://rehorn.github.io/livepool/

不过好久没更新过了的样子
rrfeng
2016-08-31 14:28:42 +08:00
@also24
这个和 AnyProxy 很像的。所以也是同样的问题:需要在移动设备上设置代理服务器。
hffaxy
2016-08-31 16:52:50 +08:00
Surge 本质上也算是代理吧,官方说仍然是 TUN/TAP 的虚拟网卡做中转
同理的是 Android 上的 VPNService ,差不多一个道理,也是基于 TUN/TAP 的封装。
目前刚好我在做这个东西,讨论一些我的看法:
这里只谈流量获取,不涉及流量分析
APP 流量获取:
1.终端本身
实现方法: TUN/TAP 虚拟网卡中转, IOS 的 Surge , Android 的 VPNService
缺陷:屏幕太小,在这上面分析数据包数据太低效率且无通用协议解码应用,且只能拿到第二层以上的数据
优点的话,就是流量干净,不容易掺杂其他流量
2.路由
实现方法: AP , Route 的镜像流量口,或者一堆能够镜像流量导出的协议获得流量,甚至直接连接电脑 tcpdump
缺陷:需要物理部署,相对麻烦,通常存在非目标 APP 产生的流量,需要筛选
优点:电脑有 wireshark 一步到位,拿到流量即可可解码分析
hffaxy
2016-08-31 17:00:25 +08:00
wireshark web 化这个怎么说呢?我司的某个产品就是这个,据我所知市面上基本能够提供大流量分析服务的公司都有这个,要么是利用 wireshark (毕竟开源)依葫芦画瓢做一个,要么是自己实现流量协议的识别和解码。
只要识别解码库做好, web 都是去调用,不麻烦的,主要是识别解码库,需要 up 自己想办法啦
工作量嘛~见仁见智咯
ysdj
2016-08-31 17:12:45 +08:00
httpwatch 不就是通过网卡截 http 包的么
mingyun
2016-08-31 22:32:48 +08:00
@also24 居然腾讯出的

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

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

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

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

© 2021 V2EX