抓包工具Charles的使用心得
简介
Charles其实是一款代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的。该软件是用Java写的,能够在Windows,Mac,Linux上使用。开发iOS都在Mac系统上吧,安装Charles的时候要先装好Java环境。这么好的软件不是免费的,官网要好几十刀呢,我这里有一个Mac上的破解版,点击这里下载,当然不是最新版的。如果你想体验最新版,Charles是提供试用的。
Charles主要功能
- 支持SSL代理。可以截取分析SSL的请求。
- 支持流量控制。可以模拟慢速网络以及等待时间(latency)较长的请求。
- 支持AJAX调试。可以自动将json或xml数据格式化,方便查看。
- 支持AMF调试。可以将Flash Remoting 或 Flex Remoting信息格式化,方便查看。
- 支持重发网络请求,方便后端调试。
- 支持修改网络请求参数。
- 支持网络请求的截获并动态修改。
- 检查HTML,CSS和RSS内容是否符合W3C标准。
开始抓包
先看一下Charles的庐山真面目吧!

接下来要把电脑设置为代理

这样你会发现,你通过浏览器请求的网址都会出现在这里,iOS模拟器的所有的网络请求也会出现在这里。点击某一个网址后,你会发现右边会出现这个网址请求的大概信息,点击具体的请求后会出现request和response等信息

如果你发现返回的是乱码,首先看是在http请求还是https请求,如果是http请求,那么应该就是返回来的中文乱码,解决方案是找到该软件显示包内容,Contents目录下的info.plist,打开文件找到vmoption
,添加-Dfile.encoding=UTF-8
即可。

如果是https请求出现的乱码,如下图这种情况

这时候你就需要安装Charles的CA证书了,首先到去 http://www.charlesproxy.com/ssl.zip 下载CA证书文件。双击crt文件,选择总是信任就可以了,当然如果要抓取iPhone设备上的HTTPS请求,需要在iPhone上也安装一个证书,在手机浏览器输入这个网址:http://charlesproxy.com/getssl ,点击安装即可。然后你就可以告别那烦人的乱码,可以愉快地抓包了。如果这时候你还是抓不了的话,检查一下Proxy-->SSL Proxying Settings是否设置OK,设置参考下图:

抓取真机上的包
抓取真机上的数据非常的简单,首先使手机和电脑在一个局域网内,不一定非要是一个ip段,只要是同一个路由器下就可以了。按照上面说的把证书安装好,然后找到电脑的IP,你可以选择在终端输入ifconfig en0
来获取,也可以选择打开网络偏好设置来查看。


接下来打开Charles的代理设置:Proxy->Proxy Settings
,设置一下端口号,默认的是8888,这个只要不和其他程序的冲突即可,并且勾选Enable transparent HTTP proxying
。

在手机上连接上和电脑在同一局域网的网络上设置HTTP代理。端口号就是刚刚在Charles上设置的那个。

然后在手机上随便打开一个网址,这是Charles会弹出一个框让你确认是否代理,点击allow就可以了,然后你就会在Charles上发现手机上的请求了。

过滤
在 Charles 的菜单栏选择 Proxy->Recording Settings
,然后选择 Include
栏,选择Add
,然后填入需要监控的协议,主机地址,端口号,这样就达到了过滤的目的。如下图:

还有一种方法就是在一个网址上右击,选择Focus
,然后其他的请求就会被放到一个叫Other Host的文件夹里面,这样也达到了过滤的目的。

断点
断点的功能搞开发不会不知道,在Charles发起一个请求的时候,我们是可以给某个请求打一个断点的,然后来观察或者修改请求或者返回的内容,但是在这过程中药注意请求的超时时间问题。要针对某一个请求设置断点,只需要在这个请求网址右击选择Breakpoints就可以断点某一个请求了。

模拟网速慢
有时候在开发的时候我们想要模拟一下网络慢的情况,这时候Charles他是可以帮助到你的,在Proxy
->Throttle Setting
,然后选择Enable Throttling
,在Throttle Preset
下选择网络类型即可,具体设置你可以自行拿捏。

