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


Ответы:


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.

«Наконец, пока что отключите 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.


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

12

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

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

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


Я пробовал этот метод, но он также не смог загрузить защищенный сайт при запуске локального сервера. Может ли кто-нибудь пролить свет на то, как решить эту проблему?
Ganesh Pandhere

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

Мне пришлось это сделать, чтобы избавиться от ошибок SSL Handshake.
Will Larche


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 не использует достаточно большие ключи / подписи.


По крайней мере, сертификат является самоподписанным, и это точно не соответствует требованиям 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)

С уважением

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.