Xcode 6 (iOS 8) 시뮬레이터에서 Charles Proxy를 사용하는 방법은 무엇입니까?


84

iOS 시뮬레이터의 디렉토리가 변경된 것 같습니다. 이전에 였지만 ~/Library/Application\ Support/iPhone\ Simulator/지금은 ~/Library/Developer/CoreSimulator/Devices/.

답변:


121

업데이트 : Charles 3.9.3+ 에는 iOS 시뮬레이터를 구성하는 기능이 내장되어 있습니다 (예 : Charles SSL 인증서 설치). Charles 응용 프로그램의 도움말 메뉴에서 찾을 수 있습니다. ( Help > SSL Proxying > Install Charles Root Certificate in iOS Simulators)

다음은 Charles 3.9.2에 적용됩니다.

Charles Proxy 웹 사이트 에서 구성 셸 스크립트 를 다운로드합니다 . 그런 다음 스크립트를 다음으로 바꾸고 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"

참고할 사항 :

  • 시뮬레이터를 시작하기 전에 Charles를 열어야합니다. Charles를 닫으면 시뮬레이터를 다시 시작할 때까지 네트워크 요청이 실패합니다.
  • 시뮬레이터에서 "콘텐츠 및 설정 재설정 ..."할 때마다이 작업을 수행해야합니다.
  • Xcode 5의 경우 Xcode 5 및 이전 버전에서 Charles Proxy를 설정하려는 경우 원본 스크립트를 수정할 필요가 없습니다. Charles 웹 사이트에서 다운로드하여 그대로 실행하십시오.

4
시뮬레이터를 다시 시작한 후에 작동합니다.
avdyushin 2014 년

9
대답은 SSL 요청 문제를 해결하는 것 같습니다. 하지만 주요 문제는 Charles가 iOS 시뮬레이터 8.0 / Xcode6의 요청을 처리하지 않는다는 것입니다. 어떻게 고칠 지 알고 있습니까?
aelam

1
: 나는 스크립트가 여기로 이동되었습니다 생각 charlesproxy.com/documentation/faqs/... (소스를 읽고, 그것을이 방법으로 갱신 것처럼 당신이 제안 모양)
이안 던 대스를

1
나는 이것을 따랐지만 터미널에 오류가 있습니다-UNIQUE 제약이 실패했습니다 : tsettings.sha1
Beta

1
참고로이 답변을 업데이트하여 Charles 3.9.3을 다운로드하는 지침을 포함하고 스크립트가 필요하지 않고 도움말 메뉴를 통해 인증서를 설치합니다.
codeperson

35

방금 Charles를 Xcode 7 / iOS9 시뮬레이터에서 테스트했습니다. 문제가있는 경우 추가하고 싶은 몇 가지 지침 :

  • 확인 " 맥 OS 프록시 사용 "과 " 을 사용하여 HTTP 프록시 찰스 '프록시에서 확인됩니다"| 프록시 설정; Charles를 시작할 때마다이 단계를 수행하지 않으려면 " 시작시 Mac OS X 프록시 활성화 "를 선택적으로 선택 합니다.
  • 귀하의 경우 자동 프록시 구성 (및 / 또는 자동 프록시 검색은 ) 당신의 시스템 환경 설정에서 설정 | 네트워크의 경우 Charles의 웹 프록시 (HTTP) 및 보안 웹 프록시 (HTTPS)가 적용되지 않도록 선택 취소해야합니다.
  • 회사에 Charles와 독립적 인 프록시 서버가 필요한 경우 Charles에 의해 재정의되어 인터넷에 액세스 할 수 없도록 Charles 내부 설정을 수동으로 복제해야합니다. Charles를 시작하기 전에 프록시 URL과 포트 번호를 기록해 둡니다. 이러한 웹 프록시보안 웹 프록시 설정을 Charles 'Proxy | 외부 프록시 설정.
  • " Enable SSL Proxying "을 선택하고 Charles의 Proxy를 통해 목록에 엔드 포인트를 추가합니다. SSL 프록시 설정.
  • " iOS 시뮬레이터에서 찰스 루트 인증서를 설치 찰리의 도움말을 통해"| SSL 프록시 메뉴.
  • 그리고 예, 시뮬레이터를 시작하기 전에 Charles가 설정되고 시작되었는지 확인하십시오.
  • 마지막으로, Apple로부터 더 많은 소식을들을 때까지 개발 중에 ATS를 비활성화하십시오.

"마지막으로, 우리가 Apple로부터 더 많은 것을들을 때까지 개발 중에 ATS를 비활성화하십시오." -위의 다른 답변에서 누락되었습니다.
Mark Gibaud

감사! 그들은 이것을 Charles의 웹 사이트에 올려야합니다!
Rudolf J

Charles는 3.11.4 릴리스부터 App Transport Security (ATS)를 지원합니다.
Marián Černý

