因为要debug一个app为什么无法启动,就研究了一下抓包. 目前主流的在android 和iphone上都可以抓包的是fiddler, 使用简单,不用root, 操作简便,UI简明. 但是缺点就是只能抓包http/https协议,无法抓包第四层tcp/udp协议. 在android上也可以抓包使用tcpdump. 此篇文章只简单记录一下fiddler.
总体流程分为这么几步: 在电脑上安装fiddler; 简单配置fiddler; 手机上安装证书; 手机设置proxy, 让所有http/https流量经过fiddler; 抓包.
前提条件是电脑和手机在一个局域网内.
下面详细说一下:
- 下载fiddler. 只需要下载免费的fiddler classic就可以了. 下载地址如下
https://www.telerik.com/fiddler/fiddler-classic
2. 简单配置fiddler远程连接
Fiddler 如果抓取 https 协议会话需要进一步配置,在 Tools ->Options 菜单下,选择HTTPS标签并配置如下:
手机抓取需要配置远程连接,在 Tools ->Options 菜单下,选择Connections标签并配置如下:
Fiddler listens on port是手机连接fiddler时的代理端口号,默认8888即可;
Allow remote computers to connect是允许远程发送请求,需要勾上.
防火墙需要开放8888端口,注意如果你使用的是windows的话,这个防火墙已经自动配置好了.
3. 手机安装fiddler证书, 这里需要手机和电脑在同一个局域网之内. 下面以iphone为例说明,安卓的步骤差不多.
在电脑上通过cmd敲命令ipconfig查看本机的ipv4地址.
打开手机浏览器,输入 http://【fiddler电脑IP地址】:【fiddler设置的端口号】,例如 http://192.168.123.100:8888 可以下载证书并安装。
在打开的页面中,点击 FiddlerRoot certificate 下载证书,点击允许
在Settings系统设置中,点击 Profile Downloaded(已下载的配置文件):
点击install, 安装证书
不同系统手机的下载路径不一样,例如有的是: 设置->通用->关于本机->证书信任设置
4 手机配置代理
手机设置 -> WLAN -> 选择无线网络 -> HTTP Proxy,选择 Manual,Server 为 Fiddler 的电脑 ip 地址,端口号为 Fiddler 的端口号:
此时操作浏览器或APP,在 fiddler 中可以看到完成的请求和响应数据: