Wie verwende ich Charles Proxy auf dem Xcode 6 (iOS 8) Simulator?

84

Es scheint, dass sich das Verzeichnis für den iOS-Simulator geändert hat. Früher war es ~/Library/Application\ Support/iPhone\ Simulator/drin und jetzt ist es drin ~/Library/Developer/CoreSimulator/Devices/.

Codeperson
quelle

Antworten:

121

Update: Charles 3.9.3+ verfügt über eine integrierte Funktion zum Konfigurieren Ihrer iOS-Simulatoren (dh Installieren des Charles SSL-Zertifikats). Dies finden Sie im Menü Hilfe in der Charles-Anwendung. ( Help > SSL Proxying > Install Charles Root Certificate in iOS Simulators)

Für Charles 3.9.2 gilt Folgendes:

Laden Sie das Konfigurations-Shell-Skript von der Charles Proxy-Website herunter . Ersetzen Sie dann das Skript durch das folgende und führen Sie es auf Ihrem Mac aus:

#/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"

Einige Dinge zu beachten:

  • Sie müssen Charles öffnen, bevor Sie den Simulator starten. Wenn Sie Charles schließen, schlagen Netzwerkanforderungen fehl, bis Sie den Simulator neu starten
  • Sie müssen dies jedes Mal tun, wenn Sie im Simulator "Inhalt und Einstellungen zurücksetzen ..."
  • Für Xcode 5: Wenn Sie Charles Proxy auf Xcode 5 und früher einrichten möchten, müssen Sie das ursprüngliche Skript nicht ändern. Laden Sie es einfach von der Charles-Website herunter und führen Sie es so aus, wie es ist
Codeperson
quelle
4
Funktioniert nach dem Neustart des Simulators.
Avdyushin
9
Ihre Antwort scheint das SSL-Anforderungsproblem zu beheben. Das Hauptproblem könnte jedoch sein, dass Charles keine Anfragen von iOS Simulator 8.0 / Xcode6 bearbeitet. Wissen Sie, wie Sie das Problem beheben können?
Aelam
1
Ich denke, das Skript wurde hierher verschoben : charlesproxy.com/documentation/faqs/… (und beim Lesen der Quelle sieht es so aus, als ob es auf die von Ihnen vorgeschlagene Weise aktualisiert wurde)
Ian Dundas
1
Ich habe dies befolgt, sehe aber einen Fehler im Terminal - EINZIGARTIGE Einschränkung fehlgeschlagen: tsettings.sha1
Beta
1
Zu Ihrer Information: Ich habe diese Antwort aktualisiert, um Anweisungen zum Herunterladen von Charles 3.9.3 mit der Zertifikatinstallation über das Hilfemenü aufzunehmen, anstatt ein Skript zu benötigen.
Codeperson
34

Ich habe Charles gerade über den Xcode 7 / iOS9-Simulator getestet. Nur ein paar Hinweise, die ich hinzufügen möchte, wenn Sie Probleme haben:

  • Stellen Sie sicher, dass " Mac OS-Proxy aktivieren " und " HTTP-Proxy verwenden " unter Charles 'Proxy | aktiviert sind Proxy-Einstellungen; und aktivieren Sie optional " Mac OS X-Proxy beim Start aktivieren ", wenn Sie diesen Schritt nicht jedes Mal ausführen möchten, wenn Sie Charles starten.
  • Wenn Ihre automatische Proxy-Konfiguration (und / oder automatische Proxy-Erkennung ) in Ihren Systemeinstellungen | festgelegt ist Netzwerk, Sie müssen es deaktivieren, damit Charles 'Webproxy (HTTP) und Secure Webproxy (HTTPS) nicht wirksam werden.
  • Wenn Ihr Unternehmen einen von Charles unabhängigen Proxyserver benötigt, müssen Sie die Einstellungen in Charles manuell replizieren, damit sie nicht von Charles überschrieben werden und Sie nicht auf das Internet zugreifen können. Notieren Sie sich die Proxy-URL und die Portnummern, bevor Sie Charles starten. Übertragen Sie diese Einstellungen für Webproxy und sicheren Webproxy unter Charles 'Proxy | Externe Proxy-Einstellungen.
  • " SSL-Proxy aktivieren " und fügen Sie Ihren Endpunkt über Charles 'Proxy | zur Liste hinzu SSL-Proxy-Einstellungen.
  • " Installieren Sie das Charles Root-Zertifikat in iOS Simulator " über Charles 'Hilfe | SSL-Proxy-Menü.
  • Und ja, stellen Sie sicher, dass Charles zuerst eingerichtet und gestartet ist, bevor Sie den Simulator starten.
  • Deaktivieren Sie ATS vorerst während der Entwicklung, bis wir mehr von Apple hören.
