65

我想使用 Charles Web 代理在 Windows 中使用 Android 模拟器。我已经成功设置了 charles 并使用命令行启动了模拟器:

emulator -http-proxy 127.0.0.1:8888 @NexusOne

我可以看到来自 Charles 的 android 模拟器的流量,但问题是我正在开发一个使用 SSL 的实时 API,我不确定如何配置 Charles 让我播放发送的数据和已收到。我知道在 Charles 中设置 SSL 的两个区域(代理 -> 代理设置 -> SSL 和代理 -> 客户端 SSL 证书),但我找不到任何体面的文档让我可以做我想做的事. 有没有人有查尔斯的经验,或者一般的证书,谁可以解释如何实现这一点。也许证书入门也很好,因为我似乎缺乏关于为什么这如此困难的知识。

4

8 回答 8

76

要使用 charles 远程捕获 http 或 https 流量,您需要执行以下操作:

HOST - 运行 Charles 并托管代理的机器 CLIENT - 用户的机器生成您将捕获的流量

主机

  1. 安装完全许可的查尔斯版本
  2. 代理 -> 代理设置 -> 勾选“启用透明 HTTP 代理”</li>
  3. 代理 -> SSL 代理设置 -> 勾选“启用 SSL 代理”</li>
  4. 代理 -> SSL 代理设置 -> 单击添加按钮并在两个字段中输入 *
  5. 代理 -> 访问控制设置 -> 添加您的本地子网(例如:192.168.2.0/24)以授权本地网络上的所有计算机使用另一台计算机的代理
  6. 建议在 charles 中设置“自动保存工具”,这将自动保存和轮换 charles 日志。

客户端机器:

  1. 安装并永久接受/信任 charles SSL 证书
    http://www.charlesproxy.com/documentation/using-charles/ssl-certificates/
  2. 配置 IE、Firefox 和 Chrome 以使用 charles 托管代理的套接字(例如:192.168.1.100:8888)

当我对此进行测试时,我拿起了两行 Facebook HTTPS 聊天(一条是给某人的,另一条是 FROM)

如果您使用以下方式启动模拟器,您还可以通过以下方式捕获 android 模拟器流量:

emulator -avd <avd name> -http-proxy http://local_ip:8888/

其中 LOCAL_IP 是您计算机的 IP 地址,而不是 127.0.0.1,因为那是模拟电话的 IP 地址。

资料来源:http ://brakertech.com/capture-https-traffic-remotely-with-charles/

于 2012-03-30T08:07:34.973 回答
50

在 Charles 中,转到代理>>代理设置并选择 SSL 选项卡。将您的主机添加到位置列表。

例如,如果您的安全呼叫将转到https://secure.example.com,您可以输入 secure.example.com 或 *.example.com。

完成上述操作后,您可能需要右键单击 Charles 主窗口中的调用并选择 SSL 代理选项。

希望这可以帮助。

于 2010-11-12T01:55:38.337 回答
27

这里值得一提的是在 Android 设备中执行此操作的分步说明。iOS应该是一样的:

  1. 打开查尔斯
  2. 转到代理 > 代理设置 > SSL
  3. 勾选“启用 SSL 代理”</li>
  4. 选择“添加位置”并输入主机名和端口(如果需要)
  5. 单击确定并确保选中该选项
  6. 从这里下载 Charles 证书:Charles cert >
  7. 通过电子邮件将该文件发送给自己。
  8. 在您的设备上打开电子邮件并选择证书
  9. 在“命名证书”中输入您想要的任何内容
  10. 单击确定,您应该会收到一条消息,表明证书已安装

然后您应该能够在 Charles 中看到 SSL 文件。如果您想拦截和更改值,您可以使用非常棒的“Map Local”工具:

  1. 在查尔斯去工具>地图本地
  2. 选择“添加条目”
  3. 输入要替换的文件的值
  4. 在“本地路径”中选择您希望应用加载的文件
  5. 点击确定
  6. 确保已选择该条目,然后单击“确定”
  7. 运行你的应用
  8. 您应该在“注释”中看到您的文件加载而不是实时文件
于 2014-03-07T21:45:11.263 回答
23

Charles 提供 HTTPS 代理的方式发生了一些变化。

首先,证书安装选项已移至帮助菜单。

Help -> SSL Proxying -> Install Charles Root Certificate
Help -> SSL Proxying -> Install Charles Root Certificate in iOS Simulators

查尔斯 SSL 代理

其次,从 iOS 9 开始,您必须提供一个NSAppTransportSecurity选项Info.plist,如果您希望 Charles 作为中间人正常工作,您必须添加:

<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>

作为您的域的一部分,请参阅完整示例:

<key>NSExceptionDomains</key>
    <dict>
        <key>yourdomain.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSTemporaryExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
        </dict>

原因是(我猜)查尔斯在充当中间 https 服务器的人之后,在某些时候以清晰的 http 进行通信。

最后一步是在 Charles 中为此域激活 SSL 代理(右键单击域并选择启用 SSL 代理)

启用 HTTP 代理

于 2016-02-04T12:16:12.320 回答
7

您还应该从 Charles Help 菜单中单击“Install Charles CA SSL Certificates..”。在http://blog.noodlewerk.com/general/tutorial-using-charles-proxy-to-debug-https-communication-between-server-and-ios-apps/上查看更详细的说明

于 2011-12-03T13:57:11.963 回答
7

对我有用的东西——真的应该转移到 iPhone 上:

查尔斯

  1. 启用透明 Http 代理
  2. 启用 SSL 代理
  3. 右键单击传入请求并选择 SSL 代理

苹果电脑

  1. 下载 Charles CA 证书包http://www.charlesproxy.com/ssl.zip
  2. 给自己发电子邮件 charles-proxy-ssl-proxying-certificate.crt

苹果手机

  1. 在端口 8888 上为 Charles 启用 http 代理
  2. 选择并安装电子邮件附件,是的,相信它!

瞧,您现在可以查看来自 SSL 代理中添加的域的加密流量

于 2013-10-15T16:32:46.067 回答
2

此处提到的认证安装步骤是正确的https://stackoverflow.com/a/35200795/865220

但是,如果您像我一样不得不为每个新网址单独启用 SSL 代理,那么要为所有主机名启用,只需在 SSL 代理设置中的主机和端口名称列表中输入 *,如下所示:

在此处输入图像描述

于 2019-12-01T03:11:13.673 回答
0

这些东西帮助了我

  1. 转到代理-> SSL 代理设置-> 添加
  2. 在此处添加您的站点名称并提供端口号为 8888

在此处输入图像描述 在此处输入图像描述

  1. 右键单击左侧面板上的站点名称,然后选择“启用 SSL 代理” 在此处输入图像描述

希望这可以帮助那里的人。

于 2017-11-13T12:05:18.443 回答