¿Cómo usar Charles Proxy en el simulador de Xcode 6 (iOS 8)?

84

Parece que el directorio del simulador de iOS ha cambiado. Solía ​​estar dentro ~/Library/Application\ Support/iPhone\ Simulator/y ahora está dentro ~/Library/Developer/CoreSimulator/Devices/.

persona en clave
fuente

Respuestas:

121

Actualización: Charles 3.9.3+ tiene una función incorporada para configurar sus simuladores de iOS (es decir, instalar el certificado Charles SSL). Esto se puede encontrar en el menú Ayuda dentro de la aplicación Charles. ( Help > SSL Proxying > Install Charles Root Certificate in iOS Simulators)

Lo siguiente se aplica a Charles 3.9.2:

Descargue el script de shell de configuración del sitio web de Charles Proxy . Luego, reemplace el script con lo siguiente y ejecútelo en su 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"

Algunas cosas a tener en cuenta:

  • debes abrir Charles antes de iniciar el simulador. Si cierra Charles, las solicitudes de red fallarán hasta que reinicie el simulador
  • deberá hacer esto cada vez que "Restablezca el contenido y la configuración ..." en el simulador
  • Para Xcode 5: si desea configurar Charles Proxy en Xcode 5 y versiones anteriores, no necesita modificar el script original. Simplemente descárguelo del sitio web de Charles y ejecútelo como está
persona en clave
fuente
4
Funciona después de reiniciar el simulador.
avdyushin
9
Su respuesta parece solucionar el problema de la solicitud SSL. pero el problema principal podría ser que Charles no maneja ninguna solicitud del simulador de iOS 8.0 / Xcode6. ¿Sabe cómo solucionarlo?
aelam
1
Creo que el guión se ha movido aquí: charlesproxy.com/documentation/faqs/… (y leyendo la fuente, parece que se ha actualizado de la forma que sugieres)
Ian Dundas
1
Seguí esto, pero veo un error en la terminal: falló la restricción ÚNICA: tsettings.sha1
Beta
1
FYI: actualicé esta respuesta para incluir instrucciones para descargar Charles 3.9.3 con la instalación del certificado a través de su menú Ayuda, en lugar de necesitar un script.
codeperson
35

Acabo de probar Charles sobre el simulador Xcode 7 / iOS9. Solo algunos consejos que quiero agregar si tiene problemas:

  • Asegúrese de que " Habilitar proxy de Mac OS " y " Usar proxy HTTP " estén marcados en Charles 'Proxy | Configuración de proxy; y, opcionalmente, marque " Habilitar el proxy de Mac OS X al inicio " si no desea realizar este paso cada vez que inicie Charles.
  • Si su Configuración automática de proxy (y / o Detección automática de proxy ) está establecida en Preferencias del sistema | Red, debe desmarcarla para evitar que Charles 'Web Proxy (HTTP) y Secure Web Proxy (HTTPS) no surtan efecto.
  • Si su empresa requiere un servidor proxy independiente de Charles, debe replicar manualmente las configuraciones dentro de Charles para que no sean anuladas por Charles y usted no pueda acceder a Internet. Tome nota de la URL del proxy y los números de puerto antes de iniciar Charles. Transcribir estos Proxy Web y Secure Web Proxy configuración en Proxy Charles' | Configuración de proxy externo.
  • " Habilite el proxy SSL " y agregue su punto final en la lista, a través de Charles 'Proxy | Configuración de proxy SSL.
  • " Instale el certificado raíz de Charles en el simulador de iOS " a través de la Ayuda de Charles | Menú de proxy SSL.
  • Y sí, asegúrese de que Charles esté configurado e iniciado antes de iniciar el simulador.
  • Finalmente, por ahora, desactive ATS durante el desarrollo hasta que tengamos más noticias de Apple.
