在Android/iPhone上抓包

因为要debug一个app为什么无法启动,就研究了一下抓包.  目前主流的在android 和iphone上都可以抓包的是fiddler, 使用简单,不用root, 操作简便,UI简明. 但是缺点就是只能抓包http/https协议,无法抓包第四层tcp/udp协议. 在android上也可以抓包使用tcpdump. 此篇文章只简单记录一下fiddler.

总体流程分为这么几步: 在电脑上安装fiddler; 简单配置fiddler; 手机上安装证书; 手机设置proxy, 让所有http/https流量经过fiddler; 抓包. 

前提条件是电脑和手机在一个局域网内.

下面详细说一下:

  1. 下载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 中可以看到完成的请求和响应数据:

 

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

This site uses Akismet to reduce spam. Learn how your comment data is processed.