Como usar o Charles Proxy no simulador Xcode 6 (iOS 8)?

84

Parece que o diretório do simulador iOS mudou. Costumava estar dentro ~/Library/Application\ Support/iPhone\ Simulator/e agora está dentro ~/Library/Developer/CoreSimulator/Devices/.

codeperson
fonte

Respostas:

121

Atualização: Charles 3.9.3+ tem uma função incorporada para configurar seus Simuladores iOS (ou seja, instalar o certificado Charles SSL). Isso pode ser encontrado no menu Ajuda do aplicativo Charles. ( Help > SSL Proxying > Install Charles Root Certificate in iOS Simulators)

O seguinte se aplica a Charles 3.9.2:

Baixe o script de shell de configuração do site Charles Proxy . Em seguida, substitua o script pelo seguinte e execute-o em seu 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"

Algumas coisas a serem observadas:

  • você deve abrir o Charles antes de iniciar o simulador. Se você fechar o Charles, as solicitações de rede falharão até que você reinicie o simulador
  • você precisará fazer isso toda vez que "Redefinir conteúdo e configurações ..." no simulador
  • Para o Xcode 5: se você deseja configurar o Charles Proxy no Xcode 5 e anterior, não precisa modificar o script original. Basta fazer o download do site da Charles e executá-lo como está
codeperson
fonte
4
Funciona após reiniciar o simulador.
avdyushin de
9
Sua resposta parece resolver o problema de solicitação SSL. mas o principal problema pode ser que Charles não lida com nenhuma solicitação do simulador iOS 8.0 / Xcode6. Você sabe como consertar?
aelam
1
Acho que o script foi movido para aqui: charlesproxy.com/documentation/faqs/… (e lendo a fonte, parece que foi atualizado da maneira que você sugere)
Ian Dundas
1
Eu segui isso, mas estou vendo um erro no terminal - falha de restrição UNIQUE: tsettings.sha1
Beta de
1
Para sua informação, atualizei esta resposta para incluir instruções para baixar Charles 3.9.3 com a instalação do certificado por meio do menu Ajuda, em vez de precisar de um script.
codeperson
35

Acabei de testar o Charles no simulador Xcode 7 / iOS9. Apenas algumas dicas que gostaria de acrescentar se você estiver tendo problemas:

  • Certifique-se de que " Ativar proxy Mac OS " e " Usar proxy HTTP " estão marcados em Proxy Charles | Configurações de proxy; e, opcionalmente, marque " Habilitar proxy do Mac OS X na inicialização " se não quiser realizar essa etapa toda vez que iniciar o Charles.
  • Se sua configuração automática de proxy (e / ou descoberta automática de proxy ) estiver definida em Preferências do sistema | Rede, você precisa desmarcá-la para que o Charles 'Web Proxy (HTTP) e o Secure Web Proxy (HTTPS) não tenham efeito.
  • Se a sua empresa requer um servidor proxy independente do Charles, você precisa replicar manualmente as configurações dentro do Charles para que não sejam substituídas pelo Charles e você não consiga acessar a Internet. Anote o URL do proxy e os números da porta antes de iniciar o Charles. Transcrever estes Web Proxy e Secure Web Proxy configurações de em Charles 'Proxy | Configurações de proxy externo.
  • " Ativar proxy SSL " e adicionar seu endpoint na lista, via Charles 'Proxy | Configurações de proxy SSL.
  • " Instale o certificado Charles Root no simulador iOS " via Ajuda Charles | Menu SSL Proxying.
  • E sim, certifique-se de que Charles esteja configurado e iniciado antes de iniciar o simulador.
  • Finalmente, por enquanto, desative o ATS durante o desenvolvimento até ouvirmos mais da Apple.
