在web、app开发中经常需要通过抓包来定位页面、接口返回数据的问题。在mac系统中,charles是一款功能丰富的抓包软件。可以实现app的数据抓包。

工具:charles

附送charles的破解方法(亲测):

// Charles Proxy License
// 适用于Charles任意版本的注册码,谁还会想要使用破解版呢。
// Charles 4.2目前是最新版,可用。
Registered Name: https://zhile.io
License Key: 48891cf209c6d32bf4

charles

是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当程序连接Charles的代理访问互联网时,Charles可以监控这个程序发送和接收的所有数据。它允许一个开发者查看所有连接互联网的HTTP通信,这些包括request, response和HTTP headers (包含cookies与caching信息)。

charles功能
  1. 支持SSL代理。可以截取分析SSL的请求。
  2. 支持流量控制。可以模拟慢速网络以及等待时间(latency)较长的请求。
  3. 支持AJAX调试。可以自动将json或xml数据格式化,方便查看。
  4. 支持AMF调试。可以将Flash Remoting 或 Flex Remoting信息格式化,方便查看。
  5. 支持重发网络请求,方便后端调试。
  6. 支持修改网络请求参数。
  7. 支持网络请求的截获并动态修改。
  8. 检查HTML,CSS和RSS内容是否符合W3C标准。
charles在工作中主要使用的功能
  1. 将Charles设置成系统代理。勾选系统代理后,系统本地发出去的请求都能被截取下来。如果只抓取APP的包的话,可关闭此配置,这样不会出现太多的数据看着比较乱。

 需要注意的是,Chrome 和 Firefox 浏览器默认并不使用系统的代理服务器设置,而 Charles 是通过将自己设置成代理服务器来完成封包截取的,所以在默认情况下无法截取 Chrome 和 Firefox 浏览器的网络通讯内容。如果你需要截取的话,在 Chrome 中设置成使用系统的代理服务器设置即可,或者直接将代理服务器设置成 127.0.0.1:8888 也可达到相同效果。

  1. 截取移动设备上的网络请求包
    2.1手动重复请求(Repeat,Advanced  Repeat)
    2.2手动模拟请求(Compose)
    2.3修改网络请求内容(Compose)
  2. 过滤网络请求
  3. 代理转发
  4. 支持https请求抓包(如果配置了还是抓不到,下面有解决方案)

charles配置 http

(1)配置代理端口号

Proxy -》 Proxy Settings -》 Port,port可以随便指定,这里取默认的8888;

(2)配置手机端代理 ip;

将手机与pc端连接同一个无线网络,Android手机的网络代理一般在设置页面,点击当前连着的wifi到网络详情,在(小米8)下方手动修改代理配置,然后将你的电脑ip(例如:192.168.2.103)和第一步中配置的端口号(8888)填写到手机上即可。如下图:

查看本机IP地址:Help -> Local IP Addresses

配置手机代理:

以上的配置就可以解决http的抓包。(如何抓,设断点、map、补充)

charles配置 https

这时,当查看https的包时,会发现response是乱码,或者处于⬆️吊死的请求状态。这时候就要设置https的相关配置。

(1)添加SSL Proxiyng

具体步骤是:Proxy -》 SSL Proxiyng Settings -》勾选“Enable SSL Proxying”,并点击下方的Add,你可以这样配置:

host是你要抓的域名或者ip(这里用通配符*,表示抓去所有的https请求),port为443。

(2)下载手机端、mac端的ssl证书
mac端证书

如果是v3.10 以前的版本首先去 http://www.charlesproxy.com/ssl.zip下载ca证书,然后双击 .crt 文件,选择「总是信任」按钮,在钥匙串访问中即可看到添加成功的证书。如果是v3.10以后的在菜单中找到 Help -> SSL Proxying -> Install Charles Root Certificate.

添加好证书之后,右键证书显示简介,点击后点击信任,选则始终信任。

手机端证书

charles 执行以下步骤:Help -> SSL Proxying ->Install Charles Root Certificate on a Mobile Device…

按照图中的说明在手机浏览器中打开安装证书。

好了大功告成,现在就应该抓包电脑浏览器和手机app的数据了;

问题:
为什么有时候抓不到包?
检查一下是不是启动了代理上网,关掉重启就可以了(翻墙的)
这是笔者遇到的问题,因为笔者使用的是代理上网方式,这可能根charles的代理有所冲突,解决方法是,设置 -> 网络 -> Wifi -> 高级 -> 代理,在左侧的配置协议列表中取消勾选"自动发现代理"和“自动代理配置”。

重启charles,再尝试一下,看能否charles抓取mac的网络请求包。

最新文章

  1. Windows环境下vscode-go安装笔记
  2. 从零开始学 Java - Spring 集成 ActiveMQ 配置(二)
  3. IT关键词,发现与更新,点成线,线成面,面成体
  4. mysql5.5字符集设置的一点变化(对于中文乱码问题,需要设置mysql字符集)
  5. 整理常用的iOS第三方资源
  6. WaitAny, WaitAll 和 SignalAndWait
  7. 横屏下的ImagePickerController
  8. Environment variable ORACLE_UNQNAME not defined. Please set ORACLE_UNQNAME to database unique name. 的解决方法
  9. Codeforces Round #236 (Div. 2)
  10. Java虚拟机--字节码指令集
  11. lua协程并发下载简单测试
  12. Kendo UI开发教程(6): Kendo DataSource 概述
  13. radiobutton以及checkbox背景图片拉伸变形的问题
  14. malloc without free, what happens?
  15. C语言博客作业03--函数
  16. shell 运算符章节笔记
  17. wepy打开页面首次不显示,但是数据已经有了
  18. Asp.net core 学习笔记 ( DI 依赖注入 )
  19. hdu 5053 (2014上海网赛L题 求立方和)
  20. Git 修复 bug 切换分支时,如何保存修改过的代码(即如何保存现场)?

热门文章

  1. 16.合并两个排序的链表 Java
  2. golang的写文件测试
  3. SPOJ AMR12B 720
  4. DOM操作的性能优化
  5. oracle口令文件在windows和linux系统下的命名和位置
  6. LeetCode 无重复字符的最长子串(探索字节跳动)
  7. 框架 | Spring面试题总结
  8. Android跨进程通信AIDL服务
  9. 001-tomcat下载、解压、启动、开机启动
  10. Latex新手学习