โปรแกรมจำลอง Android: จะตรวจสอบปริมาณการใช้งานเครือข่ายได้อย่างไร?


คำตอบ:


104

มีสองวิธีในการจับการรับส่งข้อมูลเครือข่ายโดยตรงจากโปรแกรมจำลอง Android:

  1. คัดลอกและเรียกใช้ไบนารี tcpdump ที่เข้ากันได้กับ ARMบนอีมูเลเตอร์เขียนเอาต์พุตไปยังการ์ด SD บางที (เช่นtcpdump -s0 -w /sdcard/emulator.cap)

  2. เรียกใช้emulator -tcpdump emulator.cap -avd my_avdเพื่อเขียนทราฟฟิกของอีมูเลเตอร์ทั้งหมดไปยังไฟล์ในเครื่องบนพีซีของคุณ

ในทั้งสองกรณีคุณสามารถวิเคราะห์ไฟล์ pcap ด้วย tcpdump หรือ Wireshark ได้ตามปกติ


ดังนั้นจึงไม่ใช่แบบเรียลไทม์ / ออนไลน์? ฉันหมายความว่าแพ็กเก็ตสามารถวิเคราะห์ได้ในตอนท้ายเท่านั้น?
fikr4n

ในกรณีแรกคุณสามารถวิเคราะห์ผ่าน stdout บนอุปกรณ์แทนการเขียนลงไฟล์ ในกรณีที่สองคุณอาจสตรีม / ต่อท้ายไฟล์ได้ตามที่เขียนไว้ หรือคุณสามารถจับการรับส่งข้อมูลเครือข่ายบนเครื่องโฮสต์แทนที่จะเป็นบนโปรแกรมจำลอง
Christopher Orr

ฉันพบอีมูเลเตอร์ที่ฉันใช้อยู่ตอนนี้ติดตั้ง tcpdump แล้วและคำสั่ง # 1 ใช้งานได้โดยไม่ต้องติดตั้ง คุณยังสามารถเรียกใช้ด้วย "adb -e shell tcpdump -s0 -w /sdcard/emulator.cap"
Les

2
หากคุณกำลังใช้วิธีการแก้ปัญหาที่ 2 และคุณจะได้รับThe -tcpdump flag is not supported in QEMU2 yet and will be ignored.การแจ้งเตือนให้เพิ่ม-engine คลาสสิกemulator -tcpdump emulator.cap -avd my_avd -engine classicกับคำสั่งของคุณเช่นนี้: สิ่งนี้จะบังคับให้เอ็นจินอีมูเลเตอร์เลิกใช้งาน แต่ควรใช้งานได้จนกว่าจะแก้ไขปัญหาได้
lagoman

ที่avdตั้ง?
user3806649

20

นอกจากนี้ยังสามารถใช้พร็อกซี http เพื่อตรวจสอบคำขอ http จากโปรแกรมจำลอง คุณสามารถส่งผ่าน-http-proxyค่าสถานะเมื่อเริ่มโปรแกรมจำลองใหม่เพื่อตั้งค่าพร็อกซี (ตัวอย่างเรอ ) เพื่อตรวจสอบปริมาณการใช้งาน Android ./emulator -http-proxy localhost:8080 -avd android2.2ตัวอย่างการใช้งาน โปรดสังเกตว่าในตัวอย่างของฉันฉันใช้เรอและมันจะฟังพอร์ต 8080 ข้อมูลเพิ่มเติมสามารถพบได้ที่นี่


2
สิ่งที่เกี่ยวกับการเข้าชม https
pee2pee

10

สำหรับ OS X คุณสามารถใช้Charlesมันง่ายและใช้งานง่าย

สำหรับข้อมูลเพิ่มเติมโปรดดูที่บล็อกโพสต์ของAndroid Emulator และ Charles Proxy


1
ไม่รู้Charlesมาก่อนเลย แต่เท่าที่ฉันเห็นมันเป็นเฉพาะ HTTP แต่คำถามของ OP ไม่ใช่
Siu Ching Pong -Asuka Kenji-

