วิธีตรวจสอบการโทรผ่านเครือข่ายจาก iOS Simulator


114

ฉันพยายามตรวจสอบการโทรจากแอปไปยังเซิร์ฟเวอร์ของฉันเหมือนกับที่ Firebug ทำ ฉันไม่พบวิธีที่จะเห็นสิ่งนั้นใน iOS Simulator หรือใน xCode

มีวิธีทำได้โดยไม่ต้องดมกลิ่นจราจรทั้งหมดหรือไม่? ถ้าไม่คุณจะแนะนำเครื่องมืออะไร

คำตอบ:


85

ส่วนตัวผมใช้Charlesสำหรับของแบบนั้น
เมื่อเปิดใช้งานจะตรวจสอบทุกคำขอเครือข่ายแสดงรายละเอียดคำขอเพิ่มเติมรวมถึงการสนับสนุน SSL และรูปแบบคำขอ / การตอบกลับต่างๆเช่น JSON ฯลฯ ...

นอกจากนี้คุณยังสามารถกำหนดค่าให้สูดดมเฉพาะคำขอไปยังเซิร์ฟเวอร์เฉพาะเท่านั้นไม่ใช่การรับส่งข้อมูลทั้งหมด

เป็นซอฟต์แวร์เชิงพาณิชย์ แต่มีการทดลองใช้และ IMHO เป็นเครื่องมือที่ยอดเยี่ยมอย่างแน่นอน


1
ใช้งานง่ายมากและกำหนดค่าและทำสิ่งที่ฉันต้องการขอบคุณ!
Mad Echet

4
ไม่สามารถทำงานได้อย่างง่ายดายเมื่อเซิร์ฟเวอร์ของคุณได้รับการปกป้องโดย TLS ซึ่งควรจะเป็น
carbocation

ฉันลอง Charles แต่ไม่สามารถตรวจสอบการจราจรขาออกได้ดีนัก ตัวอย่างเช่นฉันไม่ได้เปลี่ยนการจัดรูปแบบคำขอ POST ของฉันเป็น JSON
Jesus Rodriguez

24

man-in-the-middle proxy เช่นเดียวกับคำตอบอื่น ๆ ที่แนะนำเป็นทางออกที่ดีหากคุณต้องการดูการรับส่งข้อมูล HTTP / HTTPS เท่านั้น เรอสวีทสวยดี การกำหนดค่าอาจเป็นความเจ็บปวด ฉันไม่แน่ใจว่าคุณจะโน้มน้าวให้เครื่องจำลองคุยกับมันได้อย่างไร คุณอาจต้องตั้งค่าพร็อกซีบนเครื่อง Mac ของคุณให้เป็นอินสแตนซ์ของพร็อกซีเซิร์ฟเวอร์เพื่อให้มันดักจับได้เนื่องจากตัวจำลองจะใช้ประโยชน์จากสภาพแวดล้อมของ Mac ในเครื่องของคุณ

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

rvictl -s <iphone-uid-from-xcode-organizer>

จากนั้นคุณสูดดมอินเทอร์เฟซที่สร้างขึ้นด้วย Wireshark (หรือเครื่องมือโปรดของคุณ) และเมื่อคุณปิดอินเทอร์เฟซเสร็จแล้วด้วย:

rvictl -x <iphone-uid-from-xcode-organizer>

นี่เป็นสิ่งที่ดีเพราะหากคุณต้องการแพ็คเก็ตสูดอากาศจำลองคุณจะต้องลุยกับการรับส่งข้อมูลไปยัง Mac ในพื้นที่ของคุณเช่นกัน แต่rvictlสร้างอินเทอร์เฟซเสมือนที่แสดงปริมาณการใช้งานจากอุปกรณ์ iOS ที่คุณเสียบเข้ากับ USB ท่าเรือ.


1
+1 สำหรับ Burp Suite และไม่มีความเจ็บปวดในการกำหนดค่า: engadget.com/2011/02/21/…ใช้เวลาน้อยกว่า 10 นาที
Vladimir

20

เครื่องมือพร็อกซี่ฟรีและเปิดแหล่งที่วิ่งได้อย่างง่ายดายบน Mac เป็นmitmproxy

เว็บไซต์มีลิงก์ไปยัง Mac binary รวมถึงซอร์สโค้ดบน Github

เอกสารนี้มีคำแนะนำที่เป็นประโยชน์มากในการโหลดใบรับรองลงในอุปกรณ์ทดสอบของคุณเพื่อดูปริมาณการใช้งาน HTTPS

