จะใช้ Charles Proxy บน Xcode 6 (iOS 8) Simulator ได้อย่างไร


84

ดูเหมือนว่าไดเร็กทอรีสำหรับ iOS Simulator มีการเปลี่ยนแปลง มันเคยอยู่ใน~/Library/Application\ Support/iPhone\ Simulator/และตอนนี้มันเข้า~/Library/Developer/CoreSimulator/Devices/แล้ว

คำตอบ:


121

อัปเดต: Charles 3.9.3+มีฟังก์ชันในตัวเพื่อกำหนดค่า iOS Simulators ของคุณ (เช่นการติดตั้งใบรับรอง SSL ของ Charles) สามารถพบได้ในเมนูวิธีใช้ภายในแอปพลิเคชัน Charles ( Help > SSL Proxying > Install Charles Root Certificate in iOS Simulators)

ข้อมูลต่อไปนี้ใช้กับ Charles 3.9.2:

ดาวน์โหลดเชลล์สคริปต์การกำหนดค่าจากเว็บไซต์ของชาร์ลส์พร็อกซี่ จากนั้นแทนที่สคริปต์ด้วยสิ่งต่อไปนี้และเรียกใช้บน 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: หากคุณต้องการตั้งค่า Charles Proxy บน Xcode 5 และรุ่นก่อนหน้าคุณไม่จำเป็นต้องแก้ไขสคริปต์ต้นฉบับ เพียงดาวน์โหลดจากเว็บไซต์ Charles และเรียกใช้ตามที่เป็นอยู่

4
ทำงานหลังจากรีสตาร์ทโปรแกรมจำลอง
avdyushin

9
คุณตอบดูเหมือนจะแก้ไขปัญหาคำขอ SSL แต่ปัญหาหลักอาจเกิดจาก Charles ไม่จัดการคำขอใด ๆ จาก iOS simulator 8.0 / Xcode6 คุณรู้วิธีแก้ไขหรือไม่?
aelam

1
ฉันคิดว่าสคริปต์ถูกย้ายไปที่นี่แล้ว: charlesproxy.com/documentation/faqs/… (และอ่านแหล่งที่มาดูเหมือนว่ามันจะได้รับการอัปเดตตามที่คุณแนะนำ)
Ian Dundas

1
ฉันทำตามสิ่งนี้ แต่ฉันเห็นข้อผิดพลาดในเทอร์มินัล - ข้อ จำกัด UNIQUE ล้มเหลว: tsettings.sha1
เบต้า

1
FYI- ฉันอัปเดตคำตอบนี้เพื่อรวมคำแนะนำในการดาวน์โหลด Charles 3.9.3 พร้อมกับการติดตั้งใบรับรองผ่านเมนูวิธีใช้แทนที่จะต้องใช้สคริปต์
codeperson

35

ฉันเพิ่งทดสอบ Charles ผ่านโปรแกรมจำลอง Xcode 7 / iOS9 คำแนะนำสองสามข้อที่ฉันต้องการเพิ่มหากคุณมีปัญหา:

  • ตรวจสอบให้แน่ใจว่าได้เลือก " เปิดใช้พร็อกซี Mac OS " และ " ใช้ HTTP Proxy " ภายใต้ Charles 'Proxy | การตั้งค่าพร็อกซี; และเลือก " เปิดใช้พร็อกซี Mac OS X เมื่อเริ่มต้น " หากคุณไม่ต้องการทำขั้นตอนนี้ทุกครั้งที่คุณเริ่ม Charles
  • หากการกำหนดค่าพร็อกซีอัตโนมัติของคุณ(และ / หรือการค้นหาพร็อกซีอัตโนมัติ ) ของคุณถูกตั้งค่าไว้ในการตั้งค่าระบบของคุณ | เครือข่ายคุณต้องยกเลิกการทำเครื่องหมายเพื่อไม่ให้ Charles 'Web Proxy (HTTP) และ Secure Web Proxy (HTTPS) มีผล
  • หาก บริษัท ของคุณต้องการพร็อกซีเซิร์ฟเวอร์ที่ไม่ขึ้นกับ Charles คุณต้องจำลองการตั้งค่าภายใน Charles ด้วยตนเองเพื่อมิให้ Charles ถูกแทนที่โดย Charles และคุณจะไม่สามารถเข้าถึงอินเทอร์เน็ตได้ จด URL พร็อกซีและหมายเลขพอร์ตก่อนเริ่ม Charles ถอดเสียงการตั้งค่าWeb ProxyและSecure Web Proxyภายใต้ Charles 'Proxy | การตั้งค่าพร็อกซีภายนอก
  • " เปิดใช้งาน SSL Proxying " และเพิ่มปลายทางของคุณในรายการผ่าน Charles 'Proxy | การตั้งค่า SSL Proxying
  • " ติดตั้ง Charles Root Certificate ใน iOS Simulator " ผ่าน Charles 'Help | เมนู SSL Proxying
  • และใช่ตรวจสอบให้แน่ใจว่า Charles ได้รับการตั้งค่าและเริ่มต้นก่อนที่คุณจะเริ่มการจำลอง
  • สุดท้ายสำหรับตอนนี้ปิดใช้งาน ATS ระหว่างการพัฒนาจนกว่าเราจะได้รับข้อมูลเพิ่มเติมจาก Apple