请求重定向
请求重定向的作用是什么呢?开发中一般都是测试环境,如果我们想对比一下和线上版本的区别的话,可以讲测试的请求重定向到正式环境下。在选择 Tools
->`Map Remote下:

内容替换
有时候我们会测一下请求的参数不同会带来不同的返回结果以测试是否达到业务需求,或者需要不同的返回结果来验证我们对数据的处理是否正确,这时候需要后台的同事配合,但是有了Charles,我们可以自己把控接口返回来的内容,比如数据的空与否,数据的长短等等。在Tools
->Rewrite Settings
下:

其他
Charles还有一下其他的妙用。慢慢的去发掘吧!
链接:https://www.jianshu.com/p/fdd7c681929c
抓包工具Charles的使用心得的更多相关文章
- mac端的优秀抓包工具——Charles使用
http://my.oschina.net/u/2340880/blog/508688 mac端的优秀抓包工具——Charles使用 一.简介 二.安装与使用 三.使用Charles在mac上进行抓包 ...
- 抓包工具Charles安装时需要注意的地方
最新接到一个任务,需要为app端的升级提供新的接口.以前没有搞过这个,其实搞完之后也就那样!其中有很重要的一点,就是需要用到抓包工具,进行联调测试,观看app端的数据情况. 抓包工具最常用的两个:fi ...
- 抓包工具charles使用教程指南
0x01 前言: Charles是一款抓包修改工具,相比起burp,charles具有界面简单直观,易于上手,数据请求控制容易,修改简单,抓取数据的开始暂停方便等等优势!下面来详细介绍下这款强大好用的 ...
- Mac 下抓包工具 Charles 修改特定请求
Charles 是 Mac 下常用的抓包工具,它通过将自己设置成系统的代理服务器,从而完成了抓包的工作. 同类的工具还有 fiddler 和 Wireshark,其中 fiddler 是微软公司使用 ...
- 抓包工具Charles的使用教程
参考:https://zhubangbang.com/charlesproxy 如果您是您一次使用Charles,可能对下面的感兴趣. Charles破解版免费下载和安装教程 Charles手机抓包设 ...
- postman 抓包工具charles的使用
1.直接打开charles,然后,如果有https的话,需要安装证书,然后,设置代理 2.如果不是https的,不需要设置代理,直接抓取就可以 先安装证书: 然后设置代理: ...
- Http/Https抓包工具Charles最新版破解教程(Windows|Mac)
Charles介绍 Charles是一款强大的http/https抓包工具,可以抓取各种数据请求,查看请求的头信息,请求信息,返回信息等.本文主要介绍Charles的破解过程,包括Windows平台和 ...
- 接口测试中抓包工具Charles的使用
在被测接口并没有明确的接口文档给出时,我们需要借助抓包工具来帮助测试,利用抓包工具我们几乎可以获得接口文档中能给你的一切.常见的抓包工具有Charles和Fiddler, Fiddler只能用在Win ...
- 抓包工具Charles的使用说明
Charles介绍&前期准备: Charles介绍:Charles跟fiddler是目前行业中比较常用的抓包工具,这里主要介绍Charles的使用,fiddler的使用类似. 前期准备:使用前 ...
随机推荐
- Java常考面试题(经典)
什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行的字节码文件. Java被设计 ...
- CSS杂谈(2)
opacity 属性设置元素的不透明级别. 语法 opacity: value|inherit; 值 描述 value 规定不透明度.从 0.0 (完全透明)到 1.0(完全不透明). i ...
- java----构造回文字符串java(动态规划)【手写演算残图】
问题描述 草稿解决过程 (字丑别喷) 代码实现 import java.util.Scanner; /** * Created by Admin on 2017/3/26. */ public cla ...
- Spring MVC HelloWorld入门及运行机制 (一)
完整的项目案例: springmvc.zip 介绍 SpringMVC是一款Web MVC框架. 它跟Struts框架类似,是目前主流的Web MVC框架之一. 文章通过实例来介绍SpringMVC的 ...
- 验证对Random的两个猜想
猜想1:Random.Next()产生的随机数不会有重复. 猜想2:大量级执行Random.Next(int i)分布在各个数值上的概率是均匀的. 验证猜想1 /*如果Random.Next()产生的 ...
- monkeyrunner.bat运行python脚本/命令行
http://luochunfeng163.blog.163.com/blog/static/1670092492014258914775/
- Python3中操作字符串str必须记住的几个方法
几个Python的字符串常用内建函数 1.方法:Python3 isdigit()方法 描述:Python isdigit() 方法检测字符串是否只由数字组成. 语法:str.isdigit() 参数 ...
- JavaSE: Java 5 新特性
Java5新特性 1.Java 语言 1.1 Generics 1.2 foreach 1.3 自动拆箱装箱 1.4 enum 1.5 可变参数 varargs 1.6 static import 1 ...
- 安装window 7系统----计算机经验
上期我们已经成功制作了U盘启动并且也成功进入了PE系统了,在PE微型系统中,除了简单的装系统来恢复C盘,还有什么功能你们可以使用的呢?如果这一期我没有把其他内容讲解的话,千万别乱搞,到时我可能会讲解几 ...
- LeetCode算法题-Power Of Three(Java实现-七种解法)
这是悦乐书的第204次更新,第215篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第71题(顺位题号是326).给定一个整数,写一个函数来确定它是否为3的幂.例如: 输入 ...