如何在 Xcode 6(iOS 8)模拟器上使用 Charles 代理?

看起来 iOS 模拟器的目录已经改变了。以前是 ~/Library/Application\ Support/iPhone\ Simulator/现在是 ~/Library/Developer/CoreSimulator/Devices/

68295 次浏览

更新: 查理3.9.3 + 有一个内置的功能来配置您的 iOS 模拟器(即安装 Charles SSL 证书)。这可以在 Charles 应用程序的 Help 菜单中找到。(Help > SSL Proxying > Install Charles Root Certificate in iOS Simulators)

以下内容适用于查理3.9.2:

Charles Proxy 网站下载 配置 shell 脚本,然后用下面的代码替换脚本,并在 Mac 上运行它:

#/bin/bash
install() {
if [ -f "$SQLITEDBPATH" ]; then
cp -n "$SQLITEDBPATH" "$SQLITEDBPATH.charlesbackup"
sqlite3 "$SQLITEDBPATH" <<EOF
INSERT INTO "tsettings" VALUES(X'189B6E28D1635F3A8325E1E002180DBA2C02C241',X'3123302106035504030C1A436861726C65732050726F78792053534C2050726F7879696E6731243022060355040B0C1B687474703A2F2F636861726C657370726F78792E636F6D2F73736C3111300F060355040A0C08584B3732204C74643111300F06035504070C084175636B6C616E643111300F06035504080C084175636B6C616E64310B3009060355040613024E5A',X'3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D38223F3E0A3C21444F435459504520706C697374205055424C494320222D2F2F4170706C652F2F44544420504C49535420312E302F2F454E222022687474703A2F2F7777772E6170706C652E636F6D2F445444732F50726F70657274794C6973742D312E302E647464223E0A3C706C6973742076657273696F6E3D22312E30223E0A3C61727261792F3E0A3C2F706C6973743E0A',X'3082045E30820346A003020102020101300D06092A864886F70D01010505003081913123302106035504030C1A436861726C65732050726F78792053534C2050726F7879696E6731243022060355040B0C1B687474703A2F2F636861726C657370726F78792E636F6D2F73736C3111300F060355040A0C08584B3732204C74643111300F06035504070C084175636B6C616E643111300F06035504080C084175636B6C616E64310B3009060355040613024E5A3020180F31383939313233313132303030305A170D3338303932343033313930355A3081913123302106035504030C1A436861726C65732050726F78792053534C2050726F7879696E6731243022060355040B0C1B687474703A2F2F636861726C657370726F78792E636F6D2F73736C3111300F060355040A0C08584B3732204C74643111300F06035504070C084175636B6C616E643111300F06035504080C084175636B6C616E64310B3009060355040613024E5A30820122300D06092A864886F70D01010105000382010F003082010A02820101008349587455EFB272E397A31D3B52D9B13115C93F320766D2D451117F45C40285506027079ED439CABB94D44F1AE136EB1E79BF77ABE43345AD1D436809CF9E035C439272F3CA917DCADD7FBD0E3929F1A345F0B89096130BBD116F8D3AB5655789B7B0831325BD22903F198DA6BDDA30C08DFD17CE9AB51C48555264307BCF789A2B6C48DF4ECAF3EA2C092EE737AD8F397900AC03303BFE2AE43549030A7866CB6FE9B04B9F6EC498B4E7369E99B45491BF093858A77C72F8ADC818E018D413265E39446BE514F78EB57A23AA88F630776F861A9163E04AD38EE8A5C9219D0FC23F6B9A6324455DEA6F4A6A251ECA1FA3D6288CB89FD12A2062A3A015A56F250203010001A381BC3081B9300F0603551D130101FF040530030101FF307706096086480186F842010D046A136853534C2050726F7879696E6720697320656E61626C656420696E20436861726C65732050726F78792E20506C6561736520766973697420687474703A2F2F636861726C657370726F78792E636F6D2F73736C20666F72206D6F726520696E666F726D6174696F6E2E300E0603551D0F0101FF040403020204301D0603551D0E04160414BB27F4CB2EB6DBB058101BBD803F38D208D76129300D06092A864886F70D010105050003820101000041F935F30B209E56360F7E3D9C30314A213323C47EDCEA1467600A50FFE4E8E39DFCA8C8D34463C34745FF04C870F1DF28BB772DB0CF1BCA677B70842C742BC6D5FB00559AD643C6BF2C95BD0B855A961D7D6A3EADA9C642E9A789474C4AD838C6F732D8D859548D30829DF7A32D098FE3F00147DAF08C0B37DD597184C1E27A61EA42050C73994E809013CB21E37BF84BF923BCEFEA6164FD28AB9058CCC48F1F486FC1C47EBD8A9C933F542401B11F36A003E47B141A41C7B326D18D023E11EDB445699AA44800254EA33F174FD5EB1CCCE6A09365751FF905988C06315B5575067BF65EC24CAD1A6A601846D1D2F51F1F420A2762990B044000619D1C84');
EOF
fi
}