Hampden123
fonte
"Finalmente, por enquanto, desative o ATS durante o desenvolvimento até ouvirmos mais da Apple." - Spot on, ausente nas outras respostas acima.
Mark Gibaud
Obrigado! Eles deveriam colocar isso no site do Charles!
Rudolf J
Charles oferece suporte a App Transport Security (ATS) a partir da versão 3.11.4.
Marián Černý
1
+1 para desmarcar a configuração automática de proxy . Tenho um arquivo .pac no ambiente de rede da empresa e o tráfego do simulador pode não aparecer no Charles devido a isso.
iplus26 de
"Certifique-se de que" Ativar proxy Mac OS "e" Usar proxy HTTP "estão marcados em Configurações de proxy | Proxy Charles" Isso me ajuda. Obrigado!
S. Matsepura
17

De acordo com a documentação de Charles

O simulador iOS deve usar as configurações de proxy do sistema. Caso contrário, tente sair e reiniciar o simulador iOS. A partir do Xcode 6, parece ser importante que Charles esteja executando e definido como o proxy do sistema Mac OS X antes de executar o simulador iOS.

Leia aqui

Então, feche o simulador, abra o Charles e execute o aplicativo novamente. Depois disso, você pode rastrear suas chamadas de rede.

NOTA: As chamadas de rede falharão se você encerrar o Charles. Portanto, você precisará sair do simulador e executá-lo novamente ou abrir o Charles novamente.

iHulk
fonte
1
Descobri que, se você tiver um URL de proxy "autoconfigurar" definido, Charles Proxy não funcionará. Parece que o URL de configuração automática substitui todas as configurações manuais de proxy. Remover o URL de configuração automática e especificar configurações manuais (com credenciais, no meu caso) permitiu que Charles reconfigurasse as configurações e funcionou .. sem nem mesmo reiniciar o simulador iOS (7.1).
Sean Aitken
12

Outra maneira de fazer isso é navegar até o certificado http://charlesproxy.com/charles.crt no dispositivo

que apresentará a tela:

tela de prompt de instalação de certificado

user1307434
fonte
Tentei esse método, mas também falhou ao carregar o site seguro ao executar o servidor local. Alguém pode esclarecer como lidar com esse problema?
Ganesh Pandhere
1
Tente navegar usando o Safari para ver se há algo errado com o certificado. Para fazer isso, clique no símbolo de cadeado do seu site. Janela de diálogo do certificado do Safari . Suspeito que você esteja usando um certificado autoassinado e que precise instalar o certificado do cliente em sua máquina. Isso pode ser feito através do Safari e escolhendo Trust -> 'always allow'.
user1307434
Tive que fazer isso para me livrar dos erros de handshake SSL.
Will Larche de
2

Veja isso:

A partir do Charles v3.9.3, há um item no menu Ajuda, "Instalar o certificado Charles CA SSL em simuladores iOS", que instalará automaticamente o certificado SSL CA de Charles em seus simuladores iOS.

Como alternativa, você pode alterar seu código para que NSURLConnection aceite qualquer certificado SSL. Consulte a pergunta e a resposta em Stack Overflow: Como usar NSURLConnection para se conectar com SSL para um certificado não confiável?

Você pode verificar neste link: http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/

Atulkhatri
fonte
2

O 'Instalar certificado de raiz Charles em simuladores iOS' não funciona na versão atual do CharlesProxy (3.11) com simuladores Xcode 7 / iOS 9.

Em vez disso, use a opção 'Instalar certificado raiz Charles em um dispositivo móvel ou navegador remoto ...'. Isso lhe dará um url para o certificado.

Se você abrir esse url no Safari no simulador, terá a opção de instalar o certificado.

Você ainda precisa desabilitar a segurança de transporte do aplicativo. Não entendo por que isso é necessário quando você instala o certificado; Acho que CharlesProxy não usa chaves / assinaturas suficientemente grandes.

JosephH
fonte
Se nada mais, o certificado é autoassinado e com certeza não vai funcionar com os requisitos ATS da Apple. O primeiro passo é ter o certificado de Charles assinado por uma Autoridade de Certificação sancionada, mas logística à parte, vai custar dinheiro. O domínio também deve ser voltado para o público. Etc. Etc. Não será fácil se possível.
Hampden123,
@ Hampden123 Pelo que eu sei, o mecanismo de segurança de transporte de aplicativos da Apple permitiria um certificado autoassinado, desde que tenha sido instalado corretamente no dispositivo iOS como um certificado confiável - daí porque eu acredito que charlesproxy precisa desabilitar ATS por um motivo diferente. Não consigo acessar a documentação do Apple ATS atualmente para verificar isso.
JosephH
Se você (ou qualquer pessoa) obtiver êxito em fornecer um certificado autoassinado a um dispositivo iOS 9 sem desativar o ATS, informe-me como o faz. TIA!
Hampden123
1

