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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/25439756/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-31 01:59:29  来源:igfitidea点击:

How to use Charles Proxy on the Xcode 6 (iOS 8) Simulator?

iosios8xcode6ios-simulatorcharles-proxy

提问by codeperson

It seems that the directory for the iOS Simulator has changed. It used to be in ~/Library/Application\ Support/iPhone\ Simulator/and now it's in ~/Library/Developer/CoreSimulator/Devices/.

iOS 模拟器的目录似乎已更改。它曾经在~/Library/Application\ Support/iPhone\ Simulator/,现在在~/Library/Developer/CoreSimulator/Devices/

回答by codeperson

Update: Charles 3.9.3+has a built-in function to configure your iOS Simulators (i.e. installing the Charles SSL Certificate). This can be found in the Help menu within the Charles application. (Help > SSL Proxying > Install Charles Root Certificate in iOS Simulators)

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

The following applies to Charles 3.9.2:

以下适用于 Charles 3.9.2:

Download the configuration shell scriptfrom the Charles Proxy website. Then, replace the script with the following, and run it on your Mac:

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"


Some things to note:

一些注意事项:

  • you must open Charles before launching the simulator. If you close Charles, network requests will fail until you restart the simulator
  • you will need to do this every time you "Reset Content and Settings..." on the simulator
  • For Xcode 5: if you're looking to setup Charles Proxy on Xcode 5 and earlier, you don't need to modify the original script. Just download it from the Charles website and run it as-is
  • 您必须在启动模拟器之前打开 Charles。如果关闭 Charles,网络请求将失败,直到您重新启动模拟器
  • 每次在模拟器上“重置内容和设置...”时都需要执行此操作
  • 对于 Xcode 5:如果您希望在 Xcode 5 及更早版本上设置 Charles Proxy,则无需修改原始脚本。只需从 Charles 网站下载并按原样运行即可

回答by Hampden123

I just tested Charles over Xcode 7 / iOS9 simulator. Just a few pointers I want to add if you're having trouble:

我刚刚通过 Xcode 7 / iOS9 模拟器测试了 Charles。如果您遇到问题,我想补充几点:

  • Make sure "Enable Mac OS proxy" and "Use HTTP Proxy" are checked under Charles' Proxy | Proxy Settings; and optionally check "Enable Mac OS X proxy at startup" if you don't want to do this step every time you start Charles.
  • If your Automatic Proxy Configuration(and/or Auto Proxy Discovery) is set in your System Preferences | Network, you need to uncheck it lest Charles' Web Proxy (HTTP) and Secure Web Proxy (HTTPS) will not take effect.
  • If your company requires proxy server independent of Charles, you need to manually replicate the settings inside Charles lest they are overridden by Charles and you won't be able to access the internet. Make note of the proxy URL and port numbers before starting Charles. Transcribe these Web Proxyand Secure Web Proxysettings under Charles' Proxy | External Proxy Settings.
  • "Enable SSL Proxying" and add your endpoint on the list, via Charles' Proxy | SSL Proxying Settings.
  • "Install Charles Root Certificate in iOS Simulator" via Charles' Help | SSL Proxying menu.
  • And yeah, make sure Charles is setup and started first before you start the simulator.
  • Finally for now, disable ATS during development until we hear more from Apple.
  • 确保在 Charles' 代理下选中“启用 Mac OS 代理”和“使用 HTTP 代理” | 代理设置;如果您不想在每次启动 Charles 时都执行此步骤,还可以选择选中“启动时启用 Mac OS X 代理”。
  • 如果您的自动代理配置(和/或自动代理发现)设置在您的系统偏好设置 | 网络,您需要取消选中它以免 Charles 的 Web 代理 (HTTP) 和安全 Web 代理 (HTTPS) 不会生效。
  • 如果您的公司需要独立于 Charles 的代理服务器,您需要手动复制 Charles 内部的设置,以免它们被 Charles 覆盖而您将无法访问互联网。在启动 Charles 之前记下代理 URL 和端口号。在 Charles' Proxy 下转录这些Web 代理安全 Web 代理设置 | 外部代理设置。
  • 启用 SSL 代理”并通过 Charles 的代理将您的端点添加到列表中 | SSL 代理设置。
  • 在 iOS 模拟器中安装 Charles 根证书”通过 Charles 的帮助 | SSL 代理菜单。
  • 是的,请确保在启动模拟器之前先设置并启动 Charles。
  • 最后,在开发过程中禁用 ATS,直到我们听到更多来自 Apple 的消息。

