Charles是一款非常好用的抓包工具,通常使用它来进行APP开发抓包调试,尤其是HTTPS请求。

一、安装Charles

  去官网(https://www.charlesproxy.com/)下载软件并安装。

  安装完毕后,开启系统代理(本测试在windows环境进行),菜单->Proxy->Windows Proxy前面打钩,就开启了windows系统代理,可以看到系统的http请求。

  windows检测是否开启系统代理,IE->工具->Internet 选项->连接->局域网设置->为 LAN 使用代理服务器->高级,如图1.1所示。

图1.1 查看windows系统代理

  如果chrome和firefox请求没有被抓包,只需要将其设置成系统代理,或直接手动设置代理地址:127.0.0.1:8888。  

二、请求过滤

  当只需要观察目标请求数据时,可以过滤其他请求数据。

1、设置方法一: Proxy->Recording Settings->Include,点击Add添加需要观测的地址即可,如图2.1所示。

图2.1 过滤网络请求设置方法一

2、设置方法二:在Sequence界面中输入Filter地址,如图2.2所示。

3、设置方法三:临时过滤,右击需要观察的请求,选择Focus,然后在Sequence界面右侧勾选Focused单选框,即可临时过滤观察请求,如图2.2所示。

图2.2 过滤网络请求设置方法二、三

三、抓取APP请求数据

  要抓取APP请求数据,必须让APP使用与charles所在pc同一网段的网络,让APP请求经过charles代理。

1、开启并设置APP代理

  操作步骤:

  1) 开启charles代理,设置:Proxy->Proxy Sesstings->Proxied,设置Port=8888,并选择"Enable transparent HTTP proxying"单选框,开启透明代理。

  2) 设置APP代理,在对应wifi中设置代理,地址为charles所在pc的ip地址,端口为8888。

  开启后,即可抓取APP的http请求。

2、抓取APP的https请求

  在文章《HTTPS到底是个什么鬼?》中,我们已经分析了https的相关资料,https存在的目的就是为了保障通讯数据的隐私性。那么需要抓取https数据,必须安装charles的CA证书,让charles在https交互中起到中间人监听的目的。

  操作步骤:选择Help->SSL Proxying->Install Charles Root Certificate on a Mobile Device or Remote Browser,看到弹出如图3.1对话框。 

图3.1 安装APP之ca证书

  根据提示好像需要设置APP的代理为192.168.155.1:8888,然实际经笔者多次尝试,发现此步骤不需要修改APP的代理(仍为之前的APP代理地址),根据提示修改代理后反而无法打开页面。然后APP浏览器访问地址:chls.pro/ssl,根据提示下载安装ca证书即可,如图3.2所示。 

图3.2 app端安装ssl证书

  安装完毕后,charles默认并不截取https内容,在需要截取的https请求上右击,选择SSL Proxy菜单,即可截取https请求。

3、抓取pc的https请求

  选择Help->SSL Proxying->Install Charles Root Certificate,下载安装证书即可。     

四、进行网络调试

1、模拟慢速网络环境

  有时候需要测试APP在慢网速情况下的表现,刚好charles提供了此功能。点击Proxy->Throttle Sessing选项,勾选上Enable Throttling选项,下方可以选择需要模拟的网速,包含常见的3G和4G,如图4.1所示。

图4.1 设置慢速网络环境

2、修改请求参数

  chales提供了调试工具,可以修改请求参数,在Sequence视图下,选择需要修改的请求,点击Edit即可,如图4.2所示。

图4.2 修改请求参数

3、简单对服务器接口进行压力测试

  charles提供了多线程并发发起请求,可以简单测试服务器接口的并发表现。开启方法,右击需要发送的请求,选择Repeat Advanced,设置并发线程数以及每个线程执行的次数即可,如图4.3所示。

图4.3 设置并发请求

4、修改服务器响应内容

  charles提供了Map、Rewrite和Beakpoints来调试修改服务器响应内容,这三个功能都可以修改服务器响应的内容,他们区别是:① Map功能适合长期调试修改某一接口到某地址(网络文件或本地文件),可以直接按要求事先指定文件内容;② Rewrite功能可以对网络请求进行一些正则替换,适合相同正则处理多个同类请求;③ Breakpoints功能可以进行临时断点调试,允许求改请求和响应内容。

1) Map功能  

  右键请求,可以看到有Map Local和Map Remote,Map Local可以将请求指定到本地文件,Map Remote可以将请求指定到远程文件地址。可以使用右键->Save Response来迅速保存请求响应,然后可以对响应内容进行修改,其中Map Local设置如图4.4所示。

图4.4 Map Local功能设置

2) Rewrite功能

  可以实现设置Rewrite规则,然后再对需要的请求开启Rewrite替换。设置Rewrite规则步骤,Tools->Rewrite Settings,勾选Enable Rewrite选项,具体设置界面如图4.5所示。

图4.5 Rewrite规则配置界面

  然后对需要进行Rewrite的请求,只需开启就行,开启步骤如图4.6所示。

图4.6 对某个请求开启Rewrite功能

3) Breakpoints功能

  使用Breakpoints可以临时调试请求,允许修改请求和响应参数,对于需要开启断点调试的请求,右键勾选Breakpoints选项即可,使用界面如图4.7所示。

图4.7 开启Breakpoints功能 

五、常见问题