ไม่ค่อยมี GUI-tastic เหมือน Charles แต่ทำทุกอย่างที่ฉันต้องการและฟรีและบำรุงรักษา สิ่งที่ดีและค่อนข้างตรงไปตรงมาหากคุณเคยใช้เครื่องมือบรรทัดคำสั่งมาก่อน

อัปเดต: ฉันเพิ่งสังเกตบนเว็บไซต์ว่า mitmproxy พร้อมใช้งานในการติดตั้ง homebrew ไม่สามารถทำได้ง่ายกว่านี้


คุณมีโชคในการใช้ mitm สำหรับโปรแกรมจำลอง iOS หรือไม่? ฉันมีการตั้งค่า แต่การรับส่งข้อมูลจากคอมพิวเตอร์นอกเครื่องจำลองก็ถูกจับได้เช่นกันซึ่งไม่ดีที่สุด การใช้งานบนอุปกรณ์จริงนั้นน่าทึ่งมาก ทำมาหลายปีแล้ว
atreat

mitmweb คืออินเทอร์เฟซผู้ใช้บนเว็บของ mitmproxy ที่ช่วยให้สามารถตรวจสอบแบบโต้ตอบและแก้ไขการรับส่งข้อมูล HTTP ได้ เช่นเดียวกับ mitmproxy มันแตกต่างจาก mitmdump ตรงที่โฟลว์ทั้งหมดจะถูกเก็บไว้ในหน่วยความจำซึ่งหมายความว่ามันมีไว้สำหรับการรับและจัดการตัวอย่างขนาดเล็ก mitmproxy.readthedocs.io/en/v2.0.2/mitmweb.html
Raunak

15

เมื่อเร็ว ๆ นี้ฉันพบgit repoที่ทำให้ง่าย

คุณสามารถลอง

นี่คือภาพหน้าจอของแอป: ใส่คำอธิบายภาพที่นี่

ขอแสดงความนับถืออย่างสูง.


แม้ว่า Bagel จะยอดเยี่ยมและเรียบง่าย แต่เมื่อเร็ว ๆ นี้ฉันสังเกตเห็นว่ามันจะแสดงคำขอที่แคชไว้ด้วย ดังนั้นหากคุณต้องการทราบไบต์ที่โอนจริงเช่นนี้จะไม่เป็นประโยชน์
BlackWolf

10

Xcode ให้ CFNetwork Diagnostic Logging เอกสาร Apple

หากต้องการเปิดใช้งานให้เพิ่มCFNETWORK_DIAGNOSTICS=3ในส่วนตัวแปรสภาพแวดล้อม:

ใส่คำอธิบายภาพที่นี่

สิ่งนี้จะแสดงคำขอจากแอพพร้อมส่วนหัวและเนื้อหา โปรดทราบว่าOS_ACTIVITY_MODEต้องตั้งค่าenableเป็นดังที่แสดง มิฉะนั้นเอาต์พุตจะไม่แสดงบนคอนโซล


4

Wireshark มัน

เลือกอินเทอร์เฟซของคุณ

ใส่คำอธิบายภาพที่นี่

เพิ่มfilterเริ่มcapture

ใส่คำอธิบายภาพที่นี่


การทดสอบ

คลิกที่การกระทำหรือปุ่มใด ๆ ที่จะทำให้เกิดคำขอ GET / POST / PUT / DELETE

คุณจะเห็นมันอยู่ในรายการ Wirehark

ใส่คำอธิบายภาพที่นี่

หากคุณต้องการทราบรายละเอียดเพิ่มเติมเกี่ยวกับแพ็คเก็ตหนึ่งที่เฉพาะเจาะจงเพียงแค่เลือกมันและติดตาม> HTTP สตรีม

ใส่คำอธิบายภาพที่นี่

หวังว่านี่จะช่วยคนอื่นได้ !!


3

หากคุณมีการเชื่อมต่อสายเคเบิลและ Mac มีวิธีที่ง่ายและมีประสิทธิภาพ:

  1. ติดตั้ง Wireshark ฟรีตรวจสอบให้แน่ใจว่าสามารถจับภาพอุปกรณ์ด้วย (และคุณต้องทำสิ่งนี้หลังจากรีสตาร์ทคอมพิวเตอร์ทุกครั้ง !):

    sudo chmod 644 / dev / bpf *

  2. ตอนนี้แบ่งปันเครือข่ายของคุณด้วย wifi การตั้งค่าระบบ> การแชร์> การแชร์อินเทอร์เน็ต ตรวจสอบว่าคุณมี "แชร์การเชื่อมต่อจาก: อีเธอร์เน็ต" และใช้: Wi-Fi คุณอาจต้องการกำหนดค่าความปลอดภัย wifi บางอย่างด้วยโดยจะไม่รบกวนการตรวจสอบข้อมูลของคุณ

  3. เชื่อมต่อโทรศัพท์ของคุณกับเครือข่ายที่สร้างขึ้นใหม่ ฉันต้องพยายามหลายครั้งที่นี่ หากโทรศัพท์ไม่ต้องการเชื่อมต่อให้เปิด wifi ของ Mac จากนั้นทำซ้ำขั้นตอนที่ 2 ด้านบนและอดทนรอ

  4. เริ่ม Wireshark จับภาพอินเทอร์เฟซไร้สายของคุณด้วย Wireshark ซึ่งอาจเป็น "en1" กรองที่อยู่ IP และ / หรือพอร์ตที่คุณต้องการ เมื่อคุณพบแพ็คเกจที่น่าสนใจให้เลือกแล้วคลิกขวา (เมนูบริบท)> ติดตามสตรีม TCP และคุณจะเห็นการแสดงข้อความที่ดีของคำขอและคำตอบ