for SQLITEDBPATH in ~/Library/Developer/CoreSimulator/Devices/*/data/Library/Keychains/TrustStore.sqlite3; do
echo $SQLITEDBPATH
install
done


echo "The Charles SSL CA Certificate has been installed for the iPhone Simulator"

有些事情需要注意:

  • 你必须在发射模拟器之前打开查尔斯。如果关闭 Charles,则网络请求将失败,直到您重新启动模拟器
  • 您将需要这样做,每次您“重置内容和设置...”在模拟器上
  • 对于 Xcode 5: 如果希望在 Xcode 5或更早版本上设置 Charles Proxy,则不需要修改原始脚本。只要从查尔斯的网站上下载然后照原样运行就行了

另一种方法是浏览到设备上的证书 http://charlesproxy.com/charles.crt

它会向你展示屏幕:

install certificate prompt screen

根据查尔斯的记录

IOS 模拟器应该使用系统代理设置。如果没有,请尝试退出并重新启动 iOS 模拟器。从 Xcode 6开始,在运行 iOS Simulator 之前,Charles 必须运行并设置为 MacOSX 系统代理。

请在此阅读

所以退出你的模拟器,打开 Charles 然后再次运行应用程序。然后你就可以追踪你的网络电话了。

注意: 如果您退出查尔斯,您的网络呼叫将会失败。所以你要么退出模拟器,重新运行它,要么再次打开查尔斯。

只是(重新)启动模拟器后,查尔斯开始为我修理它。

看看这个:

从 Charles v3.9.3开始,“帮助”菜单中有一项“安装 查尔斯 CA SSL 证书在 iOS 模拟器,这将 自动安装查尔斯的 SSL CA 证书在您的 iOS 模拟器。

或者,您可以更改您的代码,以便 NSULConnection 接受任何 SSL 证书。请在 堆栈溢出: 如何使用 NSULConnection 与 SSL 连接获得不受信任的证书?

你可以在这个链接上查看: < a href = “ http://www.charlesproxy.com/document/faqs/ssl-connect-from-inside-iphone-apps/”rel = “ nofollow norefrer”> http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/

IOS9更新: 您必须禁用应用程序传输安全使用查尔斯!

Http://www.charlesproxy.com/documentation/using-charles/ssl-certificates/

“在 iOS 模拟器中安装查尔斯根证书”在当前版本的使用 Xcode 7/iOS 9模拟器的 charlesProxy (3.11)中无法工作。

相反,使用“在移动设备或远程浏览器上安装查尔斯根证书”选项。这将为证书提供一个 URL。

如果您在模拟器中的 Safari 中打开此 URL,您将获得安装证书的选项。

然后您仍然需要禁用应用程序传输安全性。我不明白为什么安装了证书后还需要这样做,我猜 CharlesProxy 不使用足够大密钥/签名。

我刚在 Xcode 7/iOS9模拟器上测试了 Charles。如果你有困难,我想补充几点:

  • 确保“ 启用 Mac OS 代理”和“ 使用 HTTP 代理”被选中 Charles’Proxy | Proxy Settings; 并选择“ < strong > Enable Mac OS X 如果您不想每次都执行这个步骤,那么可以使用 开始查尔斯。
  • 如你的系统已设定 自动代理配置(及/或 自动代理发现) 首选项 | 网络,你需要取消它,以免查尔斯的网络 代理(HTTP)和安全 Web 代理(HTTPS)将不生效。
  • 如果您的公司需要独立于 Charles 的代理服务器,则您需要 需要手动复制查尔斯内部的设置,以免它们被查尔斯覆盖,你将无法访问互联网。请注意代理服务器 开始查尔斯之前的 URL 和端口号 Charles’Proxy 下的代理 和 安全网络代理服务器设置 | 外部 代理设置。
  • 启用 SSL 代理”,并通过查尔斯的列表添加您的端点 代理 | SSL 代理设置。
  • 在 iOS 模拟器中安装查尔斯根证书”通过查尔斯的帮助 | SSL 代理菜单。
  • 还有,确保查尔斯准备好了在你之前先开始 启动模拟器。
  • 最后,在开发期间禁用 ATS,直到我们听到更多信息 来自苹果。

对于那些在 Xcode 9测试版的模拟器上与不可靠的关系作斗争的人:

我不知道安装脚本是否有效,但是您可以通过 Safari 以与物理设备相同的方式安装 Charles 证书。

需要执行的最后一步(当然是在通过脚本或 Safari 安装证书之后) : 进入模拟器的设置-> 一般-> 关于-> 证书信任设置-> 查尔斯代理自定义根...-> 启用

对我来说,这就是成功之道。

我做了和我们在设备上一样的事。

  1. 打开 safari 并浏览 chls.pro/ssl
  2. 接受并安装证书
  3. 转到 Settings/About/Trust 证书并信任 Charles 证书。

我必须在3个模拟器实例上执行这个操作,因为 XCUI 自动化测试可以转到3。

在我去 Safari (模拟器)并访问网址之后,它对我很有用:

chls.pro/ssl

在我不得不在 iOS 模拟器中安装 Charles 根证书之前(Charles: help/SSL proxying)

问候

IOS 模拟器的步骤。

  • 安装 Charles-下载
  • 查尔斯菜单-> 代理-> 启用 Mac 代理
  • 查尔斯菜单-> 工具-> 代理-> 代理设置-> MacOS-> 检查所有的检查 盒子
  • 在 iOS 模拟器中安装 Charles 证书
  • Charles 菜单-> 帮助-> SSL 代理-> 在 iOS 中安装 Charles 证书 模拟器
  • 在 iOS 模拟器中启用 Charles 证书
  • IOS 模拟器设置-> 常规-> 关于-> 证书信任设置-> 开关 安强
  • 如果流量没有出现,在模拟器前运行查尔斯

IPhone/iPad 的步骤。

  • 打开桌面 Charles 应用程序(Mac/Windows)
  • 后台查尔斯菜单-> 帮助-> SSL 代理-> 在移动设备或远程浏览器上安装查尔斯证书-> 选择-> 弹出窗口显示如下步骤 `

    将您的设备配置为使用 Charles 作为其 HTTP 代理 192.168.0.100:8888 ,然后浏览器到 Chls.pro/ssl下载并安装证书。

  • Goto iPhone 设置-> Wifi-> 点击选择的 Wifi-> Http 代理-> 配置代理-> 选择 手册-> Give server as 192.168.0.100 and port as 8888-> 保存

  • Goto iPhone 浏览器-> 载入 Chls.pro/ssl-> 它会显示在弹出窗口下面 `

    该网站正试图下载配置文件。是否允许这样做? 忽略按钮和 允许按钮

  • 单击 允许按钮-> 它将下载配置文件

  • Goto iPhone 设置-> 常规-> 配置文件-> 下载配置文件-> 选择查尔斯代理配置文件-> 安装
  • Goto iPhone 设置-> 常规-> 关于-> 证书信任设置-> 启动-Charles 代理 CA 证书
  • 现在我们可以在桌面查尔斯应用程序中追踪 iPhone 应用程序的通话