"สุดท้ายนี้ให้ปิดใช้งาน ATS ระหว่างการพัฒนาจนกว่าเราจะได้รับข้อมูลเพิ่มเติมจาก Apple" - ระบุขาดหายไปจากคำตอบอื่น ๆ ข้างต้น
Mark Gibaud

ขอบคุณ! พวกเขาควรวางสิ่งนี้ไว้ในเว็บไซต์ของ Charles!
Rudolf J

Charles รองรับ App Transport Security (ATS) ตั้งแต่รุ่น 3.11.4
MariánČerný

1
+1 สำหรับยกเลิกการกำหนดค่าพร็อกซีอัตโนมัติ ฉันมีไฟล์. pac ในสภาพแวดล้อมเครือข่ายของ บริษัท และการรับส่งข้อมูลของโปรแกรมจำลองอาจไม่ปรากฏใน Charles เนื่องจากไฟล์นี้
iplus26

"ตรวจสอบให้แน่ใจว่า" เปิดใช้งานพร็อกซี Mac OS "และ" ใช้ HTTP Proxy "อยู่ภายใต้ Charles 'Proxy | การตั้งค่าพร็อกซี" สิ่งนี้ช่วยฉันได้ ขอบคุณ!
S. Matsepura

17

ตามเอกสารของ Charles

iOS Simulator ควรใช้การตั้งค่าพร็อกซีของระบบ หากไม่เป็นเช่นนั้นโปรดลองออกและรีสตาร์ท iOS Simulator ใน Xcode 6 ดูเหมือนว่าจะมีความสำคัญที่ Charles กำลังเรียกใช้และตั้งค่าเป็นพร็อกซีระบบ Mac OS X ก่อนที่คุณจะเรียกใช้ iOS Simulator

อ่านที่นี่

ดังนั้นเพียงแค่ออกจากโปรแกรมจำลองของคุณเปิดชาร์ลแล้วเรียกใช้แอปอีกครั้ง หลังจากนั้นคุณสามารถติดตามการโทรในเครือข่ายของคุณ

หมายเหตุ: การโทรผ่านเครือข่ายของคุณจะล้มเหลวหากคุณออกจาก Charles ดังนั้นคุณจะต้องออกจากโปรแกรมจำลองและเรียกใช้อีกครั้งหรือเปิด Charles อีกครั้ง


1
ฉันพบว่าหากคุณตั้งค่า URL พร็อกซี "กำหนดค่าอัตโนมัติ" Charles Proxy จะไม่ทำงาน ดูเหมือนว่า URL ที่กำหนดค่าอัตโนมัติจะแทนที่การตั้งค่าพร็อกซีด้วยตนเอง การลบ URL การกำหนดค่าอัตโนมัติและระบุการตั้งค่าด้วยตนเอง (ในกรณีของฉัน) ทำให้ Charles สามารถกำหนดการตั้งค่าใหม่และใช้งานได้ .. โดยไม่ต้องรีสตาร์ท iOS Simulator (7.1)
Sean Aitken

12

อีกวิธีหนึ่งในการดำเนินการคือเรียกดูใบรับรองhttp://charlesproxy.com/charles.crtบนอุปกรณ์

ซึ่งจะนำเสนอคุณด้วยหน้าจอ:

ติดตั้งหน้าจอพร้อมต์ใบรับรอง


ฉันลองใช้วิธีนี้แล้ว แต่ก็ไม่สามารถโหลดไซต์ที่ปลอดภัยได้เมื่อเรียกใช้เซิร์ฟเวอร์ภายใน ใครช่วยชี้แนะวิธีจัดการกับปัญหานี้ได้บ้าง
Ganesh Pandhere

1
ลองเรียกดูโดยใช้ Safari เพื่อดูว่าใบรับรองมีอะไรผิดปกติหรือไม่ โดยคลิกที่สัญลักษณ์ล็อคสำหรับเว็บไซต์ของคุณ หน้าต่างใบรับรองซาฟารี ฉันสงสัยว่าคุณกำลังใช้ใบรับรองที่ลงนามด้วยตนเองและคุณต้องติดตั้งใบรับรองไคลเอ็นต์ในเครื่องของคุณ สามารถทำได้ผ่าน Safari และโดยเลือก Trust -> "always allow"
user1307434

