抓包工具 Fiddler4 配置移动设备抓取 Https 请求

3,430 阅读3分钟

背景

目前做的系统有一部分模块是基于微信的第三方网站,微信页面在平时的开发与测试过程中出现问题的时候,由于无法像浏览器一样可以通过控制台查看请求信息,所以定位和排查问题的时候会比较麻烦。为了解决移动端调试困难的问题,我们使用了 Fiddler4 这一款工具来抓取移动设备上的请求信息。下面主要就是介绍一下使用 Fiddler4 这款工具来抓取移动端 Https 请求。

Fiddler 介绍

  • Fiddler 是一款强大的抓包工具,它的原理是以 Web 代理服务器拦截请求的形式进行工作的。
  • 代理就是在客户端和服务器之间设置一道关卡,客户端先将请求数据发送出去后,代理服务器会将数据包进行拦截,代理服务器再冒充客户端发送数据到服务器;同理,服务器将响应数据返回,代理服务器也会将数据拦截,再返回给客户端。
  • Fiddler 可以抓取支持 Http 代理的任意程序的数据包,如果要抓取 Https 会话,要先安装证书。
  • 下载地址

配置

安装完打开软件,界面左侧即抓取到的请求列表

界面右侧即单个请求的 http 协议详情,上面为请求的 request ,下半部分是请求的 response

移动端抓包与 Https 配置

  • Tools-> Options-> Https 标签, A 区域如下图勾选

  • B 区域选中蓝色 ;ssl3;tls1.0

  • 在弹出框,将提示中的 ; ssl2; ssl3; tls1.0; tls1.1; tls1.2 复制粘贴入对话框,点击 Ok ,如下图 (这一步用于配置 Https 的解析协议,针对不同的手机,所需要的 Https 解析协议是不同的,在下文中,会给出团队几个已经测试过的机型以及对应的配置。)

C区域点击 Actions 标签,点击 ‘trust root certificate’ 在本机安装证书。

  • connections 标签如下图配置即可

  • Https 协议下,Resposebody 会需要解析,如下图点击红框区域即可解析。

手机设置

  • 手机首先得连接无线,确保手机与电脑处于同一局域网下,查看本机 ip,如本机 ip 为:10.136.16.43,手机连接无线,Wifi 设置 Http 代理为手动,服务器设置为电脑的 ip ,端口为 8888,如下图所示:

  • 打开浏览器,输入 ip:8888,如本机输入的是 10.136.16.43:8888

点击最下方的 FiddlerRoot Certificate ,按照提示安装证书,然后进入设置->关于本机->证书信任设置-》勾选 DO_NOT_TRUST_FiddlerRoot (必做),安装完证书后安装完即可抓取到手机端的请求。

MIUI 手机安装证书

  • 手机打开系统设置->更多应用
  • 找到“文件”(完全匹配)->启动
  • MIUI 系统设置->更多设置
  • 系统安全->加密与凭据
  • 从存储设备安装(证书)->选择 pem 文件
  • 填写证书名称(随便,比如叫 Charles)->凭据用途选择“VPN和应用”(似乎不能选 WLAN)

存在的问题

  • Fiddler 这个软件每次更新完配置,需要关闭软件重启软件,防止出现配置没有应用的问题。
  • 手机在设置完之后可能会遇到 “Win32Exception: The client and server cannot communicate, because they do not possess a common algorithm” 或者打开浏览器无法访问网页等问题,这个问题是由于 Fiddle4 设置的 Https 协议与手机不适配,遇到这类问题在设置 Https 协议的时候,依次填写单个协议,不要一下子全复制上,因为解析的时候可能存在优先级。通过重试查找出自己手机能够识别解析的一个 Https 协议。