1) APP已安装charles证书,抓取https请求时,显示"unknown",如图5.1所示。

图5.1 APP抓取https显示"unknown"错误

  解决:APP未设置证书信任,“通用->关于本机->证书信任设置->CA勾选”即可。

使用Charles抓取APP之HTTPS请求的更多相关文章

  1. charles 抓取app端 https 请求

    测试需要抓取app的https请求链接,百度了一下教程,能设置的都设置成功了,但就是抓取不成功,显示如下图 无奈之下还是用谷歌搜索了下(网速极慢),但是庆幸的找到了问题的答案,原因还是手机设置的问 打 ...

  2. charles 抓取app https 请求

    测试需要抓取app的https请求链接,百度了一下教程,能设置的都设置成功了,但就是抓取不成功,显示如下图 无奈之下还是用谷歌搜索了下(网速极慢),但是庆幸的找到了问题的答案,原因还是手机设置的问 打 ...

  3. charles 抓取eclipse中的请求

    charles抓取eclipse中的请求 有时候,想要监测eclipse中发送get获取post请求,一样可以使用代理方式: 1.eclipse代码设置 代码中添加,可以就写在主函数中,然后再调用请求 ...

  4. 使用Charles对Android App的https请求进行抓包

    本文背景 公司新项目要求抓取目前市面上一些热门App的数据,经过研究发现很多App的网络请求都使用https进行数据传输,这样问题就来了,http使用明文传输所有请求都能拦截到,而https请求无法拦 ...

  5. anyproxy学习1-windows平台安装和抓手机app上https请求

    前言 做接口测试肯定离不开抓包,目前比较流行的抓包工具是fiddler和charles,相信并不陌生.这里介绍一个阿里公司研发的一个抓包神器,只需打开web页面,就能抓到手机app上的http和htt ...

  6. 使用 Charles 抓取 App 网络请求

    最近开发App的时候需要用到大量其他应用的数据,但接口不公开,所以想到了抓取.差不多要读到5W的用户数据,采用的是找到数据接口,然后不停发请求的方式.用到的抓取工具是Charles,本文讲解的应用是W ...

  7. Charles 安装证书后依旧抓取不到https请求的解决方案

    1.打开charles——>help——>SSL proxying——>Install Charles Root Certificate 证书安装后,抓取https的包 2.查看Pr ...

  8. Android 7.0解决抓取不到https请求的问题

    问题:Android7.0系统,使用fiddler不能抓取https请求 解决方法:  1.在源码res目录下新建xml目录,增加network_security_config.xml文件 (工程名/ ...

  9. Mac上Charles抓包iOS的https请求

    介绍一款抓包工具,一般我在windows下使用Fiddler抓包,Fiddler使用教程这里就不讲了,重点介绍使用mac时的抓包工具----Charles. 进入官网 :Charles官网地址官网下载 ...

随机推荐

  1. Ubuntu 18.04学习笔记

    命令行快捷键 https://blog.csdn.net/wanlhr/article/details/80926804 Ubuntu18.04使用vi命令修改文件并保存 vi /opt/teamvi ...

  2. sbb指令

    sbb是带借位减法指令,它利用了CF位上记录的借位值. 指令格式:sbb 操作对象1,操作对象2 功能:操作对象1=操作对象1-操作对象2-CF 比如指令sbb ax,bx实现的功能是: (ax)=( ...

  3. pandas 导入导出

    pandas可以读取与存取的资料格式有很多种,像csv.excel.json.html与pickle等… 1.读取csv import pandas as pd #加载模块 #读取csv data = ...

  4. 网络虚拟化技术(二): TUN/TAP MACVLAN MACVTAP (转)

    网络虚拟化技术(二): TUN/TAP MACVLAN MACVTAP 27 March 2013 TUN 设备 TUN 设备是一种虚拟网络设备,通过此设备,程序可以方便得模拟网络行为.先来看看物理设 ...

  5. git stash错误小记

    git出错小记 想要push代码,我们经常这样做. 1.查看状态 git status 2.隐藏本地编辑的新内容 git stash 3.拉远程的代码 git pull 这一步操作有的时候会报错,没有 ...

  6. JS基础-数组的常用方法-冒泡排序

    1.数组  1.关联数组    以数字作为元素下标的数组,就是索引数组.    以字符串作为元素下标的数组,就是关联数组.  2.js的关联数组    ex:在php中       $array=[& ...

  7. Java集合:ConcurrentHashMap原理分析

    集合是编程中最常用的数据结构.而谈到并发,几乎总是离不开集合这类高级数据结构的支持.比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap).这篇文章主 ...

  8. (PMP)第10章-----项目沟通管理

    10.1 规划沟通管理 相关方的数量:(n * (n-1))/2 交互式沟通,推式沟通,拉式沟通 沟通管理计划 10.2 管理沟通 电子项目管理工具 电子沟通管理 社交媒体管理 10.3 监督沟通 B

  9. 1001. A+B Format 字符串

    题目及答案链接 https://www.liuchuo.net/archives/1888 c++ 有关 字符串 和各种类型的转换 #include <string> string a; ...

  10. Unity3D中的生命周期函数

    生命周期函数:需要继承 MonoBehaviour 类才能使用.生命周期函数全部都是由系统定义好的,系统会自动调用,且调用顺序和我们在代码里面的书写顺序无关. 常用的生命周期函数: Awake():唤 ...