前言

作为用户,我们与各类应用程序打交道,是通过键盘、鼠标、屏幕等输入输出设备实现的。而程序之间的沟通,则是通过应用程序接口(Application Programming Interface,API)来实现的。对于一个应用而言,API 就像是一套规范和惯例,指出了其他应用要通过怎样的方式和语法,来调用它的功能或向它发出请求。

当然,API 虽然主要用于应用间的沟通,并不意味着它对用户没有作用。由于通过 API 来调用功能、获取信息,往往比通过图形界面手动操作更加便捷、更适合批量处理,很多高级用户都会主动查阅和使用 API,并将有没有 API、API 好不好用作为评判一个应用或服务质量的重要标准。

就以 iOS 上的快捷指令为例,很多较为高阶的快捷指令都会频繁用到「获取网页内容」动作,其目的正是调用相关网站的 API 来快速实现获取、更新数据的目的。

然而,并不是所有应用和网站都会「大方」地公开自己的 API。相反,出于保守数据、修墙筑篱、减轻负载等考虑,如今不公开 API 反而成为了主流选择。暂且抛开是否「违反互联网精神」等抽象话题不谈,先考虑一个现实问题:对于这类比较「抠门」的服务,如何找出 API,以便在快捷指令、命令行等场景下使用呢?

对此,一个常见的解决方案是抓包:通过截取、分析应用的网络请求,反向推断出那些未公开的 API 地址、参数和格式,从而为己所用。

下面,本文就将以全平台通用的抓包软件 Charles 为例,介绍其使用方法和抓包的常用思路。

基本介绍和定价

Charles 是一款老牌抓包软件(由于它的瓷器图标,业内也将它称之为青花瓷),支持 Windows、macOS 和 Linux。

Charles 虽然是商业软件,但授权方式是比较良心的。可能是作者考虑到了轻度使用的群体,对于未付费注册版本,只设置了每次启动有 10 秒延迟加载时间、单次只能使用 30 分钟,以及在使用过程中可能会随机出现 5 秒的弹窗提示这三个限制。除此,之外,其他功能与专业版是没有差别的。

如果长期使用下来,觉得 Charles 确实不错,可以考虑购买软件来支持一下作者,也可以给自己省去一点麻烦(个人单设备授权价格为 30 美元,教育用户有优惠)。

初次配置和安装证书

在初次下载 Charles 并安装启动之后,会出现如下所示的提示框,提示是否要安装 Charles 的代理设置程序。其作用在于将 Charles 设置为系统代理,接管系统流量。在此处选择蓝色的「Grant Privileges」再输入系统密码安装即可。