Charles ยังมีอยู่สำหรับ Linux ฉันได้ติดตั้งบน Ubuntu 18.04 ของฉัน
Marecky

6

Android Studio รุ่นปัจจุบันใช้-tcpdumpอาร์กิวเมนต์ไม่ถูกต้อง ฉันยังสามารถจับดัมพ์ได้โดยส่งผ่านพารามิเตอร์ที่เกี่ยวข้องไปยัง qemu ดังนี้:

tools/emulator -engine classic -tcpdump dump.cap -avd myAvd

5

ใช่ Wirehark จะใช้งานได้

ฉันไม่คิดว่าจะมีวิธีง่ายๆในการกรองทราฟฟิกของอีมูเลเตอร์เพียงอย่างเดียวเนื่องจากมันมาจาก src IP เดียวกัน

บางทีวิธีที่ดีที่สุดคือการตั้งค่าสภาพแวดล้อม VMware ที่เปลือยเปล่าและเรียกใช้โปรแกรมจำลองในนั้นเท่านั้นอย่างน้อยวิธีนั้นก็จะไม่มีการรับส่งข้อมูลพื้นหลังมากเกินไป


ข้อเสนอแนะที่ดี แต่มันยากที่จะทำให้โปรแกรมจำลองทำงานอยู่บน VM คุณได้รับสิ่งนี้แล้วหรือยัง?
MikeSchem

ปัญหาใดที่คุณพบ ยังไม่ได้ทำเอง แต่นึกไม่ถึงว่าจะมีปัญหาอะไร
Bitdivision

ในกรณีของฉันคำขอที่ส่งไปเป็นสีเขียวทั้งหมดที่ฉันทำคือปิดเบราว์เซอร์อื่นและฉันสามารถมองเห็นแถวสีเขียวหวานได้ เมื่อคุณพบคำขอแล้วให้คัดลอกที่อยู่ปลายทางจากนั้นคุณสามารถใช้ในตัวกรองได้โดยใส่ ip.dst == "ที่อยู่ ip ที่คุณคัดลอก" และดูเฉพาะคำขอที่เกี่ยวข้อง
Ritveak

5

ขณะนี้สามารถใช้ Wireshark โดยตรงเพื่อจับภาพการรับส่งข้อมูลโปรแกรมจำลอง Android มีปลั๊กอินextcap ที่เรียกว่าandroiddumpซึ่งทำให้เป็นไปได้ คุณต้องมีtcpdumpไฟล์ปฏิบัติการในอิมเมจระบบที่รันบนอีมูเลเตอร์ (อิมเมจปัจจุบันส่วนใหญ่มีมันทดสอบด้วยอิมเมจ API 24 และ API 27) และadbdรันเป็นรูทบนโฮสต์ (แค่รันadb root) ในรายการอินเทอร์เฟซที่มีให้ใช้งานใน Wireshark (เฉพาะรุ่น Qt GTK + ที่เลิกใช้แล้วไม่มี) หรือรายการที่แสดงพร้อมกับtshark -Dอินเทอร์เฟซ Android หลายตัวที่อนุญาตให้ดมกลิ่นบลูทู ธ Logcat หรือการรับส่งข้อมูล Wifi เช่น:

android-wifi-tcpdump-emulator-5554 (Android WiFi Android_SDK_built_for_x86 emulator-5554)


4

คุณสามารถใช้Fiddlerเพื่อตรวจสอบการรับส่งข้อมูล http:

http://aurir.wordpress.com/2010/03/22/tutorial-getting-android-emulator-working-with-fiddler-http-proxy-tool/

นอกจากนี้คุณยังสามารถใช้ Fiddler2 ที่นี่


2
ลิงค์อื่นที่นี่ ฉันจะเพิ่มว่าพร็อกซีเซิร์ฟเวอร์ควรเป็น10.0.2.2ที่อยู่ IP ของเครื่องโฮสต์ในโปรแกรมจำลอง Android ไม่จำเป็นต้องค้นหาว่ามันคืออะไร
Mendhak

2

