Jak korzystać z Charles Proxy na symulatorze Xcode 6 (iOS 8)?

84

Wygląda na to, że zmienił się katalog dla symulatora iOS. Kiedyś było, ~/Library/Application\ Support/iPhone\ Simulator/a teraz jest ~/Library/Developer/CoreSimulator/Devices/.

kodeperson
źródło

Odpowiedzi:

121

Aktualizacja: Charles 3.9.3+ ma wbudowaną funkcję konfiguracji symulatorów iOS (np. Instalowanie certyfikatu SSL SSL). Można to znaleźć w menu Pomoc w aplikacji Charles. ( Help > SSL Proxying > Install Charles Root Certificate in iOS Simulators)

Poniższe dotyczy Charlesa 3.9.2:

Pobierz skrypt powłoki konfiguracyjnej z witryny Charles Proxy . Następnie zamień skrypt na następujący i uruchom go na komputerze 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"

Kilka uwag:

  • musisz otworzyć Charlesa przed uruchomieniem symulatora. Jeśli zamkniesz Charlesa, żądania sieciowe będą kończyć się niepowodzeniem do momentu ponownego uruchomienia symulatora
  • trzeba będzie to zrobić za każdym razem, gdy w symulatorze „Zresetujesz zawartość i ustawienia ...”
  • Dla Xcode 5: jeśli chcesz skonfigurować Charles Proxy na Xcode 5 i wcześniejszych, nie musisz modyfikować oryginalnego skryptu. Wystarczy pobrać go ze strony internetowej Charlesa i uruchomić go tak, jak jest
kodeperson
źródło
4
Działa po restarcie symulatora.
avdyushin,
9
Twoja odpowiedź wydaje się rozwiązywać problem z żądaniem SSL. ale głównym problemem może być to, że Charles nie obsługuje żadnych żądań z symulatora iOS 8.0 / Xcode6. Czy wiesz, jak to naprawić?
aelam
1
Myślę, że skrypt został przeniesiony tutaj: charlesproxy.com/documentation/faqs/ ... (i czytając źródło wygląda na to, że został zaktualizowany w sposób, który sugerujesz)
Ian Dundas
1
Postępowałem zgodnie z tym, ale widzę błąd w terminalu - UNIQUE ograniczenie nie powiodło się: tsettings.sha1
Beta
1
Do Twojej wiadomości - zaktualizowałem tę odpowiedź, aby zawierała instrukcje pobierania Charlesa 3.9.3 z instalacją certyfikatu za pośrednictwem menu Pomoc, zamiast potrzebować skryptu.
codeperson
35

Właśnie przetestowałem Charles na symulatorze Xcode 7 / iOS9. Tylko kilka wskazówek, które chcę dodać, jeśli masz problem:

  • Upewnij się, że „ Włącz serwer proxy Mac OS ” i „ Użyj serwera proxy HTTP ” są zaznaczone w sekcji Proxy Karola | Ustawienia proxy; i opcjonalnie zaznacz „ Włącz serwer proxy Mac OS X przy starcie ”, jeśli nie chcesz wykonywać tego kroku za każdym razem, gdy uruchamiasz Charlesa.
  • Jeśli automatyczna konfiguracja serwera proxy (i / lub automatyczne wykrywanie serwera proxy ) jest ustawiona w Preferencjach systemowych | Sieć, musisz ją odznaczyć, aby serwer proxy sieci Web Charles (HTTP) i bezpieczny serwer proxy sieci Web (HTTPS) nie zadziałały.
  • Jeśli Twoja firma wymaga serwera proxy niezależnego od Charlesa, musisz ręcznie replikować ustawienia w Charles, aby nie zostały one zastąpione przez Charlesa i nie będziesz mieć dostępu do Internetu. Zanotuj adres URL serwera proxy i numery portów przed uruchomieniem Charlesa. Transkrybuj te ustawienia serwera proxy sieci Web i bezpiecznego serwera proxy sieci Web w obszarze proxy Charlesa | Ustawienia zewnętrznego serwera proxy.
  • Włącz proxy SSL ” i dodaj swój punkt końcowy do listy za pośrednictwem serwera proxy Charlesa | Ustawienia proxy SSL.
  • Zainstaluj certyfikat Charles Root w symulatorze iOS ” za pośrednictwem Pomocy Charlesa | Menu proxy SSL.
  • I tak, upewnij się, że Charles jest skonfigurowany i uruchomiony jako pierwszy, zanim uruchomisz symulator.
  • Wreszcie na razie wyłącz ATS podczas opracowywania, dopóki nie usłyszymy więcej od Apple.
Hampden123
źródło
„Wreszcie, na razie wyłącz ATS podczas programowania, dopóki nie usłyszymy więcej od Apple”. - Doskonale, brakuje innych odpowiedzi powyżej.
Mark Gibaud
Dzięki! Powinni umieścić to na stronie internetowej Charlesa!
Rudolf J
Charles obsługuje rozwiązania App Transport Security (ATS) od wersji 3.11.4.
Marián Černý
1
+1 za odznaczenie Automatycznej konfiguracji proxy . Mam plik .pac w firmowym środowisku sieciowym i przez to ruch symulatora może się nie pojawić w Charlesie.
iplus
„Upewnij się, że„ Włącz serwer proxy w systemie Mac OS ”i„ Użyj serwera proxy HTTP ”są zaznaczone w sekcji„ Proxy Karola | Ustawienia serwera proxy ”. Pomóż mi. Dzięki!
S. Matsepura
17