Hampden123
quelle
"Deaktivieren Sie ATS vorerst während der Entwicklung, bis wir mehr von Apple hören." - Genau richtig, fehlt in anderen Antworten oben.
Mark Gibaud
Vielen Dank! Sie sollten dies auf die Website von Charles setzen!
Rudolf J
Charles unterstützt App Transport Security (ATS) ab Version 3.11.4.
Marián Černý
1
+1 zum Deaktivieren der automatischen Proxy-Konfiguration . Ich habe eine .pac-Datei in der Netzwerkumgebung des Unternehmens und der Datenverkehr des Simulators wird aufgrund dessen möglicherweise nicht in Charles angezeigt.
iplus26
"Stellen Sie sicher, dass" Mac OS-Proxy aktivieren "und" HTTP-Proxy verwenden "unter Charles 'Proxy | Proxy-Einstellungen" aktiviert sind. Dies hilft mir. Vielen Dank!
S. Matsepura
17

Laut Charles Dokumentation

Der iOS-Simulator sollte die System-Proxy-Einstellungen verwenden. Wenn dies nicht der Fall ist, beenden Sie den iOS-Simulator und starten Sie ihn neu. Ab Xcode 6 scheint es wichtig zu sein, dass Charles ausgeführt und als Mac OS X-Systemproxy festgelegt wird, bevor Sie den iOS-Simulator ausführen.

Lies hier

Beenden Sie einfach Ihren Simulator, öffnen Sie Charles und führen Sie die App erneut aus. Danach können Sie Ihre Netzwerkanrufe verfolgen.

HINWEIS: Ihre Netzwerkanrufe schlagen fehl, wenn Sie Charles beenden. Sie müssen also entweder den Simulator beenden und erneut ausführen oder Charles erneut öffnen.

iHulk
quelle
1
Ich habe festgestellt, dass Charles Proxy nicht funktioniert, wenn Sie eine Proxy-URL für die automatische Konfiguration festgelegt haben. Es scheint, dass die automatisch konfigurierte URL alle manuellen Proxy-Einstellungen überschreibt. Durch Entfernen der URL für die automatische Konfiguration und Angabe manueller Einstellungen (in meinem Fall mit Anmeldeinformationen) konnte Charles die Einstellungen neu konfigurieren, und es funktionierte, ohne den iOS-Simulator (7.1) neu zu starten.
Sean Aitken
12

Eine andere Möglichkeit besteht darin, zum Zertifikat http://charlesproxy.com/charles.crt auf dem Gerät zu navigieren

welches Ihnen den Bildschirm präsentiert:

Bildschirm zur Eingabeaufforderung des Zertifikats installieren

user1307434
quelle
Ich habe diese Methode ausprobiert, aber beim Ausführen des lokalen Servers konnte auch keine sichere Site geladen werden. Kann jemand etwas Licht in den Umgang mit diesem Problem bringen?
Ganesh Pandhere
1
Versuchen Sie, mit Safari zu surfen, um festzustellen, ob mit dem Zertifikat etwas nicht stimmt. Klicken Sie dazu auf das Schlosssymbol Ihrer Website. Dialogfenster des Safari-Zertifikats . Ich vermute, dass Sie ein selbstsigniertes Zertifikat verwenden und das Client-Zertifikat auf Ihrem Computer installieren müssen. Dies kann durch Safari und durch Auswahl von "Vertrauen" -> "Immer zulassen" erreicht werden.
user1307434
Ich musste dies tun, um SSL-Handshake-Fehler zu beseitigen.
Will Larche
2

