截取HTTP接口:
1. Charles代理配置步骤:
Proxy->Proxy Settings->Proxies->Port填写默认值:8888
2. Charles 访问控制
Proxy->Access Control Settings->添加特定的IP且勾选【Prompt to allow unauthorized connections】
3种场景:
- 勾选【Prompt to allow unauthorized connections】但未配置IP,客户端A发送请求的时候,如果配置代理正确,则charles会弹窗询问是否发送给服务器如下图所示:
- 需要点击按钮【Allow】,则该客户端的ip地址会被添加,下次再访问就不会询问了
- 勾选【Prompt to allow unauthorized connections】且配置IP,会将客户端的请求转发给服务器
- 未勾选【Prompt to allow unauthorized connections】,无论是否配置IP都不发送请求到服务器
3.客户端配置代理设置
1. Windows
以chrome浏览器为例,不同浏览器不太一样
方式一 步骤:chrome浏览器输入Chrome://setting->搜索【代理】->点击【打开您计算机的代理设置】->在手动设置代理模块下,配置一些:
打开【使用代理服务器】
地址填写:127.0.0.1(因为charles是安装在本机,故可以写回环地址);如果charles在其他机子上此处就写其他机子的ip地址
端口:8888->保存之后重启charles
方式二步骤:Proxy-> windows Proxy
2. MacOS
以Mac Book Air 13.2.1为例
(1)场景1: charles客户端同MacOS客户端不在同一台电脑
步骤:设置->网络->找到连接的WIFI点击【详细信息】->选择【代理】菜单下的【网页代理】和【安全网页代理】->打开开关,服务器填写代理服务器的IP地址&端口填写8888->保存之后重启charles
(2)Charles客户端同MacOS客户端是同一台电脑,则可以使用快捷设置
步骤:菜单栏Proxy->macOsProxy
3. IOS
步骤: 设置->无线局域网->找到连接的网络并进入->HTTP代理选择手动后填写服务器和端口->保存
4.Android
步骤:设置->WLAN->找到连接的网络并进入->选择手动代理配置服务器主机名和端口->保存
上面三个步骤可以正常抓取http接口了,但是对于https的抓取会有乱码问题
截取HTTPS接口:
1. 证书下载
电脑端整体下载证书的流程:charles的菜单栏help-> SSL Proxying-> Install Charles Root Certificate->剩余步骤看各个客户端的具体步骤
1. windows证书下载
步骤:会弹窗证书框->点击【安装证书】->存储位置选择【本地计算机】->证书存储选择【将所有的证书都放入下列存储】->选择【受信任的根证书颁发机构】-> 点击确定后会看到导入成功的提示
2.MacOS证书下载
步骤:会显示【钥匙串访问】页面->选择对应的charles证书并双击->展开信任,选择始终信任
手机端整体下载证书的流程:开启charles->手机开启代理->在手机端浏览器输入chls.pro/ssl
3. IOS证书下载
步骤:进入设置,可以看到已下载描述文件->安装该文件->返回到通用->选择【关于本机】->滑到底部的证书信任设置对charles进行证书信任
2.HTTPS代理配置
步骤:Charles菜单栏->Proxy->SSL Proxying Setting->SSL Proxying下勾选【Enable SSL Proxying】添加include的location,host写*,端口写443(https的默认端口号)
总结:
1.手机连接代理后输入chls.pro/ssl无法下载证书
解决:重启charles再次输入chls.pro/ssl
2.手机安装和信任证书后,无法上网抓接口
解决:手机关掉代理并重新配置代理,如还不能解决则重启charles
3.电脑端已有证书,突然不能抓包
解决:
步骤1: 点击help-> SSL Proxying-> Install Charles Root Certificate查看证书有效期是否已过
步骤2: 如有效期已过,则点击Reset Charles Root Certificate重置证书
步骤3: 再次操作步骤1安装证书