Według dokumentacji Karola

Symulator iOS powinien używać systemowych ustawień proxy. Jeśli tak się nie stanie, spróbuj zamknąć i ponownie uruchomić symulator iOS. Od wersji Xcode 6 wydaje się, że ważne jest, aby Charles działał i był ustawiony jako serwer proxy systemu Mac OS X przed uruchomieniem symulatora iOS.

Przeczytaj tutaj

Po prostu wyjdź z symulatora, otwórz Charlesa i ponownie uruchom aplikację. Następnie możesz śledzić swoje połączenia sieciowe.

UWAGA: Twoje połączenia sieciowe zakończą się niepowodzeniem, jeśli opuścisz Charlesa. Musisz więc wyjść z symulatora i uruchomić go ponownie lub ponownie otworzyć Charlesa.

iHulk
źródło
1
Zauważyłem, że jeśli masz ustawiony adres URL serwera proxy „automatycznie konfiguruj”, Charles Proxy nie będzie działać. Wygląda na to, że adres URL autokonfiguracji zastępuje wszelkie ręczne ustawienia serwera proxy. Usunięcie adresu URL automatycznej konfiguracji i określenie ustawień ręcznych (z poświadczeniami, w moim przypadku) pozwoliło Charlesowi na ponowną konfigurację ustawień i zadziałało ... bez ponownego uruchamiania symulatora iOS (7.1).
Sean Aitken,
12

Innym sposobem, aby to zrobić, jest przejście do certyfikatu http://charlesproxy.com/charles.crt na urządzeniu

który przedstawi Ci ekran:

ekran monitu o zainstalowanie certyfikatu

user1307434
źródło
Próbowałem tej metody, ale nie udało mi się również załadować bezpiecznej witryny podczas uruchamiania lokalnego serwera. Czy ktoś może rzucić światło na to, jak sobie z tym poradzić?
Ganesh Pandhere
1
Spróbuj skorzystać z przeglądarki Safari, aby sprawdzić, czy coś jest nie tak z certyfikatem. Aby to zrobić, kliknij symbol kłódki na swojej stronie internetowej. Okno dialogowe certyfikatu Safari . Podejrzewam, że używasz certyfikatu z podpisem własnym i musisz zainstalować certyfikat klienta na swoim komputerze. Można to osiągnąć za pomocą przeglądarki Safari i wybierając opcję Zaufaj -> „zawsze zezwalaj”.
user1307434
Musiałem to zrobić, aby pozbyć się błędów SSL Handshake.
Will Larche
2

Nie widziałem skryptu powłoki konfiguracyjnej na tej stronie. Zrobiłem następujące i zadziałało dla mnie:

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

Andrew McKinley
źródło
Ta odpowiedź jest lepsza niż @ jonsibley's. Skrypt konfiguracyjny na stronie Charlesa zniknął.
Hai Feng Kao
Myślę, że właśnie został przeniesiony tutaj: charlesproxy.com/documentation/faqs/ ...
Ian Dundas
2

Sprawdź to:

Od wersji Charles w wersji 3.9.3 w menu Pomoc znajduje się pozycja „Zainstaluj certyfikat Charles CA SSL w symulatorach iOS”, która automatycznie zainstaluje certyfikat SSL CA Charlesa w symulatorach iOS.

Alternatywnie możesz zmienić swój kod, aby NSURLConnection akceptował każdy certyfikat SSL. Zobacz pytanie i odpowiedź na temat przepełnienia stosu: Jak używać NSURLConnection do łączenia się z SSL w celu uzyskania niezaufanego certyfikatu?

Możesz to sprawdzić pod tym linkiem: http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/

atulkhatri
źródło
2

„Zainstaluj certyfikat Charles Root w symulatorach iOS” nie działa w aktualnej wersji CharlesProxy (3.11) z symulatorami Xcode 7 / iOS 9.

Zamiast tego użyj opcji „Zainstaluj certyfikat główny Charles na urządzeniu mobilnym lub zdalnej przeglądarce…”. W ten sposób otrzymasz adres URL certyfikatu.

Jeśli otworzysz ten adres URL w Safari w symulatorze, będziesz mieć możliwość zainstalowania certyfikatu.

Nadal musisz wyłączyć zabezpieczenia transportu aplikacji. Nie rozumiem, dlaczego jest to konieczne, gdy masz zainstalowany certyfikat; Wydaje mi się, że CharlesProxy nie używa wystarczająco dużych kluczy / podpisów.