-avd Adfmf -http-proxy http://SYSTEM_IP:PORTคุณสามารถเริ่มต้นจำลองที่มีคำสั่ง ฉันใช้ HTTP Analyzer แต่ควรใช้กับอย่างอื่น สามารถดูรายละเอียดเพิ่มเติมได้ที่นี่: http://stick2code.blogspot.in/2014/04/intercept-http-requests-sent-from-app.html


2

คุณสามารถใช้ http://docs.mitmproxy.org/en/stable/install.html

ติดตั้งง่ายและไม่ต้องปรับแต่งใด ๆ เพิ่มเติม

ฉันใช้เครื่องมือต่าง ๆ แต่พบว่ามันดีและง่ายมาก


ไม่รู้mitmproxyมาก่อนเลย แต่เท่าที่ฉันเห็นมันเป็นเฉพาะ HTTP แต่คำถามของ OP ไม่ใช่
Siu Ching Pong -Asuka Kenji-

1
ใหม่ Android Studio 3.0 มี profiler คุณสามารถใช้งานได้ และสำหรับ mitm จะมีโปรโตคอล http, https และอื่น ๆ คุณเพียงแค่ต้องกำหนดค่าพร็อกซีให้ถูกต้อง
Dhiraj Himani

สามารถจับภาพแพ็กเก็ตจากแอปที่ฉันไม่ได้พัฒนาได้หรือไม่ และบนโปรแกรมจำลองของบุคคลที่สามเช่น Nox App Player? ขอบคุณ!
Siu Ching Pong -Asuka Kenji-

1
ใช่คุณควรมีใบรับรอง mitm ติดตั้งบนอีมูเลเตอร์ / อุปกรณ์ของคุณซึ่งได้รับจาก mitm เองและคุณสามารถใช้สิ่งนี้เพื่อดูคำขอต่อเนื่องและการตอบกลับที่เกี่ยวข้อง
Dhiraj Himani

2

คุณสามารถตรวจสอบปริมาณการใช้งานเครือข่ายจาก Android Studio ไปที่ Android Monitor และเปิดแท็บ Network

http://developer.android.com/tools/debugging/ddms.html

อัปเดต: ⚠️การตรวจสอบอุปกรณ์ Android เลิกใช้งานแล้วใน Android Studio 3.1 ดูเพิ่มเติมในhttps://developer.android.com/studio/profile/monitor


5
บอกได้ไหมว่าจะเปิดแท็บรายละเอียดการใช้งานเครือข่ายใน android studio 1.5 (windows) จากที่ไหนตามภาพในลิงค์ฉันได้แค่กราฟ แต่ไม่ทราบรายละเอียด
Shreyans jain

โปรดทราบว่าตัวเลือกนี้ให้ข้อมูลเชิงลึกที่ จำกัด ฉันไม่สามารถแก้ปัญหาของฉันได้ในที่ที่ฉันต้องการทราบว่าเหตุใดคำขอจึงถูกปฏิเสธเนื่องจาก Android ไม่ได้บอกอะไรเกี่ยวกับคำขอนี้ Fiddler เหมาะกว่าที่นี่
Highriser

2

ฉันขอแนะนำให้คุณใช้Wireshark

ขั้นตอน:

  1. ติดตั้ง Wireshark
  2. เลือกการเชื่อมต่อเครือข่ายที่คุณใช้สำหรับการโทร (เช่นเลือก Wifi หากคุณกำลังใช้งาน)
  3. จะมีคำขอและการตอบกลับมากมายปิดแอปพลิเคชันเสริม
  4. โดยปกติคำขอจะเป็นสีเขียวเมื่อคุณพบคำขอของคุณแล้วให้คัดลอกที่อยู่ปลายทางและใช้ตัวกรองด้านบนโดยพิมพ์ip.dst==52.187.182.185โดยใส่ที่อยู่ปลายทาง

คุณสามารถใช้เทคนิคการกรองอื่น ๆ ที่กล่าวถึงที่นี่เพื่อรับการเข้าชมที่เจาะจงได้

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