[英]How to use Charles Proxy on the Xcode 6 (iOS 8) Simulator?
iOS 模拟器的目录似乎已更改。 它曾经在~/Library/Application\\ Support/iPhone\\ Simulator/
,现在在~/Library/Developer/CoreSimulator/Devices/
。
更新: Charles 3.9.3+有一个内置功能来配置你的 iOS 模拟器(即安装 Charles SSL 证书)。 这可以在 Charles 应用程序的帮助菜单中找到。 ( Help > SSL Proxying > Install Charles Root Certificate in iOS Simulators
)
以下适用于 Charles 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"
一些注意事项:
我刚刚通过 Xcode 7 / iOS9 模拟器测试了 Charles。 如果您遇到问题,我想补充几点:
根据查尔斯文件
iOS 模拟器应使用系统代理设置。 如果没有,请尝试退出并重新启动 iOS 模拟器。 从 Xcode 6 开始,在运行 iOS 模拟器之前,Charles 正在运行并设置为 Mac OS X 系统代理似乎很重要。
所以只需退出你的模拟器,打开查尔斯,然后再次运行应用程序。 之后,您可以跟踪您的网络呼叫。
注意:如果您退出 Charles,您的网络呼叫将失败。 因此,您需要退出模拟器并再次运行它或再次打开 Charles。
iOS 9 更新:您必须禁用 App Transport Security 才能使用 Charles!
http://www.charlesproxy.com/documentation/using-charles/ssl-certificates/
我没有在该页面上看到配置 shell 脚本。 我做了以下工作,它对我有用:
http://raptureinvenice.com/getting-the-charles-debugging-proxy-to-work-with-ios-and-genymotion/
看一下这个:
从 Charles v3.9.3 开始,帮助菜单中有一项“在 iOS 模拟器中安装 Charles CA SSL 证书”,它将自动在您的 iOS 模拟器中安装 Charles 的 SSL CA 证书。
或者,您可以更改您的代码,以便 NSURLConnection 接受任何 SSL 证书。 请参阅 Stack Overflow 上的问答: How to use NSURLConnection to connect with SSL for an untrusted cert?
您可以在此链接上查看: http : //www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/
“在 iOS 模拟器中安装 Charles 根证书”在当前版本的 CharlesProxy (3.11) 和 Xcode 7 / iOS 9 模拟器中不起作用。
相反,请使用“在移动设备或远程浏览器上安装 Charles 根证书...”选项。 这将为您提供证书的 URL。
如果您在模拟器中的 Safari 中打开此 url,您将获得安装证书的选项。
然后您仍然需要禁用应用程序传输安全。 我不明白为什么当你安装了证书时这是必要的; 我猜 CharlesProxy 没有使用足够大的密钥/签名。
iOS模拟器的步骤。
iPhone/iPad 的步骤。
转到 Charles 菜单 -> 帮助 -> SSL 代理 -> 在移动设备或远程浏览器上安装 Charles 证书 -> 选择 -> 出现以下步骤的弹出窗口 `
将您的设备配置为在192.168.0.100:8888上使用 Charles 作为其 HTTP 代理,然后浏览器到chls.pro/ssl下载并安装证书。
转到 iPhone 设置 -> Wifi -> 单击选定的 wifi -> Http 代理 -> 配置代理 -> 选择手动-> 将服务器设置为 192.168.0.100 并将端口设置为 8888 ->保存
转到 iPhone 浏览器 -> 加载chls.pro/ssl -> 它将显示在弹出窗口下方`
该网站正在尝试下载配置文件。 你想允许吗? 忽略按钮和允许按钮
单击“允许”按钮 -> 它将下载配置文件
在 Charles 开始为我修复它之后(重新)启动模拟器。
对于那些在 Xcode 9 beta 模拟器上遇到不受信任的连接问题的人:
我不知道安装脚本是否有效,但您可以通过 Safari 以与在物理设备上相同的方式安装查尔斯的证书。
需要的最后一步(当然在通过脚本或通过 Safari 安装证书之后):转到 Simluator 的设置 -> 常规 -> 关于 -> 证书信任设置 -> Charles Proxy Custom Root... -> 启用 💥
对我来说,这就是有效的。
我做了和我们在设备中做的一样的事情。
我必须在 3 个模拟器实例上执行此操作,因为 XCUI 自动化测试可以旋转 3 个。
转到 safari(模拟器)并访问 URL 后,它对我有用:
chls.pro/ssl
在我不得不在 iOS 模拟器中安装查尔斯根证书之前(查尔斯:帮助/SSLproxying)
问候
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.