Ich habe das Konfigurations-Shell-Skript auf dieser Seite nicht gesehen. Ich habe folgendes gemacht und es hat bei mir funktioniert:

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

Andrew McKinley
quelle
Diese Antwort ist besser als die von @ jonsibley. Das Konfigurationsskript auf der Charles-Website ist nicht mehr vorhanden.
Hai Feng Kao
Ich denke, es wurde gerade hierher verschoben
Ian Dundas
2

Überprüfen Sie dies heraus:

Ab Charles v3.9.3 gibt es im Hilfemenü den Eintrag "Installieren des Charles CA SSL-Zertifikats in iOS-Simulatoren", mit dem das Charles SSL CA-Zertifikat automatisch in Ihren iOS-Simulatoren installiert wird.

Alternativ können Sie Ihren Code so ändern, dass NSURLConnection jedes SSL-Zertifikat akzeptiert. Weitere Informationen finden Sie in der Frage und Antwort zum Stapelüberlauf : Wie verwende ich NSURLConnection, um eine Verbindung mit SSL für ein nicht vertrauenswürdiges Zertifikat herzustellen?

Sie können dies unter folgendem Link überprüfen: http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/

atulkhatri
quelle
2

Das 'Charles Root-Zertifikat in iOS-Simulatoren installieren' funktioniert in der aktuellen Version von CharlesProxy (3.11) mit Xcode 7 / iOS 9-Simulatoren nicht.

Verwenden Sie stattdessen die Option "Charles Root-Zertifikat auf einem mobilen Gerät oder einem Remote-Browser installieren ...". Dadurch erhalten Sie eine URL für das Zertifikat.

Wenn Sie diese URL in Safari im Simulator öffnen, haben Sie die Möglichkeit, das Zertifikat zu installieren.

Sie müssen dann immer noch die App-Transportsicherheit deaktivieren. Ich verstehe nicht, warum dies erforderlich ist, wenn Sie das Zertifikat installiert haben. Ich denke, CharlesProxy verwendet nicht ausreichend große Schlüssel / Signaturen.

JosephH
quelle
Wenn nichts anderes, ist das Zertifikat selbst signiert und das wird mit Sicherheit nicht den ATS-Anforderungen von Apple entsprechen. Der erste Schritt besteht darin, Charles 'Zertifikat von einer sanktionierten Zertifizierungsstelle unterzeichnen zu lassen, aber abgesehen von der Logistik wird es Geld kosten. Domain muss auch öffentlich zugänglich sein. Usw. Es wird nicht einfach sein, wenn überhaupt machbar.
Hampden123
@ Hampden123 Soweit ich weiß, würde der App Transport Security-Mechanismus von Apple ein selbstsigniertes Zertifikat zulassen , solange es als vertrauenswürdiges Zertifikat korrekt auf dem iOS-Gerät installiert wurde. Aus diesem Grund muss charlesproxy aus einem anderen Grund ATS deaktivieren. Ich kann derzeit anscheinend nicht auf die Apple ATS-Dokumentation zugreifen, um dies zu überprüfen.
JosephH
Wenn es Ihnen (oder jemandem) gelingt, ein selbstsigniertes Zertifikat an ein iOS 9-Gerät zu senden, ohne ATS zu deaktivieren, teilen Sie mir bitte mit, wie Sie dies tun. TIA!
Hampden123
1

Nur den Simulator (neu) zu starten, nachdem Charles angefangen hat, ihn für mich zu reparieren.

Lavoy
quelle
1

Für diejenigen, die mit nicht vertrauenswürdigen Verbindungen auf den Simulatoren von Xcode 9 Beta zu kämpfen haben:

Ich weiß nicht, ob das Installationsskript funktioniert oder nicht, aber Sie können das charles-Zertifikat auf dieselbe Weise wie auf einem physischen Gerät installieren - über Safari.

