使用Charles抓取APP之HTTPS请求

摘要:
Charles是一款非常好用的抓包工具,通常使用它来进行APP开发抓包调试,尤其是HTTPS请求。图2.2过滤网络请求设置方法二、三三、抓取APP请求数据要抓取APP请求数据,必须让APP使用与charles所在pc同一网段的网络,让APP请求经过charles代理。安装完毕后,charles默认并不截取https内容,在需要截取的https请求上右击,选择SSLProxy菜单,即可截取https请求。图4.7开启Breakpoints功能 五、常见问题1)APP已安装charles证书,抓取https请求时,显示"unknown",如图5.1所示。

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

一、安装Charles

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

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

windows检测是否开启系统代理,IE->工具->Internet 选项->连接->局域网设置->为 LAN 使用代理服务器->高级,如图1.1所示。使用Charles抓取APP之HTTPS请求第1张

图1.1 查看windows系统代理

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

二、请求过滤

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

1、设置方法一:Proxy->Recording Settings->Include,点击Add添加需要观测的地址即可,如图2.1所示。使用Charles抓取APP之HTTPS请求第2张

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

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

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

图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对话框。使用Charles抓取APP之HTTPS请求第4张

图3.1 安装APP之ca证书

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

使用Charles抓取APP之HTTPS请求第5张

图3.2 app端安装ssl证书

有些安卓机型可能只是下载 pem 证书,无法直接安装证书,此时需要在“设置”->“安全和隐私”->“更多安全设置”->“从 SD 卡安装”,选择刚才下载的 pem 证书安装即可。

IOS 系统要记得开启证书信任。

安装完毕后,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所示。

使用Charles抓取APP之HTTPS请求第6张

图4.1 设置慢速网络环境

2、修改请求参数

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

使用Charles抓取APP之HTTPS请求第7张

图4.2 修改请求参数

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

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

使用Charles抓取APP之HTTPS请求第8张

图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所示。

使用Charles抓取APP之HTTPS请求第9张

图4.4 Map Local功能设置

2) Rewrite功能

可以实现设置Rewrite规则,然后再对需要的请求开启Rewrite替换。设置Rewrite规则步骤,Tools->Rewrite Settings,勾选Enable Rewrite选项,具体设置界面如图4.5所示。使用Charles抓取APP之HTTPS请求第10张

图4.5 Rewrite规则配置界面

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

使用Charles抓取APP之HTTPS请求第11张

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

3) Breakpoints功能

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

使用Charles抓取APP之HTTPS请求第12张

图4.7 开启Breakpoints功能 

五、常见问题

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

使用Charles抓取APP之HTTPS请求第13张

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

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

免责声明:文章转载自《使用Charles抓取APP之HTTPS请求》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇centos 7 (应用软件)-fcitx输入法Oracle数据库的函数,存储过程,程序包,游标,触发器下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

npm和package.json那些不为常人所知的小秘密

此文已由作者黄锴授权网易云社区发布。 欢迎访问网易云社区,了解更多网易技术产品运营经验。 强大的命令功能 如果你没使用过script,那你可算是从来没手动编辑过package.json。script作为package.json里最强大的功能,它赋予你新增脚本的能力。特别是从npm@2.0.0 之后,你可以用自定义参数执行脚本。甚至有人宣言,有了npm你可...

微信支付商户申请接入信息汇总【接入教程】

微信支付(商户功能)功能介绍 微信支付(商户功能),是公众平台向有出售物品需求的公众号提供推广销售、支付收款、经营分析的整套解决方案。 商户通过自定义菜单、关键字回复等方式向订阅用户推送商品消息,用户可在微信公众号中完成选购支付的流程。商户也可以把商品网页生成二维码,张贴在线下的场景,如车站和广告海报。用户扫描后可打开商品详情,在微信中直接购买。 场景及类...

apache转发规则 + nginx location 正则匹配经典案例

0.apache的proxypass浏览器url不会变 我们想要的效果是请求http://qwyimg.haha.com.cn/......直接返回结果,而不是请求http://qwyimg.haha.com.cn/......返回一个地址,在通过这个返回的地址在去请求拿到结果 ProxyPass "/qiqiao/storage/oss/files/"...

什么是UML?

UML是统一建模语言,Unified Modeling Language的缩写 综合了面向对象的建模语言、方法和过程,是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持 可以帮助沟通与交流、辅助应用设计、文档的生成、阐释系统的结构和行为 定义了多种图形化的符号来描述软件系统部分或全部的静态结构和动态结构 包括:用例图(...

Redhat 5上OPENLDAP的安装备份和恢复

1. 安装 1.1. 安装环境 查看当前操作系统版本: [root@vmw9181-app ~]# cat /etc/issue Red Hat Enterprise Linux Server release 5.3 (Tikanga) 1.2. 安装openldap-*包 使用yum源安装openldap包 [root@vmw9181-app yum....

Android第三方推送引擎比较

所了解的第三方推送引擎有极光推送(JPush), 百度, 个推,腾讯信鸽等。根据了解,最专业的据说是极光推送,先看极光推送。 一、极光推送 https://www.jpush.cn/ 配置: 1.JPush网站创建相应包名的应用,然后网站会生成自动配置好的demo. 2.创建完毕后点击相应应用的"下载Android Example",导入Eclipse...