Hampden123
fuente
"Finalmente, por ahora, desactive ATS durante el desarrollo hasta que tengamos más noticias de Apple". - Perfecto, falta en otras respuestas anteriores.
Mark Gibaud
¡Gracias! ¡Deberían poner esto en el sitio web de Charles!
Rudolf J
Charles es compatible con App Transport Security (ATS) a partir de la versión 3.11.4.
Marián Černý
1
+1 para desmarcar Configuración automática de proxy . Tengo un archivo .pac en el entorno de red de la empresa y es posible que el tráfico del simulador no aparezca en Charles debido a él.
iplus26
"Asegúrese de que" Habilitar proxy de Mac OS "y" Usar proxy HTTP "estén marcadas en Charles 'Proxy | Configuración de proxy" Esto me ayuda. ¡Gracias!
S. Matsepura
17

Según la documentación de charles

El simulador de iOS debería utilizar la configuración de proxy del sistema. Si no es así, intente salir y reiniciar el simulador de iOS. A partir de Xcode 6, parece ser importante que Charles se esté ejecutando y configurado como el proxy del sistema Mac OS X antes de ejecutar el simulador de iOS.

Leer aquí

Así que salga del simulador, abra Charles y vuelva a ejecutar la aplicación. Después de eso, puede rastrear sus llamadas de red.

NOTA: Sus llamadas de red fallarán si sale de Charles. Por lo tanto, deberá salir del simulador y ejecutarlo nuevamente o abrir Charles nuevamente.

iHulk
fuente
1
Descubrí que si tiene una URL de proxy "autoconfigurada", Charles Proxy no funcionará. Parece que la URL de autoconfiguración anula cualquier configuración de proxy manual. Eliminar la URL de autoconfiguración y especificar la configuración manual (con credenciales, en mi caso) permitió a Charles volver a configurar la configuración y funcionó ... sin siquiera reiniciar el simulador de iOS (7.1).
Sean Aitken
12

Otra forma de hacerlo es buscar el certificado http://charlesproxy.com/charles.crt en el dispositivo

que le presentará la pantalla:

instalar la pantalla de solicitud de certificado

usuario1307434
fuente
Probé este método pero tampoco pudo cargar un sitio seguro cuando se ejecutaba el servidor local. ¿Alguien puede aclarar cómo abordar este problema?
Ganesh Pandhere
1
Intente navegar usando Safari para ver si hay algún problema con el certificado. Para hacer esto, haga clic en el símbolo de candado de su sitio web. Ventana de diálogo del certificado de Safari . Sospecho que está utilizando un certificado autofirmado y que necesita instalar el certificado de cliente en su máquina. Esto se puede lograr a través de Safari y eligiendo Confiar -> 'Permitir siempre'.
user1307434
Tuve que hacer esto para deshacerme de los errores de protocolo de enlace SSL.
Will Larche
2

Mira esto:

A partir de Charles v3.9.3, hay un elemento en el menú de Ayuda, "Instalar certificado Charles CA SSL en simuladores iOS", que instalará automáticamente el certificado SSL CA de Charles en sus simuladores iOS.

Alternativamente, puede cambiar su código para que NSURLConnection acepte cualquier certificado SSL. Consulte la pregunta y respuesta en Stack Overflow: ¿Cómo usar NSURLConnection para conectarse con SSL para un certificado que no es de confianza?

Puede consultarlo en este enlace: http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/

atulkhatri
fuente
2

El 'Install Charles Root Certificate in iOS simulators' no funciona en la versión actual de CharlesProxy (3.11) con simuladores Xcode 7 / iOS 9.

En su lugar, use la opción 'Instalar certificado raíz Charles en un dispositivo móvil o navegador remoto ...'. Esto le dará una URL para el certificado.

Si abre esta URL en Safari en el simulador, se le dará la opción de instalar el certificado.

Aún debe desactivar la seguridad de transporte de la aplicación. No entiendo por qué esto es necesario cuando tiene el certificado instalado; Supongo que CharlesProxy no usa claves / firmas suficientemente grandes.

JosephH
fuente
Al menos, el certificado está autofirmado y seguro que no funcionará con los requisitos ATS de Apple. El primer paso es tener el certificado de Charles firmado por una Autoridad de Certificación autorizada, pero aparte de la logística, costará dinero. El dominio también tiene que ser público. Etc. Etc. No será fácil si es posible.
Hampden123
@ Hampden123 Hasta donde yo sé, el mecanismo de seguridad de transporte de aplicaciones de Apple permitiría un certificado autofirmado siempre que se haya instalado correctamente en el dispositivo iOS como un certificado confiable ; por lo tanto, creo que charlesproxy necesita deshabilitar ATS por una razón diferente. Sin embargo, parece que no puedo acceder a la documentación de Apple ATS actualmente para verificar esto.
JosephH
Si usted (o alguien) logra enviar un certificado autofirmado a un dispositivo iOS 9 sin deshabilitar ATS, hágamelo saber cómo lo hace. TIA!
Hampden123
1

