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

84

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

кодовое лицо
источник

Ответы:

121

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

Следующее относится к Charles 3.9.2:

Загрузите сценарий оболочки конфигурации с веб-сайта Charles Proxy . Затем замените сценарий следующим и запустите его на своем 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 перед запуском симулятора. Если вы закроете Charles, сетевые запросы не будут выполняться, пока вы не перезапустите симулятор.
  • вам нужно будет делать это каждый раз, когда вы выполняете «Сбросить содержимое и настройки ...» в симуляторе.
  • Для Xcode 5: если вы хотите настроить Charles Proxy на Xcode 5 и ранее, вам не нужно изменять исходный скрипт. Просто скачайте его с сайта Charles и запустите как есть
кодовое лицо
источник
4
Работает после перезапуска симулятора.
авдюшин
9
Ваш ответ, кажется, решает проблему с запросом SSL. но основная проблема может заключаться в том, что Чарльз не обрабатывает запросы от симулятора iOS 8.0 / Xcode6. Вы знаете, как это исправить?
aelam 05
1
Я думаю, что сценарий был перемещен сюда: charlesproxy.com/documentation/faqs/… (и, читая исходный текст , похоже, что он был обновлен так, как вы предлагаете)
Ян Дандас
1
Я следил за этим, но вижу ошибку в терминале - ограничение UNIQUE не удалось: tsettings.sha1
Beta
1
FYI. Я обновил этот ответ, включив в него инструкции по загрузке Charles 3.9.3, в которых установка сертификата выполняется через меню «Справка», а не требуется скрипт.
codeperson
35

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

  • Убедитесь, что « Включить прокси Mac OS » и « Использовать HTTP-прокси » отмечены в разделе Прокси Чарльза | Настройки прокси; и при желании отметьте « Включить прокси Mac OS X при запуске », если вы не хотите делать этот шаг каждый раз при запуске Charles.
  • Если ваша автоматическая конфигурация прокси (и / или автоматическое обнаружение прокси ) установлена ​​в Системных настройках | Сеть, вам нужно снять этот флажок, иначе Charles Web Proxy (HTTP) и Secure Web Proxy (HTTPS) не вступят в силу.
  • Если вашей компании требуется прокси-сервер, независимый от Charles, вам необходимо вручную скопировать настройки внутри Charles, чтобы они не были отменены Charles, и вы не смогли получить доступ к Интернету. Запишите URL-адрес прокси и номера портов перед запуском Charles. Запишите эти веб-прокси и безопасный веб-прокси. настройки разделе Charles 'Proxy | Настройки внешнего прокси.
  • « Включить SSL-прокси » и добавить свою конечную точку в список через Charles 'Proxy | Настройки SSL-прокси.
  • « Установите корневой сертификат Чарльза в симуляторе iOS » через Справку Чарльза | Меню SSL-прокси.
  • И да, убедитесь, что Чарльз настроен и запущен, прежде чем запускать симулятор.
  • Наконец, пока что отключите ATS во время разработки, пока мы не услышим больше от Apple.
Хэмпден123
источник
«Наконец, пока что отключите ATS во время разработки, пока мы не услышим больше от Apple». - Замечательно, отсутствует в других ответах выше.
Марк Жибо
Благодаря! Они должны разместить это на сайте Чарльза!
Rudolf J
Charles поддерживает безопасность транспорта приложений (ATS) начиная с версии 3.11.4.
Мариан Черный
1
+1 для снятия флажка Автоматическая настройка прокси . У меня есть файл .pac в сетевой среде компании, и трафик симулятора может не отображаться в Charles из-за этого.
iplus26
«Убедитесь, что« Включить прокси Mac OS »и« Использовать HTTP-прокси »отмечены в разделе Прокси Чарльза | Настройки прокси» Это мне поможет. Благодаря!
С. Мацепура
17

Согласно документации Чарльза

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

Прочтите здесь

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

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

iHulk
источник
1
Я обнаружил, что если у вас установлен URL-адрес прокси-сервера «автоконфигурация», Charles Proxy не будет работать. Кажется, что URL автонастройки отменяет любые ручные настройки прокси. Удаление URL автоконфигурации и указание ручных настроек (с учетными данными, в моем случае) позволило Чарльзу перенастроить настройки, и это сработало ... даже без перезапуска iOS Simulator (7.1).
Шон Эйткен
12

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

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

экран установки сертификата

user1307434
источник
Я пробовал этот метод, но он также не смог загрузить защищенный сайт при запуске локального сервера. Может ли кто-нибудь пролить свет на то, как решить эту проблему?
Ganesh Pandhere
1
Попробуйте воспользоваться браузером Safari, чтобы убедиться, что с сертификатом что-то не так. Для этого нажмите на символ замка вашего сайта. Диалоговое окно сертификата Safari . Я подозреваю, что вы используете самозаверяющий сертификат и вам необходимо установить сертификат клиента на свой компьютер. Этого можно добиться с помощью Safari, выбрав «Доверять» -> «всегда разрешать».
user1307434
Мне пришлось это сделать, чтобы избавиться от ошибок SSL Handshake.
Will Larche
4

