APP 开发中实时透明的抓包并展示的正确姿势 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rrfeng
V2EX    问与答

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

  •  
  •   rrfeng 2016-08-31 12:22:20 +08:00 5628 次点击
    这是一个创建于 3330 天前的主题,其中的信息可能已经有所发展或是发生改变。
    开发 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 ……)
    第 1 条附言    2016-08-31 14:19:25 +08:00
    可能是我描述的有些问题。

    我的目的是:
    1. 客户端完全无感知。
    2. 方便查看,过滤,分享。

    其中 1 是很容易实现的,特别是有网关的控制权限情况下(或者通过特定的热点,也不是不行)。 2 目前没有发现相关的工具,举 wireshark 的例子是为了说明它的实时解码以及 https(ssl) decrypt 能力很难自己实现。

    如果用过 AnyProxy 的话,其实 AnyProxy 的 Web Console 已经基本符合需求了。但是还是需要客户端设置代理来抓包。

    也就是说,想要 tcpdump + anyproxy webconsole 的组合体。

    其实这里面有一个非常难的点,就是 https …… 如果一是 DHE 等算法交换的动态密钥即使是有 server privite key 也没有办法解密……
    13 条回复    2016-08-31 22:32:48 +08:00
    icebergSnow
        1
    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
        2
    icebergSnow  
       2016-08-31 12:38:46 +08:00
    给你一个更好的方案,开个热点,然后用 wireshark 。
    我真不信有比这个优雅的
    kevinroot
        3/span>
    kevinroot  
       2016-08-31 12:40:13 +08:00
    zeo0811
        4
    zeo0811  
       2016-08-31 12:56:15 +08:00
    手机上有一款抓包的 APP,叫 replica
    sunhr
        5
    sunhr  
       2016-08-31 13:12:55 +08:00   1
    iOS 设备连接 Mac ,开 rvi ,然后 Wireshark 抓包
    qnnnnez
        6
    qnnnnez  
       2016-08-31 13:26:23 +08:00 via Android
    arpspoof+wireshark
    rrfeng
        7
    rrfeng  
    OP
       2016-08-31 14:08:20 +08:00
    @icebergSnow
    不优雅的原因说了,需要开启代理,配置代理,而且不能共享。比如测试发现一个接口有问题,要么截图给后端 /客户端看,要么开发再自己抓一遍(或者 curl/postman )。

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

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

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

    @sunhr
    Android 怎么办?

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

    不过好久没更新过了的样子
    rrfeng
        9
    rrfeng  
    OP
       2016-08-31 14:28:42 +08:00
    @also24
    这个和 AnyProxy 很像的。所以也是同样的问题:需要在移动设备上设置代理服务器。
    hffaxy
        10
    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
        11
    hffaxy  
       2016-08-31 17:00:25 +08:00
    wireshark web 化这个怎么说呢?我司的某个产品就是这个,据我所知市面上基本能够提供大流量分析服务的公司都有这个,要么是利用 wireshark (毕竟开源)依葫芦画瓢做一个,要么是自己实现流量协议的识别和解码。
    只要识别解码库做好, web 都是去调用,不麻烦的,主要是识别解码库,需要 up 自己想办法啦
    工作量嘛~见仁见智咯
    ysdj
        12
    ysdj  
       2016-08-31 17:12:45 +08:00 via Android
    httpwatch 不就是通过网卡截 http 包的么
    mingyun
        13
    mingyun  
       2016-08-31 22:32:48 +08:00
    @also24 居然腾讯出的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3868 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 00:17 PVG 08:17 LAX 17:17 JFK 20:17
    Do have faith in what you're doing.
    ubao 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