我想使用Charles代理工具测试Android设备的Https调用 . 我需要查看调试应用程序的原始请求/响应内容 . 我通过在“代理设置” - > SSL选项卡下添加主机和端口来配置Charles . 当我运行应用程序时,所有SSL调用似乎都会从Charles快速消失 . 有没有人知道如何解决这个问题 . Charles文档似乎没有Android设备的信息 .
适用于Android7的
参考:How to get charles proxy work with Android 7 nougat?
From your computer, run Charles :
打开代理设置:代理 - >代理设置,代理选项卡,检查"Enable transparent HTTP proxying",并记住"Port" .
SSL代理设置:代理 - > SSL代理设置,SSL代理选项卡,选中“启用SSL代理”,然后添加 . 到地点:
In Android Phone :
配置您的手机:转到设置 - >无线和网络 - > WiFi - >连接或修改您的网络,填写计算机IP地址和端口(8888):
获取Charles SSL证书 . 从您的移动浏览器访问此网址:http://charlesproxy.com/getssl
在“命名证书”中输入您想要的任何内容
接受安全警告并安装证书 . 如果你成功安装它,那么你可能会看到这样的:在你的手机中,设置 - >安全 - >可信凭证:
完成 .
然后你可以对你的手机进行一些测试,加密的https请求将显示在Charles:
编辑 - 这个答案是针对Charles的早期版本 . 请参阅下面的@ semicircle21答案,了解v3.10.x的正确步骤 - 比这种方法更容易...... :-)
这里值得一提的是逐步说明 . 它们也应该在iOS中同样适用:
打开查尔斯
转到代理>代理设置> SSL
选中“启用SSL代理”
选择“添加位置”并输入主机名和端口(如果需要)
单击确定并确保选中该选项
从这里下载Charles证书:Charles cert >
通过电子邮件将该文件发送给自己 .
打开设备上的电子邮件,然后选择证书
单击“确定”,您将收到证书已安装的消息
然后,您应该能够在Charles中看到SSL文件 . 如果要拦截和更改值,可以使用“Map Local”工具,这非常棒:
在Charles中,转到工具> Map 本地
选择"Add entry"
输入要替换的文件的值
在“本地路径”中,选择要加载应用程序的文件
单击“确定”
确保选中该条目,然后单击“确定”
运行您的应用
您应该在“Notes”中看到您的文件加载而不是活动文件
感谢@ bkurzius的回答,此更新适用于Charles 3.10 . (原因是here)
转到代理> SSL代理设置...
转到帮助> SSL代理> Install Charles Root Certificate on a Mobile Device or Remote Browser... ,然后按照说明操作 . (使用Android的浏览器下载并安装证书 . )
Install Charles Root Certificate on a Mobile Device or Remote Browser...
看这里:
http://jaanus.com/blog/2012/02/12/debugging-http-on-an-android-phone-or-tablet-with-charles-proxy-for-fun-and-profit/
您需要将charles.crt证书安装到您的设备 .
最受欢迎的答案是完美的(有点旧但仍在工作),但我只是想提一下,因为Android N我们都可以配置你的应用程序,以便拥有差异信任SSL证书(仅用于发布,调试等) ,包括Charles SSL代理证书(如果您下载Charles证书并将.pem文件放在原始文件夹中) . 更多信息可以在这里找到:https://developer.android.com/training/articles/security-config.html
此官方的Charles文档可用于设置此:https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/
希望这有助于在您的应用项目中设置Charles,而不是在每个Android设备上 .
我想到了这个问题 . 这是因为Charles 3.7有一些Android设备的漏洞 . 一世更新到Charles 3.8 Beta版本,似乎对我来说很好 .
对于较新的模拟器,使用以下命令从命令行启动可能会有所帮助:
emulator -netdelay none -netspeed full -avd <emulator_name> -http-proxy http://<ip-address>:8888
请确保按照上面的@ User9527建议进行其余设置
对我来说,问题是查尔斯告诉我在我的代理设置中路由到的IP地址不正确 . 为了解决这个问题,我最终在终端中找到 ifconfig ,并尝试在端口 8888 尝试不同的IP地址(列在 inet 旁边)以获取当前活动连接
ifconfig
8888
inet
8 回答
适用于Android7的
参考:How to get charles proxy work with Android 7 nougat?
适用于Android7以下的Android版本
From your computer, run Charles :
打开代理设置:代理 - >代理设置,代理选项卡,检查"Enable transparent HTTP proxying",并记住"Port" .
SSL代理设置:代理 - > SSL代理设置,SSL代理选项卡,选中“启用SSL代理”,然后添加 . 到地点:
In Android Phone :
配置您的手机:转到设置 - >无线和网络 - > WiFi - >连接或修改您的网络,填写计算机IP地址和端口(8888):
获取Charles SSL证书 . 从您的移动浏览器访问此网址:http://charlesproxy.com/getssl
在“命名证书”中输入您想要的任何内容
接受安全警告并安装证书 . 如果你成功安装它,那么你可能会看到这样的:在你的手机中,设置 - >安全 - >可信凭证:
完成 .
然后你可以对你的手机进行一些测试,加密的https请求将显示在Charles:
编辑 - 这个答案是针对Charles的早期版本 . 请参阅下面的@ semicircle21答案,了解v3.10.x的正确步骤 - 比这种方法更容易...... :-)
这里值得一提的是逐步说明 . 它们也应该在iOS中同样适用:
打开查尔斯
转到代理>代理设置> SSL
选中“启用SSL代理”
选择“添加位置”并输入主机名和端口(如果需要)
单击确定并确保选中该选项
从这里下载Charles证书:Charles cert >
通过电子邮件将该文件发送给自己 .
打开设备上的电子邮件,然后选择证书
在“命名证书”中输入您想要的任何内容
单击“确定”,您将收到证书已安装的消息
然后,您应该能够在Charles中看到SSL文件 . 如果要拦截和更改值,可以使用“Map Local”工具,这非常棒:
在Charles中,转到工具> Map 本地
选择"Add entry"
输入要替换的文件的值
在“本地路径”中,选择要加载应用程序的文件
单击“确定”
确保选中该条目,然后单击“确定”
运行您的应用
您应该在“Notes”中看到您的文件加载而不是活动文件
感谢@ bkurzius的回答,此更新适用于Charles 3.10 . (原因是here)
打开查尔斯
转到代理> SSL代理设置...
选中“启用SSL代理”
选择“添加位置”并输入主机名和端口(如果需要)
单击确定并确保选中该选项
转到帮助> SSL代理>
Install Charles Root Certificate on a Mobile Device or Remote Browser...
,然后按照说明操作 . (使用Android的浏览器下载并安装证书 . )在“命名证书”中输入您想要的任何内容
单击“确定”,您将收到证书已安装的消息
看这里:
http://jaanus.com/blog/2012/02/12/debugging-http-on-an-android-phone-or-tablet-with-charles-proxy-for-fun-and-profit/
您需要将charles.crt证书安装到您的设备 .
最受欢迎的答案是完美的(有点旧但仍在工作),但我只是想提一下,因为Android N我们都可以配置你的应用程序,以便拥有差异信任SSL证书(仅用于发布,调试等) ,包括Charles SSL代理证书(如果您下载Charles证书并将.pem文件放在原始文件夹中) . 更多信息可以在这里找到:https://developer.android.com/training/articles/security-config.html
此官方的Charles文档可用于设置此:https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/
希望这有助于在您的应用项目中设置Charles,而不是在每个Android设备上 .
我想到了这个问题 . 这是因为Charles 3.7有一些Android设备的漏洞 . 一世更新到Charles 3.8 Beta版本,似乎对我来说很好 .
对于较新的模拟器,使用以下命令从命令行启动可能会有所帮助:
emulator -netdelay none -netspeed full -avd <emulator_name> -http-proxy http://<ip-address>:8888
请确保按照上面的@ User9527建议进行其余设置
对我来说,问题是查尔斯告诉我在我的代理设置中路由到的IP地址不正确 . 为了解决这个问题,我最终在终端中找到
ifconfig
,并尝试在端口8888
尝试不同的IP地址(列在inet
旁边)以获取当前活动连接