1
자동 프록시 구성선택 취소하려면 +1하십시오 . 회사 네트워크 환경에 .pac 파일이 있고 이로 인해 시뮬레이터의 트래픽이 Charles에 나타나지 않을 수 있습니다.
iplus26

"Charles의 프록시 | 프록시 설정에서"Mac OS 프록시 사용 "및"HTTP 프록시 사용 "이 선택되어 있는지 확인 하십시오. " 도움이됩니다. 감사!
S. Matsepura

17

Charles 문서에 따르면

iOS 시뮬레이터는 시스템 프록시 설정을 사용해야합니다. 그렇지 않으면 iOS 시뮬레이터를 종료하고 다시 시작하십시오. Xcode 6부터는 iOS 시뮬레이터를 실행하기 전에 Charles가 실행 중이고 Mac OS X 시스템 프록시로 설정되어 있어야합니다.

여기에서 읽으십시오

따라서 시뮬레이터를 종료하고 charles를 연 다음 앱을 다시 실행하십시오. 그 후에 네트워크 통화를 추적 할 수 있습니다.

참고 : Charles를 종료하면 네트워크 호출이 실패합니다. 따라서 시뮬레이터를 종료하고 다시 실행하거나 Charles를 다시 열어야합니다.


1
"자동 구성"프록시 URL이 설정되어 있으면 Charles 프록시가 작동하지 않습니다. 자동 구성 URL이 수동 프록시 설정을 무시하는 것 같습니다. 자동 구성 URL을 제거하고 수동 설정 (내 경우에는 자격 증명 포함)을 지정하여 Charles가 설정을 다시 구성 할 수 있었고 iOS 시뮬레이터 (7.1)를 다시 시작하지 않고도 작동했습니다.
Sean Aitken

12

이를 수행하는 또 다른 방법 은 장치에서 http://charlesproxy.com/charles.crt 인증서를 검색하는 것입니다.

화면이 표시됩니다.

인증서 프롬프트 설치 화면


이 방법을 시도했지만 로컬 서버를 실행할 때 보안 사이트를로드하지 못했습니다. 누구든지이 문제를 처리하는 방법에 대해 밝힐 수 있습니까?
Ganesh Pandhere

1
Safari를 사용하여 검색하여 인증서에 문제가 있는지 확인하십시오. 이렇게하려면 웹 사이트의 자물쇠 기호를 클릭하십시오. Safari 인증서 대화창 . 자체 서명 된 인증서를 사용하고 있으며 컴퓨터에 클라이언트 인증서를 설치해야하는 것 같습니다. Safari를 통해 신뢰-> '항상 허용'을 선택하면됩니다.
user1307434 2014

SSL Handshake 오류를 제거하기 위해이 작업을 수행해야했습니다.
Will Larche 2014


2

해당 페이지에서 구성 셸 스크립트를 보지 못했습니다. 나는 다음을 수행했고 그것은 나를 위해 일했습니다.

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


이 답변은 @jonsibley보다 낫습니다. Charles 웹 사이트의 구성 스크립트가 사라졌습니다.
Hai Feng Kao

방금 여기로 옮겨진 것 같습니다 : charlesproxy.com/documentation/faqs/…
Ian Dundas

2

이것 좀 봐:

Charles v3.9.3부터 도움말 메뉴에 "iOS 시뮬레이터에 Charles CA SSL 인증서 설치"항목이 있습니다.이 항목은 iOS 시뮬레이터에 Charles의 SSL CA 인증서를 자동으로 설치합니다.

또는 NSURLConnection이 모든 SSL 인증서를 허용하도록 코드를 변경할 수 있습니다. Stack Overflow : How to use NSURLConnection to connect with SSL for an untrusted cert? 에 대한 질문과 답변을 참조하십시오 .

다음 링크에서 확인할 수 있습니다. http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/


2

'iOS 시뮬레이터에 Charles 루트 인증서 설치'는 Xcode 7 / iOS 9 시뮬레이터가있는 현재 버전의 CharlesProxy (3.11)에서 작동하지 않습니다.

대신 '모바일 장치 또는 원격 브라우저에 Charles 루트 인증서 설치 ...'옵션을 사용하십시오. 이렇게하면 인증서에 대한 URL이 제공됩니다.

시뮬레이터의 Safari에서이 URL을 열면 인증서를 설치할 수있는 옵션이 제공됩니다.

그래도 앱 전송 보안을 비활성화해야합니다. 인증서를 설치했을 때 왜 이것이 필요한지 이해할 수 없습니다. CharlesProxy는 충분히 큰 키 / 서명을 사용하지 않는 것 같습니다.


다른 것이 없다면 인증서는 자체 서명되어 있으며 Apple의 ATS 요구 사항에 맞지 않을 것입니다. 첫 번째 단계는 승인 된 인증 기관에서 Charles의 인증서에 서명하는 것이지만 물류를 제외하고는 비용이들 것입니다. 도메인도 공개되어야합니다. Etc. Etc. 가능하다면 쉽지 않을 것입니다.
Hampden123