Letzter Schritt, der erforderlich ist (natürlich nach der Installation des Zertifikats entweder über ein Skript oder über Safari): Gehen Sie zu Simluators Einstellungen -> Allgemein -> Über -> Einstellungen für die Zertifikatvertrauensstellung -> Benutzerdefiniertes Stammverzeichnis von Charles Proxy ... -> Aktivieren 💥

Kubba
quelle
1

Schritte für iOS-Simulator.

  • Installiere Charles - Download
  • Charles-Menü -> Proxy -> Mac-Proxy aktivieren
  • Charles-Menü -> Extras -> Proxy -> Proxy-Einstellungen -> MacOS -> Aktivieren Sie alle Kontrollkästchen
  • Installieren Sie das Charles-Zertifikat in iOS-Simulatoren
  • Charles-Menü -> Hilfe -> SSL-Proxy -> Charles Ceritificate in iOS-Simulatoren installieren
  • Aktivieren Sie das Charles-Zertifikat in iOS-Simulatoren
  • Einstellungen für iOS-Simulatoren -> Allgemein -> Info -> Einstellungen für die Zertifikatvertrauensstellung -> Einschalten
  • Wenn kein Datenverkehr angezeigt wird, führen Sie Charles vor dem Simulator aus

Schritte für iPhone / iPad.

  • Öffnen Sie die Desktop-Charles-App (Mac / Windows).
  • Gehe zu Charles-Menü -> Hilfe -> SSL-Proxy -> Charles Ceritificate auf einem mobilen Gerät oder einem Remote-Browser installieren -> Auswählen -> Popup wird mit den folgenden Schritten angezeigt:

    Konfigurieren Sie Ihr Gerät so, dass Charles als HTTP-Proxy unter 192.168.0.100:8888 verwendet wird , und navigieren Sie dann zu chls.pro/ssl , um das Zertifikat herunterzuladen und zu installieren.

  • Gehen Sie zu iPhone-Einstellungen -> WLAN -> Klicken Sie auf ausgewähltes WLAN -> HTTP-Proxy -> Proxy konfigurieren -> Wählen Sie Manuell -> Server als 192.168.0.100 und Port als 8888 -> Speichern

  • Gehe zu iPhone Browser -> Lade chls.pro/ssl -> Es wird unter Popup angezeigt `

    Die Website versucht, ein Konfigurationsprofil herunterzuladen. Möchten Sie dies zulassen? Schaltfläche "Ignorieren" und Schaltfläche " Zulassen"

  • Klicken Sie auf die Schaltfläche Zulassen -> Das Profil wird heruntergeladen

  • Gehen Sie zu iPhone-Einstellungen -> Allgemein -> Profile -> Heruntergeladenes Profil -> Wählen Sie das Charles Proxy-Profil aus -> Installieren
  • Gehen Sie zu iPhone-Einstellungen -> Allgemein -> Info -> Einstellungen für die Zertifikatvertrauensstellung -> Aktivieren - Charles Proxy CA-Zertifikat
  • Jetzt können wir die iPhone-App-Anrufe in der Desktop-Charles-App verfolgen
Yano
quelle
1
Einstellungen für iOS-Simulatoren -> Allgemein -> Info -> Einstellungen für die Zertifikatsvertrauensstellung -> Schalten Sie ein, was ich brauchte, danke!
Atalayasa
0

Für mich hat das funktioniert.

Ich habe das Gleiche getan wie im Gerät.

  1. Öffnen Sie die Safari und durchsuchen Sie chls.pro/ssl
  2. Akzeptieren und installieren Sie das Zertifikat
  3. Gehen Sie zu Einstellungen / Info / Zertifikate vertrauen und vertrauen Sie dem Charles-Zertifikat.

Ich muss dies auf 3 Simulatorinstanzen tun, da XCUI-Automatisierungstests 3 drehen können.

Saran
quelle
0

Es funktioniert für mich, nachdem ich zur Safari (Simulator) gegangen bin und die URL besucht habe:

chls.pro/ssl 

Bevor ich Charles Root-Zertifikat in iOS-Simulatoren installieren musste (Charles: help / SSLproxying)

Grüße

A. Trejo
quelle