2018 Mac下使用Charles抓包教程(解决Charles在安卓https乱码问题)

Charles破解版下载链接:https://pan.baidu.com/s/1Ej7rHDhbmLejoDNdHqMZEg  密码:kvaf

之前呢,用的是Windows,装的是fiddler,感觉很好用,换了Mac后呢,Charles好像更好用一些

Charles其实是一款代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的。该软件是用Java写的,能够在Windows,Mac,Linux上使用。开发iOS都在Mac系统上吧,安装Charles的时候要先装好Java环境。

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 ,点击安装即可。然后你就可以告别那烦人的乱码,可以愉快地抓包了。

补充:charles解决安卓https抓包乱码

1、help->ssl proxying->install charles root certificate

2、help->ssl proxying->install charles root certificate on a mobile device or remote...

3、Proxy->ssl proxying settings->add

4、在安卓手机上用浏览器打开第二步中提示的地址,安装证书

5、重启charles,重启手机网络。

抓取真机上的包

 

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

终端获取IP

网络偏好设置查看IP

接下来打开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下:

 

原文地址:http://www.jianshu.com/p/fdd7c681929c

http://blog.csdn.net/zksmss/article/details/47055073

 

 

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要连接Android设备到Charles,请按照以下步骤进行操作: 1. 首先,下载Charles证书到您的计算机上。您可以在Charles的菜单中选择 Help -> SSL Proxying -> Save Charles Root Certificate,将证书保存到您的计算机上。 2. 连接您的Android设备到计算机。您可以使用ADB工具通过USB连接设备或者通过无线连接。 3. 打开终端或命令提示符窗口,并输入以下命令来获取证书的哈希值: ``` openssl x509 -inform PEM -subject_hash_old -in charles-ssl-proxying-certificate.pem | head -1 ``` 这将返回一个哈希值。 4. 使用哈希值重命名证书文件。输入以下命令: ``` mv charles-ssl-proxying-certificate.pem <hash值>.0 ``` 将证书文件重命名为哈希值.0的形式。 5. 将重命名后的证书文件放置于Android设备的系统安装证书目录。连接设备并使用以下命令进行remount: ``` adb connect <设备IP地址> adb root adb remount ``` 然后,使用以下命令将证书文件推送到设备的证书目录: ``` adb push <hash值>.0 /system/etc/security/cacerts ``` 6. 修改Charles证书的权限。使用以下命令: ``` adb shell mount -o rw,remount /system ``` 7. 现在您可以在Android设备上设置代理。打开手机的设置,进入“无线和网络”或“WLAN”选项。长按当前连接的WiFi,并选择“修改网络”。勾选“显示高级选项”,然后选择“代理”下的“手动”。在“服务器主机名”中填写您计算机的IP地址,在“服务器端口”中填写默认的8888端口。 8. 完成以上步骤后,您的Android设备就可以通过Charles进行抓包了。 这些步骤将帮助您连接Android设备到Charles,并可以开始进行抓包分析。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值