JosephH
źródło
Jeśli nic więcej, certyfikat jest podpisany samodzielnie i na pewno nie będzie zgodny z wymaganiami ATS firmy Apple. Pierwszym krokiem jest podpisanie certyfikatu Charlesa przez zatwierdzony urząd certyfikacji, ale poza logistyką będzie to kosztować. Domena również musi być dostępna publicznie. Itd. Itd. Nie będzie to łatwe, jeśli w ogóle wykonalne.
Hampden123
@ Hampden123 O ile wiem, mechanizm App Transport Security firmy Apple pozwoliłby na certyfikat z podpisem własnym , o ile zostałby poprawnie zainstalowany na urządzeniu z systemem iOS jako zaufany certyfikat - stąd uważam, że Charles Proxy wymaga wyłączenia ATS z innego powodu. Obecnie nie mogę uzyskać dostępu do dokumentacji Apple ATS, aby to sprawdzić.
JosephH
Jeśli Tobie (lub komukolwiek) uda się udostępnić certyfikat z podpisem własnym urządzeniu z systemem iOS 9 bez wyłączania ATS, daj mi znać, jak to robisz. TIA!
Hampden123,
1

Po prostu (ponownie) uruchomienie symulatora po uruchomieniu Charlesa, naprawiłem to dla mnie.

lavoy
źródło
1

Dla tych, którzy borykają się z niezaufanymi połączeniami na symulatorach Xcode 9 beta:

Nie wiem, czy skrypt instalacyjny działa, czy nie, ale możesz zainstalować certyfikat Charlesa w taki sam sposób, jak na urządzeniu fizycznym - przez Safari.

Ostatni krok, który jest potrzebny (oczywiście po zainstalowaniu certyfikatu za pomocą skryptu lub przez Safari): Przejdź do ustawień Simluatora -> ogólne -> informacje -> Ustawienia zaufania certyfikatu -> Charles Proxy Custom Root ... -> włącz 💥

Kubba
źródło
1

Kroki dla symulatora iOS.

  • Zainstaluj Charles - pobierz
  • Charles Menu -> Proxy -> Enable Mac Proxy
  • Menu Charles -> Narzędzia -> Proxy -> Ustawienia proxy -> MacOS -> Zaznacz wszystkie pola wyboru
  • Zainstaluj Certyfikat Charlesa w symulatorach iOS
  • Menu Charles -> Pomoc -> Proxying SSL -> Zainstaluj Charles Ceritificate w symulatorach iOS
  • Włącz certyfikat Charles w symulatorach iOS
  • Ustawienia symulatorów iOS -> Ogólne -> Informacje -> Ustawienia zaufania certyfikatu -> Włącz
  • Jeśli nie ma ruchu, Uruchom Charlesa przed symulatorem

Kroki dla iPhone'a / iPada.

  • Otwórz aplikację Charles na komputer (Mac / Windows)
  • Idź do Charles Menu -> Pomoc -> SSL Proxying -> Zainstaluj Charles Ceritificate na urządzeniu mobilnym lub zdalnej przeglądarce -> Wybierz -> pojawi się wyskakujące okienko z poniższymi krokami.

    Skonfiguruj swoje urządzenie tak, aby używało Charlesa jako serwera proxy HTTP pod adresem 192.168.0.100:8888 , a następnie przejdź do witryny chls.pro/ssl, aby pobrać i zainstalować certyfikat.

  • Idź do ustawień iPhone'a -> Wifi -> kliknij wybrane wifi -> Http proxy -> Konfiguruj proxy -> wybierz Ręcznie -> Podaj serwer jako 192.168.0.100 i port jako 8888 -> Zapisz

  • Idź do przeglądarki iPhone'a -> Załaduj chls.pro/ssl -> Pokaże się poniżej popup `

    Witryna próbuje pobrać profil konfiguracji. Czy chcesz na to zezwolić? Ignoruj ​​przycisk i przycisk Zezwalaj

  • Kliknij przycisk Zezwól -> Pobierze profil

  • Idź do ustawień iPhone'a -> Ogólne -> Profile -> Pobrany profil -> Wybierz profil Charles Proxy -> Zainstaluj
  • Przejdź do ustawień iPhone'a -> Ogólne -> Informacje -> Ustawienia zaufania certyfikatu -> Włącz - Certyfikat Charles Proxy CA
  • Teraz możemy śledzić połączenia z aplikacji na iPhone'a w aplikacji Charles na komputerze
Yano
źródło
1
Ustawienia symulatorów iOS -> Ogólne -> Informacje -> Ustawienia zaufania certyfikatów -> Włącz to, czego potrzebowałem, dzięki!
atalayasa
0

Dla mnie to właśnie zadziałało.

Zrobiłem to samo, co w urządzeniu.

  1. Otwórz safari i przeglądaj chls.pro/ssl
  2. Zaakceptuj i zainstaluj certyfikat
  3. Przejdź do Ustawienia / Informacje / Zaufaj certyfikatom i zaufaj certyfikatowi Charlesa.

Muszę to zrobić na 3 instancjach symulatora, ponieważ testowanie automatyzacji XCUI może obrócić 3.

Saran
źródło
0

U mnie działa po przejściu na safari (symulator) i odwiedzeniu adresu URL:

chls.pro/ssl 

Zanim musiałem zainstalować certyfikat główny Charlesa w symulatorach iOS (Charles: help / SSLproxying)

pozdrowienia

A. Trejo
źródło