ฉันต้องทำสิ่งนี้เพื่อกำจัดข้อผิดพลาด SSL Handshake
Will Larche


2

ฉันไม่เห็นเชลล์สคริปต์การกำหนดค่าในหน้านั้น ฉันทำสิ่งต่อไปนี้และได้ผลสำหรับฉัน:

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


คำตอบนี้ดีกว่า @ jonsibley's สคริปต์การกำหนดค่าบนเว็บไซต์ Charles หายไป
Hai Feng Kao

ฉันคิดว่าเพิ่งย้ายมาที่นี่: charlesproxy.com/documentation/faqs/…
Ian Dundas

2

ลองดู:

ตั้งแต่ Charles v3.9.3 มีรายการในเมนูวิธีใช้ "ติดตั้งใบรับรอง SSL ของ Charles CA ในเครื่องจำลอง iOS" ซึ่งจะติดตั้งใบรับรอง SSL CA ของ Charles ในเครื่องจำลอง iOS ของคุณโดยอัตโนมัติ

หรือคุณสามารถเปลี่ยนรหัสของคุณเพื่อให้ NSURLConnection ยอมรับใบรับรอง SSL ใด ๆ โปรดดูคำถามและคำตอบใน Stack Overflow: วิธีใช้ NSURLConnection เพื่อเชื่อมต่อกับ SSL สำหรับใบรับรองที่ไม่น่าเชื่อถือ

คุณสามารถตรวจสอบได้ที่ลิงค์นี้: http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/


2

'ติดตั้งใบรับรอง Charles Root ในเครื่องจำลอง iOS' ไม่สามารถใช้งานได้ในเวอร์ชันปัจจุบันของ CharlesProxy (3.11) ที่มีเครื่องจำลอง Xcode 7 / iOS 9

ให้ใช้ตัวเลือก 'ติดตั้งใบรับรอง Charles Root บนอุปกรณ์เคลื่อนที่หรือเบราว์เซอร์ระยะไกล ... ' แทน ซึ่งจะทำให้คุณมี url สำหรับใบรับรอง

หากคุณเปิด url นี้ใน Safari ในโปรแกรมจำลองคุณจะได้รับตัวเลือกในการติดตั้งใบรับรอง

จากนั้นคุณยังต้องปิดใช้งานการรักษาความปลอดภัยการขนส่งแอพ ฉันไม่เข้าใจว่าเหตุใดจึงจำเป็นเมื่อคุณติดตั้งใบรับรอง ฉันเดาว่า CharlesProxy ไม่ได้ใช้คีย์ / ลายเซ็นที่มีขนาดใหญ่เพียงพอ


หากไม่มีอะไรอื่นใบรับรองจะลงนามด้วยตนเองและแน่นอนว่าจะไม่บินตามข้อกำหนด ATS ของ Apple ขั้นตอนแรกคือการให้ใบรับรองของ Charles ลงนามโดยผู้ออกใบรับรองตามทำนองคลองธรรม แต่นอกเหนือจากการขนส่งแล้วจะต้องเสียเงิน โดเมนยังต้องเปิดเผยต่อสาธารณะ ฯลฯ มันจะไม่ง่ายเลยถ้าเป็นไปได้
Hampden123

@ Hampden123 เท่าที่ฉันรู้กลไก App Transport Security ของ Apple จะอนุญาตให้มีการลงนามด้วยตนเองตราบเท่าที่ได้รับการติดตั้งอย่างถูกต้องในอุปกรณ์ iOS เป็นใบรับรองที่เชื่อถือได้ดังนั้นฉันจึงเชื่อว่า charlesproxy ต้องการการปิดใช้งาน ATS ด้วยเหตุผลอื่น ดูเหมือนฉันจะไม่สามารถเข้าถึงเอกสาร Apple ATS เพื่อตรวจสอบสิ่งนี้ได้ในขณะนี้
JosephH

หากคุณ (หรือใครก็ตาม) ประสบความสำเร็จในการให้บริการใบรับรองที่ลงชื่อด้วยตนเองไปยังอุปกรณ์ iOS 9 โดยไม่ปิดใช้งาน ATS โปรดแจ้งให้เราทราบว่าคุณทำอย่างไร เทีย!
Hampden123


1

สำหรับผู้ที่ดิ้นรนกับการเชื่อมต่อที่ไม่น่าเชื่อถือบนเครื่องจำลองของ Xcode 9 beta:

ฉันไม่รู้ว่าสคริปต์การติดตั้งใช้งานได้หรือไม่ แต่คุณสามารถติดตั้งใบรับรองของ charles ในลักษณะเดียวกับบนอุปกรณ์จริง - ผ่าน Safari

