Come utilizzare Charles Proxy sul simulatore Xcode 6 (iOS 8)?


84

Sembra che la directory per il simulatore iOS sia cambiata. Prima c'era ~/Library/Application\ Support/iPhone\ Simulator/e ora è dentro ~/Library/Developer/CoreSimulator/Devices/.

Risposte:


121

Aggiornamento: Charles 3.9.3+ ha una funzione incorporata per configurare i tuoi simulatori iOS (cioè l'installazione del certificato SSL Charles). Questo può essere trovato nel menu Aiuto all'interno dell'applicazione Charles. ( Help > SSL Proxying > Install Charles Root Certificate in iOS Simulators)

Quanto segue si applica a Charles 3.9.2:

Scarica lo script della shell di configurazione dal sito Web di Charles Proxy . Quindi, sostituisci lo script con il seguente ed eseguilo sul tuo 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"

Alcune cose da notare:

  • è necessario aprire Charles prima di avviare il simulatore. Se chiudi Charles, le richieste di rete falliranno finché non riavvierai il simulatore
  • dovrai farlo ogni volta che "Reimposta contenuto e impostazioni ..." sul simulatore
  • Per Xcode 5: se stai cercando di configurare Charles Proxy su Xcode 5 e versioni precedenti, non è necessario modificare lo script originale. Basta scaricarlo dal sito Web di Charles ed eseguirlo così com'è

4
Funziona dopo il riavvio del simulatore.
avdyushin

9
La tua risposta sembra risolvere il problema della richiesta SSL. ma il problema principale potrebbe essere che Charles non gestisce alcuna richiesta dal simulatore iOS 8.0 / Xcode6 Sai come risolverlo?
aelam

1
Penso che lo script sia stato spostato qui: charlesproxy.com/documentation/faqs/… (e leggendo la fonte, sembra che sia stato aggiornato nel modo suggerito)
Ian Dundas

1
Ho seguito questo ma vedo un errore nel terminale - Vincolo UNIQUE non riuscito: tsettings.sha1
Beta

1
Cordiali saluti: ho aggiornato questa risposta per includere le istruzioni per scaricare Charles 3.9.3 con l'installazione del certificato tramite il suo menu Aiuto, piuttosto che aver bisogno di uno script.
codeperson

35

Ho appena testato Charles sul simulatore Xcode 7 / iOS9. Solo alcuni suggerimenti che voglio aggiungere se hai problemi:

  • Assicurati che " Abilita proxy Mac OS " e " Usa proxy HTTP " siano selezionati in Proxy di Charles | Impostazioni proxy; e facoltativamente seleziona " Abilita il proxy di Mac OS X all'avvio " se non vuoi eseguire questo passaggio ogni volta che avvii Charles.
  • Se la configurazione automatica del proxy (e / o il rilevamento automatico del proxy ) è impostata nelle preferenze di sistema | Rete, è necessario deselezionarla affinché il proxy Web (HTTP) e il proxy Web protetto (HTTPS) di Charles non abbiano effetto.
  • Se la tua azienda richiede un server proxy indipendente da Charles, devi replicare manualmente le impostazioni all'interno di Charles per evitare che vengano sovrascritte da Charles e non sarai in grado di accedere a Internet. Prendere nota dell'URL del proxy e dei numeri di porta prima di avviare Charles. Trascrivere questi proxy Web e Secure Web Proxy impostazioni sotto Carlo Proxy | Impostazioni proxy esterno.
  • " Abilita proxy SSL " e aggiungi il tuo endpoint all'elenco, tramite Charles 'Proxy | Impostazioni proxy SSL.
  • " Installa Charles Root Certificate in iOS Simulator " tramite la Guida di Charles | Menu Proxying SSL.
  • E sì, assicurati che Charles sia configurato e avviato prima di avviare il simulatore.
  • Infine, per ora, disabilita ATS durante lo sviluppo fino a quando non avremo altre notizie da Apple.

"Finalmente per ora, disabilita ATS durante lo sviluppo fino a quando non avremo altre notizie da Apple." - Azzeccato, mancante da altre risposte sopra.
Mark Gibaud

Grazie! Dovrebbero metterlo sul sito web di Charles!
Rudolf J

Charles supporta App Transport Security (ATS) a partire dalla versione 3.11.4.
Marián Černý

1
+1 per deselezionare Configurazione proxy automatica . Ho un file .pac nell'ambiente di rete aziendale e il traffico del simulatore potrebbe non essere visualizzato in Charles a causa di ciò.
iplus26

"Assicurati che" Abilita proxy Mac OS "e" Usa proxy HTTP "siano selezionati in Proxy di Charles | Impostazioni proxy" Questo mi aiuta. Grazie!
S. Matsepura

17

Secondo la documentazione di Charles

Il simulatore iOS dovrebbe utilizzare le impostazioni proxy di sistema. In caso contrario, prova a chiudere e a riavviare il simulatore iOS. A partire da Xcode 6, sembra importante che Charles sia in esecuzione e impostato come proxy di sistema di Mac OS X prima di eseguire il simulatore iOS.

Leggi qui

Quindi esci dal simulatore, apri Charles e quindi esegui di nuovo l'app. Dopodiché puoi monitorare le tue chiamate di rete.

NOTA: le chiamate di rete falliranno se esci da Charles. Quindi dovrai chiudere il simulatore ed eseguirlo di nuovo o riaprire Charles.


1
Ho scoperto che se hai un URL proxy "autoconfigure" impostato, Charles Proxy non funzionerà. Sembra che l'URL di configurazione automatica sovrascriva qualsiasi impostazione proxy manuale. La rimozione dell'URL di configurazione automatica e la specifica delle impostazioni manuali (con le credenziali, nel mio caso) ha permesso a Charles di riconfigurare le impostazioni e ha funzionato ... senza nemmeno riavviare iOS Simulator (7.1).
Sean Aitken

12

Un altro modo per farlo è accedere al certificato http://charlesproxy.com/charles.crt sul dispositivo

che ti presenterà con lo schermo:

installare la schermata della richiesta del certificato


Ho provato questo metodo ma non è riuscito a caricare il sito protetto durante l'esecuzione del server locale. Qualcuno può far luce su come affrontare questo problema?
Ganesh Pandhere

1
Prova a navigare utilizzando Safari per vedere se c'è qualcosa che non va nel certificato. Per fare ciò, fai clic sul simbolo del lucchetto per il tuo sito web. Finestra di dialogo del certificato di Safari . Sospetto che tu stia utilizzando un certificato autofirmato e che sia necessario installare il certificato client sulla tua macchina. Questo può essere ottenuto tramite Safari e scegliendo Fiducia -> "Consenti sempre".
user1307434

Ho dovuto farlo per sbarazzarmi degli errori di handshake SSL.
Will Larche



2

Controllalo:

A partire da Charles v3.9.3 c'è una voce nel menu Aiuto, "Installa il certificato SSL Charles CA nei simulatori iOS", che installerà automaticamente il certificato CA SSL di Charles nei tuoi simulatori iOS.

In alternativa, puoi modificare il codice in modo che NSURLConnection accetti qualsiasi certificato SSL. Si prega di consultare la domanda e la risposta su Stack Overflow: come utilizzare NSURLConnection per connettersi con SSL per un certificato non attendibile?

Puoi verificarlo su questo link: http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/


2

"Installa il certificato radice di Charles nei simulatori iOS" non funziona nella versione corrente di CharlesProxy (3.11) con i simulatori Xcode 7 / iOS 9.

Utilizza invece l'opzione "Installa certificato radice Charles su un dispositivo mobile o browser remoto ...". Questo ti darà un URL per il certificato.

Se apri questo URL in Safari nel simulatore, ti verrà data la possibilità di installare il certificato.

È comunque necessario disabilitare la sicurezza del trasporto delle app. Non capisco perché sia ​​necessario quando hai il certificato installato; Immagino che CharlesProxy non utilizzi chiavi / firme sufficientemente grandi.


Se non altro, il certificato è autofirmato e di sicuro non funzionerà con i requisiti ATS di Apple. Il primo passo è far firmare il certificato di Charles da un'autorità di certificazione autorizzata, ma a parte la logistica, costerà denaro. Anche il dominio deve essere rivolto al pubblico. Etc. Etc. Non sarà facile se non del tutto fattibile.
Hampden123

@ Hampden123 Per quanto ne so, il meccanismo di App Transport Security di Apple consentirebbe un certificato autofirmato a condizione che sia stato installato correttamente nel dispositivo iOS come certificato attendibile, ecco perché credo che charlesproxy abbia bisogno della disabilitazione ATS per un motivo diverso. Al momento non riesco ad accedere alla documentazione di Apple ATS per verificarlo.
JosephH

Se tu (o chiunque) riesci a fornire un certificato autofirmato a un dispositivo iOS 9 senza disabilitare ATS, fammi sapere come lo fai. TIA!
Hampden123

1

Ho appena (ri) avviato il simulatore dopo che Charles ha iniziato a risolverlo per me.


1

Per coloro che lottano con connessioni non affidabili sui simulatori di Xcode 9 beta:

Non so se lo script di installazione funziona o meno, ma puoi installare il certificato di charles allo stesso modo del dispositivo fisico, tramite Safari.

Ultimo passaggio necessario (ovviamente dopo aver installato il certificato tramite script o tramite Safari): vai alle impostazioni di Simluator -> generale -> informazioni su -> Impostazioni di affidabilità del certificato -> Charles Proxy Custom Root ... -> abilita 💥


1

Passaggi per il simulatore iOS.

  • Installa Charles - scarica
  • Menu Charles -> Proxy -> Abilita proxy Mac
  • Menu Charles -> Strumenti -> Proxy -> Impostazioni proxy -> MacOS -> Seleziona tutte le caselle di controllo
  • Installa il certificato Charles nei simulatori iOS
  • Menu Charles -> Aiuto -> Proxying SSL -> Installa certificato Charles nei simulatori iOS
  • Abilita il certificato Charles nei simulatori iOS
  • Impostazioni dei simulatori iOS -> Generali -> Informazioni su -> Impostazioni attendibilità certificato -> Attiva
  • Se il traffico non viene visualizzato, eseguire Charles prima del simulatore

Passaggi per iPhone / iPad.

  • Apri l'app desktop Charles (Mac / Windows)
  • Vai al menu Charles -> Aiuto -> Proxying SSL -> Installa il certificato Charles su un dispositivo mobile o browser remoto -> Seleziona -> viene visualizzato il popup con i passaggi seguenti `

    Configura il tuo dispositivo per utilizzare Charles come proxy HTTP su 192.168.0.100:8888 , quindi naviga su chls.pro/ssl per scaricare e installare il certificato.

  • Vai alle impostazioni dell'iPhone -> Wifi -> fai clic sul wifi selezionato -> Http proxy -> Configura proxy -> seleziona Manuale -> Dai al server come 192.168.0.100 e porta come 8888 -> Salva

  • Vai al browser iPhone -> Carica chls.pro/ssl -> Verrà mostrato sotto il popup `

    Il sito Web sta tentando di scaricare un profilo di configurazione. Lo vuoi consentire? Pulsante Ignora e pulsante Consenti

  • Fare clic sul pulsante Consenti -> Verrà scaricato il profilo

  • Vai a Impostazioni iPhone -> Generali -> Profili -> Profilo scaricato -> Seleziona il profilo Charles Proxy -> Installa
  • Vai a Impostazioni iPhone -> Generali -> Informazioni su -> Impostazioni di attendibilità certificato -> Abilita - Certificato CA proxy Charles
  • Ora possiamo tenere traccia delle chiamate dell'app per iPhone nell'app desktop Charles

1
Impostazioni dei simulatori iOS -> Generale -> Informazioni su -> Impostazioni attendibilità certificato -> Attiva ciò di cui avevo bisogno grazie!
atalayasa

0

Per me, questo è ciò che ha funzionato.

Ho fatto la stessa cosa che facciamo nel dispositivo.

  1. Apri Safari e sfoglia chls.pro/ssl
  2. Accetta e installa il certificato
  3. Vai su Impostazioni / Informazioni / Considera attendibili i certificati e considera attendibile il certificato charles.

Devo farlo su 3 istanze del simulatore, poiché i test di automazione XCUI possono girare 3.


0

Per me funziona dopo andare su safari (simulatore) e visitare l'URL:

chls.pro/ssl 

Prima di dover installare il certificato di root charles nei simulatori iOS (Charles: help / SSLproxying)

Saluti

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.