1. 1. 一、利用常见的抓包工具
  2. 2. 二、非常小众的手机抓包软件
  • 三、补充内容
    1. 1. 参考文章
  • 移动端抓包解决方案(2019-11-22)

    移动端的web页面以及webview的调试和抓包可以参考移动端调试方案调研,但是这种方法非常有局限性,不能抓到所有网络请求的包,仅限通过web与webview的http与https请求。如果想要抓到所有移动端上的网络请求,此文列举出一些方案。

    一、利用常见的抓包工具

    1. 有哪些工具呢:charlesfiddlerwireshark

      • charles: 一般用于mac,我们要用money支持正版
      • fiddler:一般用于windows,mac不推荐用原因是没有环境,如果非要用,就得安装.net环境——Mono
      • wiresahrk: mac,windos均可,而且可以配合tcpdump在安卓手机抓包,参考Android利用tcpdump和wireshark抓取网络数据包

        .net是个框架,实际上每个人的windows里面都有.net框架,它被用来作为中间层,就像java虚拟机。Mono是.NET Framework 的一种开源实现,希望实现“一次编写,到处运行”

    2. 怎么用来抓手机的包呢:

      方案一

      • 电脑需要和手机处于同一个局域网
      • 查看电脑的ip和抓包工具上设置的端口号,手动为手机设置代理
      • 对于https的请求需要在手机上下载安装证书(访问以上步骤中的ip与端口号),否则无法查看
      • 以下为charles上手机抓包截图

        charles抓包演示1
        charles抓包演示2

      • 补充一点,使用charles时,手机设置代理成功之后,一般情况下会弹出窗口询问是否可以访问手机,没有弹出时需要手动设置:proxy -> Access control settings中add手机ip

        方案二

      • 手机为电脑开热点,电脑上用以上工具抓取wifi流量

        方案三

      • 使用360随身WiFi,手机连接之后,电脑即可抓取wifi流量

        360随身WiFi是一款超迷你、操作极其简单的无线路由器,只需把360随身WiFi插到一台可以上网的电脑上,不用做任何设置,就把连接有线网络的电脑转变成接入点,实现与其他终端的网络共享。简单方便实现手机WIFI上网。

    3. 评价(推荐指数★★★):

      • 准备工作还算方便,功能全面,UI简明,适合多种走代理的应用
      • 要求熟悉抓包工具
      • 方案一需要设置代理,这样可能会导致https的response头部信息因为代理而发生改变connectionkey会在charles中变成proxy-connection,请求的method也会改变,getpost等会变成connect,详细原理见参考文章,最主要是response中没有connection: keep-alive

        CONNECT这个方法的作用就是把服务器作为跳板,让服务器代替用户去访问其它网页,之后把数据原原本本的返回给用户。这样用户就可以访问到一些只有服务器上才能访问到的网站了,这就是HTTP代理。

      • 方案二不常用,因为这种方式只能抓到经过电脑的数据,不能向上层服务器抓包

      • 方案三需要硬件设施

        多说一句,在本人的实际体验场景中,需要抓小程序上IM DEMO的包,观察是否遵循http1.1的长连接,用charles抓包中,没有观察到response头部中任何关于keep-alive中的任何信息,这里推测是代理之后导致信息变化,但是抓到信息中确实显示到kept-alive:no,它会很人性化的指出这种连接是否是长连接。但是为什么又会出现不是长连接的情况呢?是因为小程序不支持长连接,即便是所有request和response头中都带有字connection: keep-alive,实际上还是没有长连接的

    二、非常小众的手机抓包软件

    1. 下载地址:Packet Capture
    2. 使用方法:不需要root也不需要代理,手机上就可以查看数据,只需要选择需要抓的app即可,但是也需要安装证书,具体参考如何在 Android 手机上实现抓包?
    3. 效果展示:
      960e3ab7ae22247470836d98da607de0.png
      4dd58daf3cf7ae99ecb95ec1e0a5220f.png
    4. 评价(推荐指数★★★):
      • 非常简易便捷,准备工作少,易上手操作,基本能够满足要求不高的抓包工作
      • 手机上操作UI不是很方便看,并且每个请求没有给出URL,只有ip,不是很好查找,也没有filter功能,报文头可以清晰看到,报文主体会出现乱码情况

    三、补充内容

    1. 计算机网络协议分层

    计算机网络协议分层

    HTTP协议和安全协议同属于应用层(OSI模型的最高层),具体来讲,安全协议工作在HTTP之下,传输层之上:安全协议向运行HTTP的进程提供一个类似于TCP的套接字,供进程向其中注入报文,安全协议将报文加密并注入运输层套接字;或是从运输层获取加密报文,解密后交给对应的进程。严格地讲,HTTPS并不是一个单独的协议,而是对工作在一加密连接(TLS或SSL)上的常规HTTP协议的称呼。

    1. tcp三次握手过程

    tcp三次握手过程

    1. wireshark主要功能介绍:
      • 认识界面
        wiresahrk界面
      • 主要功能:设置过滤器(协议,method,端口),设置着色规则,跟踪流(具体分析流内容),图表
        wireshark着色规则
      • wireshark个人认为既是一个调试利器,又是一个对计网知识很好的学习工具,抓包信息能够很好反应以上的网络分层与Tcp握手

    参考文章

    1. HTTP之connect method
    2. HTTP代理协议的CONNECT方法
    3. HTTP请求头中的 Proxy-Connection
    4. 调试利器之wireshark