web-dev-qa-db-fra.com

Comment utiliser Charles Proxy sur le simulateur Xcode 6 (iOS 8)?

Il semble que le répertoire du simulateur iOS ait changé. C'était jadis en ~/Library/Application\ Support/iPhone\ Simulator/ et maintenant c'est dans ~/Library/Developer/CoreSimulator/Devices/.

79
jonsibley

Mise à jour: Charles 3.9.3 + possède une fonction intégrée pour configurer vos simulateurs iOS (c'est-à-dire installer le certificat SSL Charles). Cela se trouve dans le menu Aide de l'application Charles. (Help > SSL Proxying > Install Charles Root Certificate in iOS Simulators)

Ce qui suit s’applique à Charles 3.9.2:

Téléchargez le script de configuration à partir du site Web Charles Proxy . Ensuite, remplacez le script par le suivant et exécutez-le sur votre 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"

Quelques points à noter:

  • vous devez ouvrir Charles avant de lancer le simulateur. Si vous fermez Charles, les requêtes réseau échoueront jusqu'à ce que vous redémarriez le simulateur
  • vous devrez le faire chaque fois que vous réinitialiserez le contenu et les paramètres du simulateur.
  • Pour Xcode 5: si vous souhaitez installer Charles Proxy sur Xcode 5 et versions antérieures, vous n'avez pas besoin de modifier le script d'origine. Il suffit de le télécharger à partir du site Web de Charles et de le lancer tel quel.
120
jonsibley

Je viens de tester Charles sur un simulateur Xcode 7/iOS9. Quelques remarques à ajouter si vous rencontrez des difficultés:

  • Assurez-vous que "Activer le proxy Mac OS" et "tiliser un proxy HTTP" sont cochés sous Charles 'Proxy | Paramètres du proxy; et éventuellement, cochez la case "Activer le proxy Mac OS X au démarrage" si vous ne souhaitez pas effectuer cette opération à chaque démarrage de Charles.
  • Si votre Configuration automatique du proxy (et/ou Détection automatique du proxy) est défini dans les Préférences Système | Réseau, vous devez le décocher pour que le proxy Web de Charles (HTTP) et le proxy Web sécurisé (HTTPS) ne prennent pas effet.
  • Si votre société requiert un serveur proxy indépendant de Charles, vous devez répliquer manuellement les paramètres à l'intérieur de Charles pour éviter qu'ils ne soient surchargés par Charles et que vous ne puissiez pas accéder à Internet. Notez l’URL du proxy et les numéros de port avant de commencer Charles. Transcrivez ces Web Proxy et Secure Web Proxy paramètres sous Charles 'Proxy | Paramètres de proxy externe.
  • "Activer SSL Proxying" et ajoutez votre terminal sur la liste, via le proxy de Charles | Paramètres de proxy SSL.
  • "Installer le certificat racine Charles dans le simulateur iOS" via l'aide de Charles | Menu Proxy SSL.
  • Et oui, assurez-vous que Charles est configuré et démarré avant de démarrer le simulateur.
  • Enfin pour l’instant, désactivez ATS pendant le développement jusqu’à ce que nous entendions davantage d’Apple.
34
Hampden123

Selon la documentation de charles

Le simulateur iOS doit utiliser les paramètres de proxy du système. Si ce n'est pas le cas, essayez de quitter et de redémarrer le simulateur iOS. À partir de Xcode 6, il semble important que Charles soit en cours d'exécution et défini en tant que proxy système Mac OS X avant d'exécuter le simulateur iOS.

Lire ici

Alors, quittez simplement votre simulateur, ouvrez charles, puis relancez l’application. Après cela, vous pouvez suivre vos appels sur le réseau.

REMARQUE: Vos appels réseau échoueront si vous quittez Charles. Vous devrez donc soit quitter le simulateur et le réexécuter, soit ouvrir à nouveau Charles.

18
iHulk

Une autre façon de le faire est de parcourir le certificat http://charlesproxy.com/charles.crt sur le périphérique

qui vous présentera l'écran:

install certificate Prompt screen

12
user1307434

Mise à jour pour iOS 9: vous devez désactiver App Transport Security pour utiliser Charles!

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

4
Paul Bruneau

Le 'Installer le certificat racine Charles dans des simulateurs iOS' ne fonctionne pas dans la version actuelle de CharlesProxy (3.11) avec les simulateurs Xcode 7/iOS 9.

À la place, utilisez l'option "Installer le certificat racine Charles sur un périphérique mobile ou un navigateur distant ...". Cela vous donnera une URL pour le certificat.

Si vous ouvrez cette URL dans Safari dans le simulateur, vous aurez alors la possibilité d'installer le certificat.

Vous devez encore désactiver la sécurité du transport d'applications. Je ne comprends pas pourquoi cela est nécessaire lorsque le certificat est installé. Je suppose que CharlesProxy n'utilise pas suffisamment de clés/signatures.

2
JosephH

Je n'ai pas vu le script de configuration sur cette page. J'ai fait ce qui suit et cela a fonctionné pour moi:

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

2
Andrew McKinley

Vérifiez ceci:

Depuis la version v3.9.3 de Charles, un élément du menu Aide, "Installer le certificat SSL Charles CA dans des simulateurs iOS", installera automatiquement le certificat SSL de Charles Charles sur vos simulateurs iOS.

Vous pouvez également modifier votre code pour que NSURLConnection accepte tout certificat SSL. Veuillez consulter la question et la réponse sur le dépassement de pile: Comment utiliser NSURLConnection pour se connecter à SSL pour un certificat non approuvé?

Vous pouvez le vérifier sur ce lien: http://www.charlesproxy.com/documentation/faqs/ssl-connections-from- dans-iphone-applications /

2
atulkhatri

Le fait de (re) démarrer le simulateur après que Charles ait commencé commence à le réparer pour moi.

1
lavoy

Pour ceux qui luttent avec des connexions non fiables sur les simulateurs de Xcode 9 beta:

Je ne sais pas si le script d'installation fonctionne ou non, mais vous pouvez installer le certificat de charles de la même manière que sur un périphérique physique - via Safari.

Dernière étape nécessaire (bien sûr après l'installation du certificat via un script ou via Safari): Accédez aux paramètres de Simluator -> général - - à propos de -> paramètres de confiance du certificat -> racine personnalisée du proxy Charles ... -> enable ????

0
Kubba

Pour moi, c'est ce qui a fonctionné.

J'ai fait la même chose que nous en appareil.

  1. Ouvrez le safari et parcourez chls.pro/ssl
  2. Accepter et installer le certificat
  3. Accédez à Paramètres/À propos de/Faites confiance aux certificats et faites confiance au certificat charles.

Je dois le faire sur 3 instances de simulateur, car les tests d’automatisation XCUI peuvent tourner 3.

0
Saran