Как использовать Charles Proxy на симуляторе Xcode 6 (iOS 8)?

Кажется, что изменился каталог для iOS Simulator. Раньше он находился в ~/Library/Application\ Support/iPhone\ Simulator/, а теперь он находился в ~/Library/Developer/CoreSimulator/Devices/.

Ответ 1

Обновление: Charles 3.9.3+ имеет встроенную функцию для настройки ваших симуляторов iOS (т.е. установки SSL-сертификата Charles). Это можно найти в меню "Справка" в приложении "Чарльз". (Help > SSL Proxying > Install Charles Root Certificate in iOS Simulators)

К Чарльзу 3.9.2 относится следующее:

Загрузите оболочку конфигурации script с веб-сайта Charles Proxy. Затем замените script следующим и запустите его на вашем 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"

Некоторые примечания:

  • вы должны открыть Чарльза перед запуском симулятора. Если вы закроете Чарльз, сетевые запросы потерпят неудачу, пока вы не перезапустите имитатор
  • вам нужно будет делать это каждый раз, когда вы "Reset Содержание и настройки..." на симуляторе
  • Для Xcode 5: если вы хотите настроить Charles Proxy на Xcode 5 и более ранних версиях, вам не нужно изменять оригинальный script. Просто скачайте его с веб-сайта Charles и запустите его как есть.

Ответ 2

Я только что испытал Чарльза над симулятором Xcode 7/iOS9. Просто несколько указателей, которые я хочу добавить, если у вас возникли проблемы:

  • Убедитесь, что " Включить прокси-сервер Mac OS" и " Использовать HTTP-прокси" отмечены Чарльз Прокси | Настройки прокси; и, возможно, проверьте " Включить Mac OS X proxy при запуске ", если вы не хотите делать этот шаг каждый раз, когда вы начать Чарльз.
  • Если в вашей системе установлена ​​ Автоматическая настройка прокси-сервера (и/или Автоматическое определение прокси-сервера) Настройки | Network, вам нужно снять флажок, чтобы веб-сайт Charles ' Прокси (HTTP) и защищенный веб-прокси (HTTPS) не вступят в силу.
  • Если вашей компании требуется прокси-сервер, независимый от Charles, вы необходимо вручную воспроизвести настройки внутри Чарльза, чтобы они не были отменены Чарльзом, и вы не сможете получить доступ к Интернету. Обратите внимание на прокси-сервер URL и номера портов перед запуском Charles. Перепишите эти веб-страницы Прокси и Безопасный веб-прокси в настройках Charles's Proxy | внешний Настройки прокси.
  • " Включить SSL-проксирование" и добавьте конечную точку в список, Прокси | Настройки SSL Proxying.
  • " Установить сертификат Charles Root в iOS Simulator" через Charles's Help | Меню SSL Proxying.
  • И да, убедитесь, что Чарльз настроен и начал сначала перед вами запустите симулятор.
  • Наконец, пока отключите ATS во время разработки, пока мы не услышим больше от Apple.

Ответ 3

Согласно документации charles

iOS Simulator должен использовать настройки прокси-сервера системы. Если это не так, попробуйте выйти и перезапустить iOS Simulator. Начиная с Xcode 6, важно, чтобы Чарльз работал и устанавливался в качестве прокси-сервера Mac OS X до запуска iOS-симулятора.

Читайте здесь

Итак, просто закройте свой симулятор, откройте charles и снова запустите приложение. После этого вы можете отслеживать свои сетевые вызовы.

ПРИМЕЧАНИЕ.. Если вы покинете Чарльз, ваши сетевые вызовы будут терпеть неудачу. Поэтому вам нужно либо выйти из симулятора, либо запустить его снова, либо снова открыть Чарльз.

Ответ 4

Другой способ сделать это - перейти к сертификату http://charlesproxy.com/charles.crt на устройстве

который представит вам экран:

install certificate prompt screen

Ответ 7

Проверьте это:

Как и в случае с Чарльзом v3.9.3, в меню "Справка" есть пункт "Установить Charles CA SSL Certificate in iOS Simulators", который будет автоматически установить сертификат CA SSL в вашем iOS Имитаторы.

В качестве альтернативы вы можете изменить свой код, чтобы NSURLConnection принимает любой сертификат SSL. См. Вопрос и ответ на Переполнение стека: Как использовать NSURLConnection для подключения к SSL для ненадежного сертификата?

Вы можете проверить его по этой ссылке: http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/

Ответ 8

"Установить Чарт Корневой сертификат в симуляторах iOS" не работает в текущей версии CharlesProxy (3.11) с симуляторами Xcode 7/iOS 9.

Вместо этого используйте параметр "Установить корневой сертификат Charles на мобильном устройстве или удаленном браузере...". Это даст вам URL-адрес сертификата.

Если вы откроете этот URL-адрес в Safari в симуляторе, вам будет предоставлена ​​возможность установить сертификат.

Вам по-прежнему необходимо отключить безопасность транспорта приложений. Я не понимаю, почему это необходимо, когда у вас установлен сертификат; Я думаю, что CharlesProxy не использует достаточно большие ключи/подписи.

Ответ 9

Just (re), начиная с Simulator после того, как Чарльз начал исправлять его для меня.

Ответ 10

Для тех, кто борется с ненадежными соединениями на бета-симуляторах Xcode 9:

Я не знаю, работает ли установка script, но вы можете установить сертификат charles так же, как на физическом устройстве, - через Safari.

Последний шаг, который необходим (конечно, после установки сертификата либо через script, либо через Safari): перейдите к настройкам Simluator → general → about → Настройки доверия сертификата → Charles Proxy Custom Root... → включить 💥