Обновление для iOS 9: вы должны отключить безопасность транспорта приложений, чтобы использовать Charles!

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

Поль Брюно
источник
Charles поддерживает безопасность транспорта приложений (ATS) начиная с версии 3.11.4.
Мариан Черны
2

Я не видел сценария оболочки конфигурации на этой странице. Я сделал следующее, и у меня это сработало:

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

Эндрю МакКинли
источник
Этот ответ лучше, чем у @ jonsibley. Скрипт конфигурации на веб-сайте Charles больше не существует.
Хай Фэн Као,
Я думаю, что его только что переместили сюда: charlesproxy.com/documentation/faqs/…
Ян Дандас
2

Проверь это:

Начиная с Charles v3.9.3, в меню «Справка» есть пункт «Установить SSL-сертификат Charles CA в симуляторах iOS», который автоматически установит сертификат SSL CA Charles в ваших симуляторах iOS.

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

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

атулхатри
источник
2

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

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

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

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

JosephH
источник
По крайней мере, сертификат является самоподписанным, и это точно не соответствует требованиям Apple ATS. Первый шаг - подписать сертификат Чарльза уполномоченным центром сертификации, но, если не считать логистики, это будет стоить денег. Домен также должен быть доступен публике. И т.д. И т.д. Это будет непросто, если вообще возможно.
Hampden123,
@ Hampden123 Насколько мне известно, механизм Apple App Transport Security разрешил бы самоподписанный сертификат, если он был правильно установлен на устройстве iOS в качестве доверенного сертификата - поэтому я считаю, что charlesproxy нужно отключать ATS по другой причине. В настоящее время я не могу получить доступ к документации Apple ATS, чтобы проверить это.
JosephH
Если вы (или кто-либо) успешно обслуживаете самозаверяющий сертификат на устройстве iOS 9, не отключая ATS, сообщите мне, как вы это делаете. TIA!
Hampden123,
1

Просто (повторно) запуск Симулятора после того, как Чарльз запустил, исправил это для меня.

лавой
источник
1

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

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

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

Кубба
источник
1

Шаги для симулятора iOS.

  • Установить Charles - скачать
  • Charles Меню -> Прокси -> Включить прокси Mac
  • Charles Menu -> Инструменты -> Прокси -> Настройки прокси -> MacOS -> Установите все флажки
  • Установите Charles Certificate в симуляторах iOS
  • Charles Menu -> Help -> SSL Proxying -> Установить Charles Ceritificate в симуляторах iOS
  • Включить сертификат Charles в симуляторах iOS
  • Настройки симуляторов iOS -> Общие -> О программе -> Настройки доверия к сертификатам -> Включить
  • Если трафик не появляется, запустите Charles перед симулятором.

Шаги для iPhone / iPad.

  • Откройте настольное приложение Charles (Mac / Windows)
  • Перейти к Charles Menu -> Help -> SSL Proxying -> Установить Charles Ceritificate на мобильном устройстве или удаленном браузере -> Select -> появится всплывающее окно с шагами ниже `

    Настройте свое устройство на использование Charles в качестве прокси- сервера HTTP на 192.168.0.100:8888 , затем перейдите к chls.pro/ssl, чтобы загрузить и установить сертификат.

  • Перейдите в настройки iPhone -> Wi-Fi -> щелкните выбранный Wi-Fi -> Прокси Http -> Настроить прокси -> выберите Вручную -> Дать серверу 192.168.0.100 и порту 8888 -> Сохранить

  • Перейти к браузеру iPhone -> Загрузить chls.pro/ssl -> Ниже появится всплывающее окно `

    Веб-сайт пытается загрузить профиль конфигурации. Вы хотите это разрешить? Кнопку Пропустить и Разрешить кнопку

  • Нажмите кнопку Разрешить -> Профиль загрузится.

  • Перейдите в Настройки iPhone -> Общие -> Профили -> Загруженный профиль -> Выберите профиль Charles Proxy -> Установить
  • Перейдите в Настройки iPhone -> Общие -> О программе -> Настройки доверия к сертификату -> Включить - Сертификат Charles Proxy CA
  • Теперь мы можем отслеживать звонки приложений iPhone в настольном приложении Charles.
Яно
источник
1
Настройки симуляторов iOS -> Общие -> О программе -> Настройки доверия сертификатов -> Включите то, что мне было нужно, спасибо!
atalayasa 02
0

Для меня это сработало.

Я сделал то же самое, что и мы с устройством.

  1. Откройте сафари и просмотрите chls.pro/ssl
  2. Принять и установить сертификат
  3. Зайдите в Настройки / О программе / Доверяйте сертификатам и доверяйте сертификату charles.

Я должен сделать это на 3 экземплярах симулятора, так как тестирование автоматизации XCUI может вращаться на 3.

Саран
источник
0

Это работает для меня после перехода в сафари (симулятор) и посещения URL-адреса:

chls.pro/ssl 

Раньше мне приходилось устанавливать корневой сертификат charles в симуляторах iOS (Charles: help / SSLproxying)

С уважением

А. Трехо
источник