ขั้นตอนสุดท้ายที่จำเป็น (แน่นอนหลังจากติดตั้งใบรับรองผ่านสคริปต์หรือผ่าน Safari): ไปที่การตั้งค่าของ Simluator -> ทั่วไป -> เกี่ยวกับ -> การตั้งค่าความน่าเชื่อถือของใบรับรอง -> Charles Proxy Custom Root ... -> เปิดใช้งาน💥


1

ขั้นตอนสำหรับ iOS Simulator

  • ติดตั้ง Charles - ดาวน์โหลด
  • เมนู Charles -> Proxy -> เปิดใช้งาน Mac Proxy
  • Charles Menu -> Tools -> Proxy -> Proxy Settings -> MacOS -> เลือกช่องทำเครื่องหมายทั้งหมด
  • ติดตั้ง Charles Certificate ในเครื่องจำลอง iOS
  • Charles Menu -> Help -> SSL Proxying -> ติดตั้ง Charles Ceritificate ใน iOS Simulators
  • เปิดใช้งาน Charles Certificate ใน iOS Simulators
  • การตั้งค่าเครื่องจำลอง iOS -> ทั่วไป -> เกี่ยวกับ -> การตั้งค่าความน่าเชื่อถือของใบรับรอง -> เปิด
  • หากการจราจรไม่ปรากฏขึ้นให้เรียกใช้ Charles ก่อนเครื่องจำลอง

ขั้นตอนสำหรับ iPhone / iPad

  • เปิดแอป Charles บนเดสก์ท็อป (Mac / Windows)
  • เมนูไปที่ Charles -> Help -> SSL Proxying -> ติดตั้ง Charles Ceritificate บนอุปกรณ์มือถือหรือเบราว์เซอร์ระยะไกล -> เลือก -> ป๊อปอัปปรากฏขึ้นพร้อมขั้นตอนด้านล่าง '

    กำหนดค่าอุปกรณ์ของคุณให้ใช้ Charles เป็น HTTP Proxy บน 192.168.0.100:8888จากนั้นเบราว์เซอร์ไปที่chls.pro/sslเพื่อดาวน์โหลดและติดตั้งใบรับรอง

  • ไปที่การตั้งค่า iPhone -> Wifi -> คลิก wifi ที่เลือก -> พร็อกซี Http -> กำหนดค่าพร็อกซี -> เลือกด้วยตนเอง -> ให้เซิร์ฟเวอร์เป็น 192.168.0.100 และพอร์ตเป็น 8888 -> บันทึก

  • ไปที่เบราว์เซอร์ iPhone -> โหลดchls.pro/ssl -> มันจะแสดงด้านล่างป๊อปอัป "

    เว็บไซต์กำลังพยายามดาวน์โหลดโปรไฟล์การกำหนดค่า คุณต้องการอนุญาตหรือไม่ ปุ่มละเว้นและปุ่มอนุญาต

  • คลิกปุ่มอนุญาต -> มันจะดาวน์โหลดโปรไฟล์

  • ไปที่การตั้งค่า iPhone -> ทั่วไป -> โปรไฟล์ -> โปรไฟล์ที่ดาวน์โหลด -> เลือกโปรไฟล์ Charles Proxy -> ติดตั้ง
  • ไปที่การตั้งค่า iPhone -> ทั่วไป -> เกี่ยวกับ -> การตั้งค่าความน่าเชื่อถือของใบรับรอง -> เปิดใช้งาน - ใบรับรอง Charles Proxy CA
  • ตอนนี้เราสามารถติดตามการโทรของแอพ iPhone ในแอพ Charles บนเดสก์ท็อปได้แล้ว

1
การตั้งค่าเครื่องจำลอง iOS -> ทั่วไป -> เกี่ยวกับ -> การตั้งค่าความน่าเชื่อถือของใบรับรอง -> เปิดสิ่งที่ฉันต้องการขอบคุณ!
atalayasa

0

สำหรับฉันนี่คือสิ่งที่ได้ผล

ฉันทำสิ่งเดียวกับที่เราทำในอุปกรณ์

  1. เปิดซาฟารีและเรียกดู chls.pro/ssl
  2. ยอมรับและติดตั้งใบรับรอง
  3. ไปที่การตั้งค่า / เกี่ยวกับ / เชื่อถือใบรับรองและเชื่อถือใบรับรองชาร์ล

ฉันต้องทำสิ่งนี้ใน 3 อินสแตนซ์จำลองเนื่องจากการทดสอบอัตโนมัติของ XCUI สามารถหมุน 3 ได้


0

มันใช้งานได้สำหรับฉันหลังจากไปที่ซาฟารี (จำลอง) และไปที่ URL:

chls.pro/ssl 

ก่อนที่ฉันจะต้องติดตั้งใบรับรองรูทของ charles ในเครื่องจำลอง iOS (Charles: help / SSLproxying)

ความนับถือ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.