@ Hampden123 내가 아는 한, Apple의 App Transport Security 메커니즘은 신뢰할 수있는 인증서로 iOS 기기에 올바르게 설치되어 있는 한 자체 서명 된 인증서를 허용 할 것 입니다. 현재이를 확인하기 위해 Apple ATS 문서에 액세스 할 수없는 것 같습니다.
JosephH

귀하 (또는 누군가)가 ATS를 비활성화하지 않고 iOS 9 장치에 자체 서명 된 인증서를 제공하는 데 성공한 경우 어떻게 수행하는지 알려주십시오. TIA!
Hampden123

1

Charles가 시작한 후에 시뮬레이터를 (다시) 시작하면 문제가 해결되었습니다.


1

Xcode 9 베타 시뮬레이터에서 신뢰할 수없는 연결로 어려움을 겪고있는 사람들을 위해 :

설치 스크립트가 작동하는지 여부는 모르지만 Safari를 통해 물리적 장치와 동일한 방식으로 charles의 인증서를 설치할 수 있습니다.

필요한 마지막 단계 (물론 스크립트 또는 Safari를 통해 인증서를 설치 한 후) : Simluator의 설정으로 이동-> 일반-> 정보-> 인증서 신뢰 설정-> Charles 프록시 사용자 지정 루트 ...-> 활성화 💥


1

iOS 시뮬레이터를위한 단계.

  • Charles 설치- 다운로드
  • Charles 메뉴-> 프록시-> Mac 프록시 활성화
  • Charles 메뉴-> 도구-> 프록시-> 프록시 설정-> MacOS-> 모든 확인란을 선택합니다.
  • iOS 시뮬레이터에 Charles 인증서 설치
  • Charles 메뉴-> 도움말-> SSL 프록시-> iOS 시뮬레이터에 Charles Ceritificate 설치
  • iOS 시뮬레이터에서 Charles 인증서 활성화
  • iOS 시뮬레이터 설정-> 일반-> 정보-> 인증서 신뢰 설정-> 스위치 켜기
  • 교통 체증이 나타나지 않으면 시뮬레이터 전에 Charles를 실행하십시오.

iPhone / iPad를위한 단계.

  • 데스크톱 Charles 앱 열기 (Mac / Windows)
  • Charles 메뉴로 이동-> 도움말-> SSL 프록시-> 모바일 장치 또는 원격 브라우저에 Charles Ceritificate 설치-> 선택-> 아래 단계와 함께 팝업이 나타납니다`

    192.168.0.100:8888 에서 Charles를 HTTP 프록시로 사용하도록 기기를 구성한 다음 브라우저에서 chls.pro/ssl 로 이동하여 인증서를 다운로드하고 설치합니다.

  • iPhone 설정으로 이동-> Wi-Fi-> 선택한 Wi-Fi 클릭-> Http 프록시-> 프록시 구성-> 수동 선택 -> 서버를 192.168.0.100으로, 포트를 8888로 지정-> 저장

  • iPhone 브라우저로 이동-> chls.pro/ssl 로드 -> 팝업창 아래에 표시됩니다`

    웹 사이트에서 구성 프로필을 다운로드하려고합니다. 허용 하시겠습니까? 무시 버튼 및 허용 버튼

  • 클릭 허용 > 그것은 프로파일을 다운로드합니다 - 버튼

  • iPhone 설정으로 이동-> 일반-> 프로필-> 다운로드 한 프로필-> Charles 프록시 프로필 선택-> 설치
  • iPhone 설정-> 일반-> 정보-> 인증서 신뢰 설정-> 활성화 -Charles 프록시 CA 인증서로 이동합니다.
  • 이제 데스크톱 Charles 앱에서 iPhone 앱 통화를 추적 할 수 있습니다.

1
iOS 시뮬레이터 설정-> 일반-> 정보-> 인증서 신뢰 설정-> 필요한 것을 켜십시오. 감사합니다!
atalayasa

0

나에게는 이것이 효과가있는 것입니다.

나는 우리가 장치에서하는 것과 똑같은 일을했다.

  1. Safari를 열고 chls.pro/ssl 찾아보기
  2. 인증서 수락 및 설치
  3. 설정 / 정보 / 신뢰 인증서로 이동하여 charles 인증서를 신뢰하십시오.

XCUI 자동화 테스트가 3을 돌릴 수 있으므로 3 개의 시뮬레이터 인스턴스에서이 작업을 수행해야합니다.


0

사파리 (시뮬레이터)로 이동하여 URL을 방문하면 저에게 효과적입니다.

chls.pro/ssl 

iOS 시뮬레이터에 charles 루트 인증서를 설치해야하기 전에 (Charles : help / SSLproxying)

문안 인사

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.