Apenas (re) iniciar o Simulador depois que Charles começou o consertou para mim.

Lavoy
fonte
1

Para aqueles que lutam com conexões não confiáveis ​​nos simuladores do Xcode 9 beta:

Não sei se o script de instalação funciona ou não, mas você pode instalar o certificado de Charles da mesma forma que em um dispositivo físico - através do Safari.

Última etapa necessária (claro, depois de instalar o certificado por meio de script ou via Safari): Vá para as configurações do Simluator -> geral -> sobre -> Configurações de confiança do certificado -> Charles Proxy Custom Root ... -> habilitar 💥

Kubba
fonte
1

Passos para simulador iOS.

  • Instale Charles - download
  • Menu Charles -> Proxy -> Ativar Proxy Mac
  • Menu Charles -> Ferramentas -> Proxy -> Configurações de proxy -> MacOS -> Marque todas as caixas de seleção
  • Instale o certificado Charles em simuladores iOS
  • Menu Charles -> Ajuda -> Proxying SSL -> Instalar Charles Ceritificate em Simuladores iOS
  • Habilitar Certificado Charles em Simuladores iOS
  • Configurações de simuladores iOS -> Geral -> Sobre -> Configurações de confiança de certificado -> Ligar
  • Se o tráfego não aparecer, execute o Charles antes do simulador

Etapas para iPhone / iPad.

  • Abra o aplicativo Charles da área de trabalho (Mac / Windows)
  • Vá para Menu Charles -> Ajuda -> SSL Proxying -> Instalar Charles Ceritificate em um dispositivo móvel ou navegador remoto -> Selecionar -> pop-up aparecerá com as etapas abaixo `

    Configure seu dispositivo para usar Charles como seu proxy HTTP em 192.168.0.100:8888 , em seguida, navegue até chls.pro/ssl para baixar e instalar o certificado.

  • Vá para as configurações do iPhone -> Wifi -> clique em wi-fi selecionado -> Proxy Http -> Configurar proxy -> selecione Manual -> Dar servidor como 192.168.0.100 e porta como 8888 -> Salvar

  • Vá para o navegador do iPhone -> Carregar chls.pro/ssl -> Ele aparecerá abaixo do pop-up `

    O site está tentando baixar um perfil de configuração. Você quer permitir isto? Botão Ignorar e botão Permitir

  • Clique no botão Permitir -> Ele fará o download do perfil

  • Vá para Configurações do iPhone -> Geral -> Perfis -> Perfil baixado -> Selecione o perfil Charles Proxy -> Instalar
  • Vá para Configurações do iPhone -> Geral -> Sobre -> Configurações de confiança do certificado -> Ativar - Certificado Charles Proxy CA
  • Agora podemos acompanhar as chamadas do aplicativo do iPhone no aplicativo Charles para desktop
Você não
fonte
1
Configurações de simuladores iOS -> Geral -> Sobre -> Configurações de confiança de certificado -> Ligar o que eu precisava, obrigado!
atalayasa
0

Para mim, foi isso que funcionou.

Eu fiz a mesma coisa que fazemos no dispositivo.

  1. Abra o safari e navegue em chls.pro/ssl
  2. Aceite e instale o certificado
  3. Vá para Configurações / Sobre / Confiar nos certificados e confiar no certificado Charles.

Tenho que fazer isso em 3 instâncias de simulador, pois o teste de automação XCUI pode girar em 3.

Saran
fonte
0

Funciona para mim depois de ir ao safari (simulador) e visitar o URL:

chls.pro/ssl 

Antes eu tinha que instalar o certificado root de Charles em simuladores iOS (Charles: help / SSLproxying)

Saudações

A. Trejo
fonte