และอะไรคือสิ่งที่ดีที่สุด: เคล็ดลับเดียวกันนี้ใช้ได้กับ Android ด้วย!


คุณสามารถใช้สิ่งนี้กับเครื่องจำลองของคุณได้หรือไม่? ฉันยังไม่มีแอปในโทรศัพท์
Joshua Dance

@Joshua Dance คุณสามารถใช้กับโปรแกรมจำลองได้หากมีการร้องขอเครือข่ายภายนอก การเชื่อมต่อกับ localhost ไม่สามารถตรวจสอบได้ด้วย wirehark เนื่องจากไม่ได้ผ่าน "wire" (การ์ดเครือข่าย)
JaakL

1

Telerik Fiddler เป็นตัวเลือกที่ดี

http://www.telerik.com/blogs/using-fiddler-with-apple-ios-devices


วิธีการทำงานบนเครื่อง OSX? พิจารณาสองแท็กคือ xcode และ ios-simulator
Kevin R

@KevinR, 1. Telerik มี Fiddler เวอร์ชันเบต้าสำหรับ OS X 2 ไม่มีที่ไหนเลยในคำถามที่กล่าวว่าตัวเลือก จำกัด เฉพาะ OS X telerik.com/blogs/using-fiddler-with-apple-ios-devices
Konstantin Salavatov

2
@KonstantinSalavatov หัวข้อของโพสต์ต้นฉบับคือ "วิธีตรวจสอบการโทรผ่านเครือข่ายจาก iOS Simulator" สำหรับ iOS Simulator เพียงทำงานบน OS X ดังนั้นใช่ทางเลือกที่ถูกจำกัด ให้ OS X ได้
ChillyPenguin

1
+1 ฉันคิดว่าคุณควรโหวตตอนนี้เพราะตอนนี้รองรับ Mac OS X แล้ว! : D telerik.com/fiddler#SupportedTechnologiesและที่นี่telerik.com/download/fiddler/fiddler-osx-beta
David

1
  1. ติดตั้ง WireShark
  2. รับที่อยู่ IP จากจอภาพเครือข่าย xcode
  3. ฟังอินเทอร์เฟซ wifi
  4. ตั้งค่าตัวกรอง ip.addr == 192.168.1.122 ใน WireShark

0

ทางออกที่ดีหากคุณคุ้นเคยกับเครื่องมือตรวจสอบ Chrome คือ Pony debugger: https://github.com/square/PonyDebugger

การตั้งค่าเป็นเรื่องที่น่าปวดหัวพอสมควร แต่เมื่อคุณทำได้ดีแล้ว อย่าลืมใช้ Safari แทน Chrome เพื่อใช้งาน


0

ฉันใช้ netfox มันง่ายมากที่จะใช้และบูรณาการ คุณสามารถใช้บนโปรแกรมจำลองและอุปกรณ์ จะแสดงคำขอและการตอบกลับทั้งหมด รองรับ JSON, XML, HTML, รูปภาพและการตอบสนองประเภทอื่น ๆ คุณสามารถแชร์คำขอคำตอบและบันทึกแบบเต็มตามรูปแบบการแบ่งปันเริ่มต้นของ iOS (Gmail, WhatsApp, อีเมล, หย่อน, SMS ฯลฯ )

คุณสามารถตรวจสอบ GitHub: https://github.com/kasketis/netfox

Netfox ให้การตรวจสอบคำขอเครือข่ายทั้งหมดที่ดำเนินการโดยแอป iOS หรือ OSX ของคุณอย่างรวดเร็ว รับคำขอทั้งหมด - แน่นอนว่าเป็นของคุณคำขอจากห้องสมุดบุคคลที่สาม (เช่น AFNetworking, Alamofire หรืออื่น ๆ ), UIWebViews และอื่น ๆ

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