Simplemente (re) iniciar el simulador después de que Charles comience a arreglarlo para mí.

Lavoy
fuente
1

Para aquellos que luchan con conexiones que no son de confianza en los simuladores de Xcode 9 beta:

No sé si el script de instalación funciona o no, pero puede instalar el certificado de charles de la misma manera que en el dispositivo físico, a través de Safari.

Último paso que se necesita (por supuesto, después de instalar el certificado, ya sea a través de script o Safari): Vaya a la configuración de Simluator -> general -> acerca de -> Configuración de confianza del certificado -> Charles Proxy Custom Root ... -> habilitar 💥

Kubba
fuente
1

Pasos para el simulador de iOS.

  • Install Charles - descargar
  • Menú Charles -> Proxy -> Habilitar Proxy Mac
  • Charles Menu -> Tools -> Proxy -> Proxy Settings -> MacOS -> Marque todas las casillas de verificación
  • Instalar Charles Certificate en simuladores de iOS
  • Menú Charles -> Ayuda -> Proxying SSL -> Instalar certificado Charles en simuladores iOS
  • Habilitar el certificado Charles en simuladores de iOS
  • Configuración de simuladores de iOS -> General -> Acerca de -> Configuración de certificado de confianza -> Activar
  • Si el tráfico no aparece, ejecute Charles antes del simulador

Pasos para iPhone / iPad.

  • Abra la aplicación Charles de escritorio (Mac / Windows)
  • Vaya al menú Charles -> Ayuda -> Proxying SSL -> Instale Charles Ceritificate en un dispositivo móvil o navegador remoto -> Seleccionar -> aparece una ventana emergente con los pasos a continuación `

    Configure su dispositivo para usar Charles como su proxy HTTP en 192.168.0.100:8888 , luego navegue a chls.pro/ssl para descargar e instalar el certificado.

  • Vaya a la configuración del iPhone -> Wifi -> haga clic en wifi seleccionado -> Http proxy -> Configurar proxy -> seleccione Manual -> Dar servidor como 192.168.0.100 y puerto como 8888 -> Guardar

  • Ir al navegador de iPhone -> Cargar chls.pro/ssl -> Se mostrará debajo de la ventana emergente `

    El sitio web está intentando descargar un perfil de configuración. ¿Quieres permitir esto? Botón Ignorar y botón Permitir

  • Haga clic en el botón Permitir -> Descargará el perfil

  • Vaya a Configuración de iPhone -> General -> Perfiles -> Perfil descargado -> Seleccione el perfil de Charles Proxy -> Instalar
  • Vaya a Configuración de iPhone -> General -> Acerca de -> Configuración de certificado de confianza -> Habilitar - Certificado Charles Proxy CA
  • Ahora podemos rastrear las llamadas de la aplicación iPhone en la aplicación Charles de escritorio
Yano
fuente
1
Configuración de los simuladores de iOS -> General -> Acerca de -> Configuración de certificado de confianza -> Encienda lo que necesitaba, ¡gracias!
Atalayasa
0

Para mí, esto es lo que funcionó.

Hice lo mismo que hacemos en el dispositivo.

  1. Abra safari y explore chls.pro/ssl
  2. Acepta e instala el certificado
  3. Vaya a Configuración / Acerca de / Certificados de confianza y confíe en el certificado de charles.

Tengo que hacer esto en 3 instancias del simulador, ya que las pruebas de automatización XCUI pueden girar 3.

Saran
fuente
0

Me funciona después de ir a safari (simulador) y visitar la URL:

chls.pro/ssl 

Antes tenía que instalar el certificado raíz de charles en simuladores de iOS (Charles: ayuda / SSLproxying)

Saludos

A. Trejo
fuente