回答by iHulk

According to charles documentation

根据查尔斯文件

The iOS Simulator should use the system proxy settings. If it doesn't, please try quitting and restarting the iOS Simulator. As of Xcode 6 it appears to be important that Charles is running and set as the Mac OS X system proxy before you run the iOS Simulator.

iOS 模拟器应使用系统代理设置。如果没有,请尝试退出并重新启动 iOS 模拟器。从 Xcode 6 开始,在运行 iOS 模拟器之前,Charles 正在运行并设置为 Mac OS X 系统代理似乎很重要。

Read Here

在这里阅读

So just quit your simulator, open charles and then run the app again. After that you can track your network calls.

所以只需退出你的模拟器,打开查尔斯,然后再次运行应用程序。之后,您可以跟踪您的网络呼叫。

NOTE:Your network calls will fail if you quit Charles. So you will need to either quit the simulator and run it again or open Charles again.

注意:如果您退出 Charles,您的网络呼叫将失败。因此,您需要退出模拟器并再次运行它或再次打开 Charles。

回答by user1307434

Another way to do it is to browse to the certificate http://charlesproxy.com/charles.crton the device

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

which will present you with the screen:

这将向您展示屏幕:

install certificate prompt screen

安装证书提示屏幕

回答by Paul Bruneau

Update for iOS 9: You have to disable App Transport Security to use Charles!

iOS 9 更新:您必须禁用 App Transport Security 才能使用 Charles!

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

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

回答by JosephH

The 'Install Charles Root Certificate in iOS simulators' does not work in the current version of CharlesProxy (3.11) with Xcode 7 / iOS 9 simulators.

“在 iOS 模拟器中安装 Charles 根证书”在当前版本的 CharlesProxy (3.11) 和 Xcode 7 / iOS 9 模拟器中不起作用。

Instead, use the 'Install Charles Root Certificate on a Mobile Device or Remote Browser...' option. This will give you a url for the certificate.

相反,请使用“在移动设备或远程浏览器上安装 Charles 根证书...”选项。这将为您提供证书的 URL。

If you open this url in Safari in the simulator, you will then be given the option to install the certificate.

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

You still then need to disable app transport security. I don't understand why this is necessary when you have the certificate installed; I guess CharlesProxy does not use sufficiently large keys/signatures.

然后您仍然需要禁用应用程序传输安全。我不明白为什么当你安装了证书时这是必要的;我猜 CharlesProxy 没有使用足够大的密钥/签名。

回答by Andrew McKinley

I didnt see the configuration shell script on that page. I did the following and it worked for me:

我没有在该页面上看到配置 shell 脚本。我做了以下工作,它对我有用:

http://raptureinvenice.com/getting-the-charles-debugging-proxy-to-work-with-ios-and-genymotion/

http://raptureinvenice.com/getting-the-charles-debugging-proxy-to-work-with-ios-and-genymotion/

回答by atulkhatri

Check this out:

看一下这个:

As of Charles v3.9.3 there is an item in the Help menu, "Install Charles CA SSL Certificate in iOS Simulators", which will automatically install Charles's SSL CA certificate in your iOS Simulators.

Alternatively, you can change your code so that NSURLConnection accepts any SSL certificate. Please see the question and answer on Stack Overflow: How to use NSURLConnection to connect with SSL for an untrusted cert?

从 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?

You can check it on this link:http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/

您可以在此链接上查看:http : //www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/

回答by Kubba

For those who struggling with untrusted connections on Xcode 9 beta's simulators:

对于那些在 Xcode 9 beta 模拟器上遇到不受信任的连接问题的人:

I don't know if install script works or not but you are able to install charles' cert in same way as on physical device - through Safari.

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

Last step that is needed (of course after installing certificate either through script or via Safari): Go to Simluator's settings -> general -> about -> Certificate trust settings -> Charles Proxy Custom Root... -> enable

需要的最后一步(当然在通过脚本或通过 Safari 安装证书之后):转到 Simluator 的设置 -> 常规 -> 关于 -> 证书信任设置 -> Charles Proxy Custom Root... -> 启用

回答by lavoy

Just (re)starting the Simulator after Charles starts fixed it for me.

在 Charles 开始为我修复它之后(重新)启动模拟器。