Android 抓包工具 Fiddler

本文介绍如何使用Fiddler抓取Android应用的HTTP和HTTPS请求,包括配置过程和常见问题解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

android debug

前言

在 Android 开发中,一般情况下不用去抓包,因为网络请求都会设置 Log 输出进行查看。

以下情况你可能需要抓包:

  1. 需要了解自己应用的整体网络请求状况。
  2. 第三方 SDK 会发起网络请求,在使用这些 SDK 时如果出现问题时,而恰好没有日志输出。
  3. 想要了解某个 APP 使用的接口。

手机上已经有些 APP 可以进行抓包了,比如 Packet CaptureHTTP Injector ,GitHub 上看到这个 AndroidHttpCapture APP 项目。

但这些都不如 PC 端专业抓包工具 Fiddler 功能强大。

Fiddler 简介

Fiddler是一个蛮好用的抓包工具,可以将网络传输发送与接受的数据包进行截获、重发、编辑、转存等操作。也可以用来检测网络安全。

fiddler 工作原理

Fiddler是通过改写HTTP代理,让数据从它那通过,来监控并且截取到数据。当然Fiddler很屌,在打开它的那一瞬间,它就已经设置好了浏览器的代理了。当你关闭的时候,它又帮你把代理还原了。

当然,Fiddler 不仅能拦截 HTTP ,还能拦截 HTTPS(需要配置)。

Fiddler 可以通过伪造 CA 证书来欺骗浏览器和服务器。Fiddler 是个很会装逼的好东西,大概原理就是在浏览器面前 Fiddler 伪装成一个 HTTPS 服务器,而在真正的 HTTPS 服务器面前 Fiddler 又装成浏览器,从而实现解密HTTPS 数据包的目的。

Fiddler官方网站 提供了大量的帮助文档和视频教程, 是学习Fiddler的最好资料。

本文记录 Android 上使用 Fiddler 的详细配置过程。

注意:默认情况下Fiddler是不能监听Java HttpURLConnection上的HTTP请求的。原因容易理解,Fiddler能监听浏览器的HTTP请求是因为它启动一个代理服务器,浏览器通过这个代理服务器上网,但HttpURLConnection默认不使用该代理。在 Android 上使用了 HttpURLConnection 请求的都不会被抓取(如: Glide 图片库),需要特殊处理(方法见下)。

Fiddler配置

一.普通 https 抓包设置

Fiddler 不做配置,是不能抓取 HTTPS 的。如要抓取 HTTPS,需要安装 CA 证书,步骤如下:

  1. Tools –> Fiddler Options –> HTTPS

    image

  2. 勾选Decrypt HTTPS Traffic,点击OK,安装证书(会有弹窗提示)

    image

二.抓取Iphone / Android数据包

Fiddler 抓取移动端设备的数据包,只需要让 移动设备 的数据包 经过 Fiddler 的代理。

所以,Fiddler 抓包,需要 PC 与 手机同在一个局域网内(手机连接 PC 创建的热点,或 手机 PC 连接同一路由器),然后手动更改 手机的网络代理,变更为PC 上 Fiddler 的代理端口地址即可。

详细步骤如下:

  1. 打开Fidder,点击菜单栏中的 [Tools] –> [Fiddler Options],点击 [Connections] ,设置代理端口是8888, 勾选 Allow remote computers to connect, 点击OK

    Fiddler 设置

  2. 如果手机连接 PC 创建的热点,这时在 Fiddler 可以看到自己本机无线网卡的IP了(要是没有的话,重启Fiddler);如果手机与 PC 连接同一路由器,则在 Fiddler 中也可以查看 本机在局域网 IP 地址。(也可以通过在cmd 中 ipconfig 来查看设备的网络连接状况 )Fiddler 查看本机 IP 地址

  3. 设置Android设备上的代理服务器,使其连接 PC 上的 Fiddler 端口。设置 -> WLAN -> 选择网络 -> 更改代理,将上面查看的 IP 与端口 填写上后,点击确定,然后查看手机能否上网(仅限 http),如果不能上网,则检查 IP 与端口。

小米4 设置代理

  1. 在浏览器中访问网页,输入刚刚填写的代理 IP 和 端口,下载 Fiddler 的 CA 证书

证书下载

  1. 安装 CA 证书

    设置 -> 系统和备份 -> 更多设置 -> 系统安全 -> 凭据存储 -> 从存储设备安装,选择刚刚下载的 证书,然后会要求输入密码,这个密码是手机的锁屏密码(如果没锁屏密码就去设置一个),输入密码后安装成功,这时候手机可以访问 HTTPS 了。

安装 CA 证书

三.抓取 HttpURLConnection

Android 手机上一些 使用 HttpURLConnection 的数据包想要抓取,还要对 Fiddler 进行如下设置:

Fiddler -> Rules -> CustomizeRules ;

在这个函数OnBeforeResponse 的最后面添加判断

if (oSession.oRequest[“User-Agent”].indexOf(“Android”)> -1 && oSession.HTTPMethodIs(“CONNECT”)) {oSession.oResponse.headers[“Connection”] = “Keep-Alive”; }

这里的” Android”可替换为User-Agent里的其它字符,确保匹配上User-Agent就行

HttpURLConnection 抓包

在使用 Glide 时,图片一直不能拿抓包

折腾了半天后,才想起 Glide 有缓存,所以并不会去请求网络~尴尬~

Fiddler使用

简单使用

Fiddler想要抓到数据包,要确保Capture Traffic是开启,在File –> Capture Traffic。开启后再左下角会有显示,当然也可以直接点击左下角的图标来关闭/开启抓包功能。

image

Fiddler开始工作了,抓到的数据包就会显示在列表里面

Fiddler

下面总结了这些都是什么意思:

名称含义图标含义图标含义
#抓取HTTP Request的顺序,从1开始,以此递增clip_image001请求已经发往服务器响应是脚本格式
ResultHTTP状态码已从服务器下载响应结果响应是 CSS 格式
Protocol请求使用的协议,如HTTP/HTTPS/FTP等请求从断点处暂停响应是 XML 格式
Host请求地址的主机名响应从断点处暂停响应是 JSON 格式
URL请求资源的位置请求使用 HTTP 的 HEAD 方法,即响应没有内容响应是一个音频文件
Body该请求的大小请求使用 HTTP 的 POST 方法响应是一个视频文件
Caching请求的缓存过期时间或者缓存控制值请求使用 HTTP 的 CONNECT 方法,使用 HTTPS 协议建立连接隧道普通响应成功
Content-Type请求响应的类型响应是 HTML 格式服务端错误
Process发送此请求的进程:进程ID响应是一张图片会话被客户端、Fiddler 或者服务端终止
指定进程

根据需求,选择要捕获的进程

image

filters信息过滤

Fiters 是过滤请求用的,左边的窗口不断的更新,这个时候通过过滤规则,显示想要看到的请求。

Fiters

如图所示,只显示 www.baidu.com 的数据

参考

更多 Fiddler 使用,参考如下:

Fiddler 抓包工具总结

fiddler filters 使用

做开发需要抓取手机app的http/https的数据包,想看APP发出的http请求和响应是什么,这就需要抓包了,这可以得到一些不为人知的api,比如还可以干些“坏事”... 需要工具Fiddler抓包软件 Android 手机一台 一、如何使用 Fiddler2 下载完成后安装,安装过程就不贴图了。 如下图设置Fiddler 代理: 点击OK,在这里代理就设置完成,一定要重启软件配置才生效,下面是手机端的设置。 浏览器抓包和调试工具(Fiddler) 4.4.6.2 官方最新版 评分: 8.0类别: 编程辅助 大小:759KB 语言: 英文 查看详细信息 >> 二、手机端代理设置 以三星S4为例子, 1、如下图真机三星S4设置: 找到你的Wifi,必须电脑和手机处于同一个Wifi下。最好是电脑发一个Wifi出来。 长按wifi热点,选择修改网络配置。 代理设置为:手动;代理主机名为你的电脑Ip,端口就是刚才Fiddler设置的端口。 ----------------------------------------------------------------------------------------- 2、模拟器(android 2.3)设置 到这里设置完成,让我们看看我们都抓到什么东东。 -------------------------------------------------------------------------------------------------------- 我们看看微博客户端吧,获取首页内容如下: 不禁感叹,很好很强大~~~~~~~~~~~~~~~~~~~~~~~~ 提示:Fiddler可以设置过滤,可以很方便看到我们想要的Http包: Fiddler手机抓包 第一步:配置Fiddler Tools->Fiddler Options... 重启Fiddler 第二步:在手机上安装证书 用手机浏览器打开http://10.240.139.173:8888(IP是你电脑的IP,8888是Fiddler的端口) 在页面上下载FiddlerRoot certificate(文件名FiddlerRoot.cer) 我用的是uc浏览器,下载到了UCDownloads目录下,这里要注意,将FiddlerRoot.cer移动到根目录下(否则会提示未在USB存储设备中找到证书文件)。 接下去:设置->安全和隐私->从存储设备安装 (按照提示操作即可) 第三步:设置代理 打开你手机上无线,代理设置->手动 主机:10.240.139.173(你的运行Fiddler的电脑IP) 端口:8888 确定 接下去就是Fiddler的基本操作了,我们已经看到手机上的数据包了。 X-User-Agent:XOne/1.1.2(AndroidPhone;2.2Later;MI 2S/android4.1.1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值