1、Charles破解版安装
安装包地址:https://pan.baidu.com/s/1caploU;
破解补丁地址:https://pan.baidu.com/s/1hrRpzda;
安装步骤:
将破解补丁包粘贴到charles的lib文件下,替换掉原来的文件:
2、charles与手机/电脑的连接
(1)charles与手机端的连接
图片.png设置端口号
手机端抓取HTTPS:
电脑端证书安装:
图片.png
弹出安装证书,点击安装,一路下一步,直到提示“导入成功”。此时证书还是不被信任的,让不信任变成信任:打开IE浏览器—>工具—>Internet选项—>内容—>证书—>把中级证书颁发机构中的charles证书导出来—>再把导出来的证书导入到受信任的根证书颁发机构中。
图片.png
图片.png
手机端证书安装:
图片.png
弹出提示框如下:
图片.png
然后手机浏览器输入如上地址:http://charlesproxy.com/getssl,安装证书:
图片.png
ios10以上系统,需要在设置->通用->关于本机,信任安装的证书:
图片.png
配置Charles,允许抓取https包:
Proxy->SSL Proxying Settings…,勾选Enable SSL Proxying,Add一个locations,通过通配符* 抓取所有域名的https。(如果想只抓取某个域名的,设置具体域名的即可)
图片.png
图片.png
图片.png
Charles里添加允许访问的IP的方法:
图片.png
图片.png
设置完成后,重新方位百度wap站点就可以抓取到https请求了:
图片.png
(2)charles与电脑端的连接
由于charles会自动配置浏览器和工具的代理设置,所以说打开工具直接就已经是抓包状态了。直接打开网页就可以了。
注意:
(1)Charles支持抓去http、https协议的请求,不支持socket。
(网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket)
(2)防火墙关掉
3、过滤网络请求
通常情况下,我们需要对网络请求进行过滤,只监控向指定目录服务器上发送的请求。对于这种需求,以下几种办法:
方法一:
在主界面的中部的 Filter 栏中填入需要过滤出来的关键字。例如我们的服务器的地址是:http://blog.csdn.net, 那么只需要在 Filter 栏中填入 csdn 即可:
方法二:
在 Charles 的菜单栏选择 “Proxy”->”Recording Settings”,然后选择 Include 栏,选择添加一个项目,然后填入需要监控的协议,主机地址,端口号。这样就可以只截取目标网站的封包了。如下图所示:
图片.png
方法三:
在想过滤的网络请求上右击,选择 “Focus”,之后在 Filter 一栏勾选上 Focussed 一项,如下图所示:
图片.png
4、模拟慢速网络
图片.png在做移动开发的时候,我们常常需要模拟慢速网络或者高延迟的网络,以测试在移动网络下,应用的表现是否正常。Charles 对此需求提供了很好的支持。在 Charles 的菜单上,选择 “Proxy”->”Throttle Setting” 项,在之后弹出的对话框中,我们可以勾选上 “Enable Throttling”,并且可以设置 Throttle Preset 的类型。如下图所示:
图片.png
5、修改网络请求地址
Charles可以方便地提供网络请求的修改和重发功能。这也可以解决我们,为了修改谋其格请求,或者反复尝试不同参数的网络请求的需求。方法是:只需要在以往的网络请求上点击右键,选择 “Edit”/点击铅笔图标,即可创建一个可编辑的网络请求。如下所示:
图片.png
我们可以修改该请求的任何信息,包括URL地址、端口、参数等,之后点击 “Execute” 即可发送该修改后的网络请求(如下图所示)。Charles 支持我们多次修改和发送该请求:
图片.png
6、 重复发送网络请求
(1)Repeat:此功能此功能对于测试同学特别有用,可以检验接口的健壮性。对于前端的价值是不需要刷新页面,只需要repeat请求,比如检验代理是否成功,修改请求后执行等。使用方法:选择请求后,右击Repeat就是重复发送一次请求。
(2)Advanced Repeat可以自定义重复次数和重复间隔,重复发送多次请求。可以来简单地测试服务器的并发处理能力,方法如下:我们在想打压的网络请求上(POST或 GET 请求均可)右击,然后选择 「Repeat Advanced」菜单项。然后在弹出的对话框中,选择打压的并发线程数以及打压次数,确定之后,即可开始打压。(iteration:迭代次数,Concurrency:并发数,repeat为时间间隔),底下的repeat delay 是重复次数:
图片.png
7、修改服务器返回内容
有些时候我们想让服务器返回一些指定的内容,方便我们调试一些特殊情况。例如列表页面为空的情况,数据异常的情况,部分耗时的网络请求超时的情况等。如果没有Charles,要服务器配合构造相应的数据显得会比较麻烦。这个时候,使用 Charles 相关的功能就可以满足我们的需求。
根据具体的需求,Charles提供了 Map 功能、 Rewrite 功能以及 Breakpoints 功能,都可以达到修改服务器返回内容的目的。这三者在功能上的差异是:
- Map功能适合长期地将某一些请求重定向到另一个网络地址或本地文件;
- Rewrite功能适合对网络请求进行一些正则替换;
- Breakpoints功能适合做一些临时性的修改;
8、Map 重定向功能
Charles 的 Map 功能分 Map Remote 和 Map Local 两种,顾名思义,Map Remote 是将指定的网络请求重定向到另一个网址请求地址,Map Local 是将指定的网络请求重定向到本地文件。
在 Charles 的菜单中,选择 “Tools”->”Map Remote” 或 “Map Local” 即可进入到相应功能的设置页面:
(1)map remote
对于Map Remote功能,我们需要分别填写网络重定向的源地址和目的地址,对于不需要限制的条件,可以留空:
图片.png
(2)map local
对于Map Local功能,我们需要填写的重定向的源地址和本地的目标文件。对于有一些复杂的网络请求结果,我们可以先使用 Charles 提供的 “Save Response…” 功能,将请求结果保存到本地(如下图所示),然后稍加修改,成为我们的目标映射文件。
方法是:
1.请求右键—save response,然后另存在自己电脑的某个位置(文件属性必须为.txt)
2.请求右键/tools—MAPlocal,然后添加你刚才保存的文件,点击OK保存
3.右键请求,选择repeat
4.重新刷新app的页面,会看到数据已经修改过来了。
5.去掉代理配置:取消勾选Tools—Maplocal即可
图片.png
9、Rewrite 功能
Map Local在使用的时候,有一个潜在的问题,就是其返回的 Http Response Header 与正常的请求并不一样。这个时候如果客户端校验了 Http Response Header 中的部分内容,就会使得该功能失效。解决办法是同时使用 Map Local 以下面提到的 Rewrite 功能,将相关的 Http 头 Rewrite 成我们希望的内容。
Rewrite功能功能适合对某一类网络请求进行一些正则替换,以达到修改结果的目的。
例如:我们的客户端有一个 API 请求是获得用户余额,而我当前的余额是 “17.06”,如下所示:
步骤是:
1.选中请求,然后在Tools—右键选择rewrite功能;
2.在弹出的提示弹窗中,选择add-rules
3.完成设置之后,右键请求,选择 repeat。然后我们就可以从 Charles 中看到,之后的 API 获得的昵称被自动 Rewrite 成了 测试测试下,如下图所示:
图片.png
图片.png
10、断点功能(Breakpoints)
上面提供的Rewrite功能最适合做批量和长期的替换,但是很多时候,我们只是想临时修改一次网络请求结果,这个时候,使用 Rewrite 功能虽然也可以达到目的,但是过于麻烦,对于临时性的修改,我们最好使用 Breakpoints 功能。
Breakpoints,当指定的网络请求发生时,Charles 会截获该请求,这个时候,我们可以在 Charles 中临时修改网络请求的返回内容。
Charles能够断到发送请求前(篡改Request)和请求后(篡改Response)。
使用断点修改请求的弊端是,如果开发设置了请求超时时间,那么修改的速度慢了往往即使返回了也没有效果,所以实际测试中使用此方法的场景并不多。
例如:
(1) 针对接口右键选择"BreakPoints",这样这个接口就被加入到断点状态了;
图片.png
(2)需要进一步修改断点的属性,可以在菜单栏"Proxy"–>"Breakpoints Settings"里进行添加删除或者修改,并且可以选择这个断点是在request还是response,还是两者都要。这里只是修改response:
图片.png
(3)刷新app界面,跳转到断点模版,这个时候你可以在对应状态情况下修改request或者response,然后点击下方按钮“Execute”。点开Edit Response界面,选择JSON格式,格式清晰,方便修改,直接在上面进行数据修改,改成你想要测试的数据,然后点击执行按钮:
图片.png
(4)再次刷新app界面,然后app返回的是新改的数据,根据返回数据测试客户端显示是否正确:
图片.png
11、设置ssl允许访问地址
图片.png12、看连接本机charle代理的ip
图片.png这里可以看到连接自己charles代理的IP,针对某些不需要的/未知用户,点击remove即可。
13、设置请求的黑名单
不想某些请求发起,直接返回404,可以用黑名单。选择Tools-Blacklist,设置如下图:
图片.png
14、缓存请求返回的内容
这个用来缓存数据,让app在没有server的时候也能跑,选择Tools->Mirror,设置如下图:
图片.png
补充内容:
1、将 Charles 设置成系统代理
之前提到,Charles 是通过将自己设置成代理服务器来完成封包截取的,所以使用 Charles 的第一步是将其设置成系统的代理服务器。
启动 Charles 后,第一次 Charles 会请求你给它设置系统代理的权限。你可以输入登录密码授予 Charles 该权限。你也可以忽略该请求,然后在需要将 Charles 设置成系统代理时,选择菜单中的 “Proxy” -> “Mac OS X Proxy” 来将 Charles 设置成系统代理。如下所示:
图片.png
之后,你就可以看到源源不断的网络请求出现在 Charles 的界面中。
需要注意的是,Chrome 和 Firefox 浏览器默认并不使用系统的代理服务器设置,而 Charles 是通过将自己设置成代理服务器来完成封包截取的,所以在默认情况下无法截取 Chrome 和 Firefox 浏览器的网络通讯内容。如果你需要截取的话,在 Chrome 中设置成使用系统的代理服务器设置即可,或者直接将代理服务器设置成 127.0.0.1:8888 也可达到相同效果。
2、反向代理
Charles 的反向代理功能允许我们将本地的端口映射到远程的另一个端口上。例如,在下图中,我将本机的 61234 端口映射到了远程(www.yuantiku.com)的80端口上了。这样,当我访问本地的 61234 端口时,实际返回的内容会由 www.yuantiku.com 的 80 端口提供:
3、设置外部代理,解决与翻墙软件的冲突
Charles 的原理是把自己设置成系统的代理服务器,但是在中国,由于工作需要,我们常常需要使用 Google 搜索,所以大部分程序员都有自己的翻墙软件,而这些软件的基本原理,也是把自己设置成系统的代理服务器,来做到透明的翻墙。
为了使得两者能够和平共处,我们可以在 Charles 的 External Proxy Settings 中,设置翻墙的代理端口以及相关信息。同时,我们也要关闭相关翻墙软件的自动设置,使其不主动修改系统代理,避免 Charles 失效。
4、获取pc ip地址
图片.png图片.png
5、通过切换host指向开发服务器的情况
通常这种情况,如果我们应用发出的是http请求,那么直接使用Charles代理到本机,本机切换host指向开发服务器IP即可。但是如果我们应用发出的是https请求,且开发服务器不提供https服务,你可以在切换host这个操作的基础上再将https请求经过Charles转换为http请求:
图片.png
开启远程请求替换->添加替换规则->from https协议 map to http 协议->OK
图片.png
我们来看下结果:已经将https请求转换为了http请求,并得到了返回结果
图片.png
6、开发服务器与线上服务器不同域名的情况
这种情况,我们同样适用情况中的Map Remote方式,将原始域名替换为开发环境的域名,如图: 将hot.browser.miui.com替换为hot-dev.browser.miui.com
图片.png
参考文章:
https://www.jianshu.com/p/fb2bdde5b498
https://blog.csdn.net/ty_hf/article/details/54575174
https://www.cnblogs.com/ceshijiagoushi/p/6812493.html
https://www.cnblogs.com/meitian/p/7157990.html
http://blog.devtang.com/2015/11/14/charles-introduction/
http://note.youdao.com/noteshare?id=3931afd4179f49c9b33725ce835a0c1c&sub=AE743FD0D723471FA3486D24D9D967DA
https://www.imooc.com/article/21829?block_id=tuijian_wz
网友评论