移动端抓包解决方案(2019-11-22)
移动端的web页面以及webview的调试和抓包可以参考移动端调试方案调研,但是这种方法非常有局限性,不能抓到所有网络请求的包,仅限通过web与webview的http与https请求。如果想要抓到所有移动端上的网络请求,此文列举出一些方案。
一、利用常见的抓包工具
有哪些工具呢:charles,fiddler,wireshark
- charles: 一般用于mac,我们要用money支持正版
- fiddler:一般用于windows,mac不推荐用原因是没有环境,如果非要用,就得安装
.net环境
——Mono
wiresahrk: mac,windos均可,而且可以配合tcpdump在安卓手机抓包,参考Android利用tcpdump和wireshark抓取网络数据包
.net是个框架,实际上每个人的windows里面都有.net框架,它被用来作为中间层,就像java虚拟机。Mono是
.NET Framework
的一种开源实现,希望实现“一次编写,到处运行”
怎么用来抓手机的包呢:
方案一
- 电脑需要和手机处于同一个局域网
- 查看电脑的ip和抓包工具上设置的端口号,手动为手机设置代理
- 对于https的请求需要在手机上下载安装证书(访问以上步骤中的ip与端口号),否则无法查看
以下为charles上手机抓包截图
补充一点,使用charles时,手机设置代理成功之后,一般情况下会弹出窗口询问是否可以访问手机,没有弹出时需要手动设置:proxy -> Access control settings中add手机ip
方案二
手机为电脑开热点,电脑上用以上工具抓取wifi流量
方案三
使用360随身WiFi,手机连接之后,电脑即可抓取wifi流量
360随身WiFi是一款超迷你、操作极其简单的无线路由器,只需把360随身WiFi插到一台可以上网的电脑上,不用做任何设置,就把连接有线网络的电脑转变成接入点,实现与其他终端的网络共享。简单方便实现手机WIFI上网。
评价(推荐指数★★★):
- 准备工作还算方便,功能全面,UI简明,适合多种走代理的应用
- 要求熟悉抓包工具
方案一需要设置代理,这样可能会导致https的response头部信息因为代理而发生改变
connection
key会在charles中变成proxy-connection
,请求的method
也会改变,get
,post
等会变成connect
,详细原理见参考文章,最主要是response
中没有connection: keep-alive
CONNECT这个方法的作用就是把服务器作为跳板,让服务器代替用户去访问其它网页,之后把数据原原本本的返回给用户。这样用户就可以访问到一些只有服务器上才能访问到的网站了,这就是HTTP代理。
方案二不常用,因为这种方式只能抓到经过电脑的数据,不能向上层服务器抓包
- 方案三需要硬件设施
多说一句,在本人的实际体验场景中,需要抓小程序上IM DEMO的包,观察是否遵循http1.1的长连接,用charles抓包中,没有观察到response头部中任何关于keep-alive中的任何信息,这里推测是代理之后导致信息变化,但是抓到信息中确实显示到kept-alive:no,它会很人性化的指出这种连接是否是长连接。但是为什么又会出现不是长连接的情况呢?是因为小程序不支持长连接,即便是所有request和response头中都带有字
connection: keep-alive
,实际上还是没有长连接的
二、非常小众的手机抓包软件
- 下载地址:Packet Capture
- 使用方法:不需要root也不需要代理,手机上就可以查看数据,只需要选择需要抓的app即可,但是也需要安装证书,具体参考如何在 Android 手机上实现抓包?
- 效果展示:
- 评价(推荐指数★★★):
- 非常简易便捷,准备工作少,易上手操作,基本能够满足要求不高的抓包工作
- 手机上操作UI不是很方便看,并且每个请求没有给出URL,只有ip,不是很好查找,也没有filter功能,报文头可以清晰看到,报文主体会出现乱码情况
三、补充内容
- 计算机网络协议分层
HTTP协议和安全协议同属于应用层(OSI模型的最高层),具体来讲,安全协议工作在HTTP之下,传输层之上:安全协议向运行HTTP的进程提供一个类似于TCP的套接字,供进程向其中注入报文,安全协议将报文加密并注入运输层套接字;或是从运输层获取加密报文,解密后交给对应的进程。严格地讲,HTTPS并不是一个单独的协议,而是对工作在一加密连接(TLS或SSL)上的常规HTTP协议的称呼。
- tcp三次握手过程
- wireshark主要功能介绍:
- 认识界面
- 主要功能:设置过滤器(协议,method,端口),设置着色规则,跟踪流(具体分析流内容),图表
- wireshark个人认为既是一个调试利器,又是一个对计网知识很好的学习工具,抓包信息能够很好反应以上的网络分层与Tcp握手
- 认识界面