利用charles抓包、模拟弱网络、mock数据等等
前言
日常开发当中,经常会碰到过api交付太晚,交付质量太差导致开发调试接口报错从而引起开发暂停,又或者是在实现某些复杂的功能时,需要频繁的修改api返回报文等等;
今天就来介绍一下charles这一开发利器可以很好的满足这些需求。本文主要介绍Mac环境,对于windows环境大同小异
charles可以帮助我们做什么
- 可以在charles中手动进行网络的request发送
- 查看网络的request/response是否符合要求
- 拦截请求进行request/response的修改
- 拦截请求进行路由跳转
- 模拟不同网络环境测试
charles的安装
- 下载地址:(http://www.charlesproxy.com/download/) 下载完成之后还需破解,若不破解,使用30分钟后会自动退出
- 破解方法:破解地址
开始使用
在charles中手动进行网络request发送
比如有时候我们想对某个地址进行post操作,charles的这个功能就满足了:
打开charles后,点击一下小钢笔
抓包
HTTP抓包
手机连接wifi(wifi需确保与charles安装电脑处于同一域内),设置代理
服务器:电脑IP
端口:8888(也可在charles->Proxy菜单-Proxy Settings中设置>)
设置完成后即可实现抓包功能
HTTPS抓包
对于HTTPS请求来说,首先电脑需要安装证书。
点击charles->Help->SSL Proxying->Install Charles Root Certificae。
安装完成后打开钥匙串,选择信任证书
其次需要手机安装证书(注意安装时,手机必须连接WiFi且与电脑端是同一局域网),安装地址(chls.pro/ssh)
然后在charles中配置HTTPS,
打开charles->proxy->SSL Proxyings Settings->SSL proxying中
add一项Host为*(也可以设置为具体的host,这样这条规则只适用用配置的) Prot为443。
添加完成后即可抓取HTTPS请求
抓包拦截请求进行request/response的修改
某些场景需要根据api返回数据不同,展示不同的界面
首先在charles列表内,右键这条请求,点击Breakpoints;
完成后再拦截此请求时,会自动断点截获,然后在request和response可以修改请求和响应的数据(使用此功能需要注意网络的超时时间,比如一般api超时时间为30秒,那么需要在30秒内完成整改调试,否则会超时)
抓包拦截请求进行路由跳转
charles 提供的Map Local功能可以将请求路由到本地,Map Remote功能可以将请求路由到另外一个地址,这极大的方便了开发人员。比如在开发时API请求可以路由到本地文件,想要什么数据就改什么数据
模拟不同网络环境测试
有的时候,我们必须要在弱网络环境下测试APP的可靠度,但这一环境在日常开发中又不太容易模拟,那么charles的这一功能就非常有用处了。 需要100%丢包,还是需要改上行或者下行速度,全由你来决定!
charles抓包原理
charles
是需要在手机上安装证书,同时设置代理,那么它其实作为中间人,对客户端伪装成服务端,对服务端伪装成客户端。简单来说:
- 截获客户端的HTTPS请求,伪装成中间人客户端去向服务端发送HTTPS请求
- 接受服务端返回,用自己的证书伪装成中间人服务端向客户端发送数据内容。
本文首次发布于 孙忠良 Blog, 作者 [@sunzhongliang] , 转载请保留原文链接.