Cách giám sát các cuộc gọi mạng được thực hiện từ Trình mô phỏng iOS


113

Tôi đang cố gắng theo dõi các cuộc gọi từ một ứng dụng đến máy chủ của mình giống như Firebug. Tôi không thể tìm thấy cách để xem điều đó trong Trình mô phỏng iOS hoặc trong xCode.

Có cách nào để làm điều đó mà không đánh hơi tất cả lưu lượng truy cập không? Nếu không, bạn sẽ đề xuất công cụ nào?

Câu trả lời:


84

Cá nhân tôi sử dụng Charles cho loại công cụ đó.
Khi được bật, nó sẽ theo dõi mọi yêu cầu mạng, hiển thị chi tiết yêu cầu mở rộng, bao gồm hỗ trợ cho SSL và định dạng yêu cầu / phản hồi khác nhau, như JSON, v.v.

Bạn cũng có thể định cấu hình nó để chỉ đánh hơi các yêu cầu đến các máy chủ cụ thể, không phải toàn bộ lưu lượng.

Đó là phần mềm thương mại, nhưng có một bản dùng thử và IMHO chắc chắn là một công cụ tuyệt vời.


1
Thực sự dễ sử dụng và cấu hình và làm chính xác những gì tôi muốn, cảm ơn!
Mad Echet

3
Không dễ dàng hoạt động khi máy chủ của bạn được bảo vệ bởi TLS, điều này nên làm.
cacbocation

Tôi đã thử Charles nhưng tôi không thể giám sát lưu lượng đi rất tốt. Ví dụ: tôi không thay đổi định dạng yêu cầu ĐĂNG của mình thành JSON
Jesus Rodriguez

24

Một proxy man-in-the-middle, giống như được đề xuất bởi các câu trả lời khác, là một giải pháp tốt nếu bạn chỉ muốn xem lưu lượng HTTP / HTTPS. Burp Suite là khá tốt. Nó có thể là một khó khăn để cấu hình mặc dù. Tôi không chắc bạn sẽ thuyết phục trình giả lập nói chuyện với nó như thế nào. Bạn có thể phải đặt proxy trên máy Mac cục bộ của mình thành phiên bản máy chủ proxy để nó có thể chặn được, vì trình mô phỏng sẽ sử dụng môi trường máy Mac cục bộ của bạn.

Giải pháp tốt nhất để đánh hơi gói (mặc dù nó chỉ hoạt động cho các thiết bị iOS thực tế , không phải trình mô phỏng) mà tôi đã tìm thấy là sử dụng rvictl. Bài đăng trên blog này có một bài viết tốt. Về cơ bản bạn làm:

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

Sau đó, bạn kiểm tra giao diện mà nó tạo ra với Wireshark (hoặc công cụ yêu thích của bạn) và khi bạn hoàn tất, hãy tắt giao diện với:

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

Điều này rất hay vì nếu bạn muốn gói tin trình mô phỏng, bạn cũng phải chuyển qua lưu lượng truy cập vào máy Mac cục bộ của mình, nhưng rvictltạo một giao diện ảo chỉ hiển thị cho bạn lưu lượng truy cập từ thiết bị iOS mà bạn đã cắm vào USB của mình Hải cảng.


1
+1 cho Burp Suite và không cần phải định cấu hình nó: engadget.com/2011/02/21/… Chỉ mất chưa đầy 10 phút
Vladimir

20

Một công cụ proxy mã nguồn mở và miễn phí chạy dễ dàng trên máy Mac là mitmproxy .

Trang web bao gồm các liên kết đến hệ nhị phân Mac, cũng như mã nguồn trên Github.

Tài liệu chứa phần giới thiệu rất hữu ích để tải chứng chỉ vào thiết bị thử nghiệm của bạn để xem lưu lượng HTTPS.

Không hoàn toàn như GUI-tastic như Charles, nhưng nó làm mọi thứ tôi cần và miễn phí và duy trì. Công cụ tốt và khá đơn giản nếu bạn đã sử dụng một số công cụ dòng lệnh trước đây.

CẬP NHẬT: Tôi vừa nhận thấy trên trang web rằng mitmproxy có sẵn dưới dạng cài đặt homebrew. Không thể dễ dàng hơn.


Bạn đã gặp may mắn khi sử dụng mitm cho trình mô phỏng iOS chưa? Tôi đã thiết lập nó nhưng lưu lượng truy cập từ máy tính của tôi bên ngoài trình mô phỏng cũng bị bắt, điều này không phải là tốt nhất. Sử dụng nó trên một thiết bị thực tế thật tuyệt vời. Được làm việc đó trong nhiều năm.
atreat

mitmweb là giao diện người dùng dựa trên web của mitmproxy cho phép kiểm tra tương tác và sửa đổi lưu lượng HTTP. Giống như mitmproxy, nó khác với mitmdump ở chỗ tất cả các luồng đều được lưu trong bộ nhớ, có nghĩa là nó được dùng để lấy và xử lý các mẫu nhỏ mitmproxy.readthedocs.io/en/v2.0.2/mitmweb.html
Raunak

15

Gần đây, tôi đã tìm thấy một repo git giúp việc này trở nên dễ dàng.

Bạn có thể thử nó.

Đây là ảnh chụp màn hình của ứng dụng: nhập mô tả hình ảnh ở đây

Trân trọng.


Mặc dù Bagel rất tuyệt và đơn giản, nhưng gần đây tôi nhận thấy rằng nó cũng sẽ hiển thị các yêu cầu được lưu trong bộ nhớ cache. Vì vậy, nếu bạn muốn biết các byte thực tế được chuyển, chẳng hạn, điều này không hữu ích.
BlackWolf

10

Xcode cung cấp tính năng Ghi nhật ký chẩn đoán CFNetwork. Apple doc

Để kích hoạt nó, hãy thêm CFNETWORK_DIAGNOSTICS=3vào phần Biến môi trường:

nhập mô tả hình ảnh ở đây

Điều này sẽ hiển thị các yêu cầu từ Ứng dụng với tiêu đề và nội dung của ứng dụng. Lưu ý rằng OS_ACTIVITY_MODEphải được đặt thành enablenhư hình. Nếu không, sẽ không có đầu ra nào được hiển thị trên Bảng điều khiển.


4

Wireshark nó

Chọn giao diện của bạn

nhập mô tả hình ảnh ở đây

Thêm filterbắt đầucapture

nhập mô tả hình ảnh ở đây


Thử nghiệm

Nhấp vào bất kỳ hành động hoặc nút nào sẽ kích hoạt yêu cầu GET / POST / PUT / DELETE

Bạn sẽ thấy nó được liệt kê trong Wirehark

nhập mô tả hình ảnh ở đây

Nếu bạn muốn biết thêm chi tiết về một gói cụ thể, chỉ cần chọn gói đó và Theo dõi> Luồng HTTP .

nhập mô tả hình ảnh ở đây

hy vọng điều này sẽ giúp những người khác !!


3

Nếu bạn có kết nối cáp và máy Mac, thì có một phương pháp đơn giản và mạnh mẽ:

  1. cài đặt Wireshark miễn phí, đảm bảo rằng nó có thể chụp các thiết bị bằng (và bạn cần làm điều này sau mỗi lần khởi động lại máy tính !):

    sudo chmod 644 / dev / bpf *

  2. Bây giờ chia sẻ mạng của bạn với wifi. Tùy chọn hệ thống> Chia sẻ> Chia sẻ Internet. Kiểm tra xem bạn có "Chia sẻ kết nối của bạn từ: Ethernet" và sử dụng: Wi-Fi. Bạn cũng có thể muốn cấu hình một số bảo mật wifi, nó không làm phiền việc giám sát dữ liệu của bạn.

  3. Kết nối điện thoại của bạn với mạng mới tạo của bạn. Tôi cần khá nhiều lần thử ở đây. Nếu điện thoại không muốn kết nối, bật wifi của Mac thì bạn làm lại bước 2 ở trên và kiên nhẫn.

  4. Khởi động Wireshark chụp giao diện không dây của bạn với Wireshark, nó có thể là "en1". Lọc địa chỉ IP và / hoặc cổng cần thiết của bạn. Khi bạn tìm thấy một gói thú vị, hãy chọn nó, Nhấp chuột phải (menu ngữ cảnh)> Theo dõi TCP Stream và bạn sẽ thấy phần trình bày bằng văn bản đẹp về các yêu cầu và câu trả lời.

Và điều tốt nhất là gì: chính xác thì thủ thuật tương tự cũng hoạt động cho Android!


Bạn có thể sử dụng điều này với trình mô phỏng của mình không? Tôi chưa có ứng dụng trên điện thoại của mình.
Joshua Dance

@Joshua Dance, bạn có thể sử dụng nó với trình giả lập, nếu nó yêu cầu mạng bên ngoài. Các kết nối với localhost không thể được theo dõi bằng wirehark, vì chúng không qua "wire" (card mạng)
JaakL

1

Telerik Fiddler là một lựa chọn tốt

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


Nó sẽ hoạt động như thế nào trên máy OSX? Xem xét hai trong số các thẻ là xcode và ios-simulator.
Kevin R

@KevinR, 1. Telerik có phiên bản beta của Fiddler cho OS X 2. Không có chỗ nào trong câu hỏi được cho rằng sự lựa chọn bị giới hạn ở OS X telerik.com/blogs/using-fiddler-with-apple-ios-devices
Konstantin Salavatov

2
@KonstantinSalavatov, Chủ đề của bài đăng gốc là "Cách theo dõi các cuộc gọi mạng được thực hiện từ Trình mô phỏng iOS". IOS Simulator chỉ chạy trên OS X, do đó có, sự lựa chọn được giới hạn trong OS X.
ChillyPenguin

1
+1 Tôi nghĩ bạn nên ủng hộ điều này ngay bây giờ, vì hiện tại đã có hỗ trợ cho Mac OS X! : D telerik.com/fiddler#SupportedTechnologies và tại đây telerik.com/download/fiddler/fiddler-osx-beta
David Noreña

1
  1. Cài đặt WireShark
  2. lấy địa chỉ ip từ màn hình mạng xcode
  3. giao diện nghe wifi
  4. đặt bộ lọc ip.addr == 192.168.1.122 trong WireShark

0

Một giải pháp tốt nếu bạn đã quen với các công cụ kiểm tra chrome là trình gỡ lỗi Pony: https://github.com/square/PonyDebugger

Nó là một chút khó khăn để thiết lập, nhưng một khi bạn làm nó hoạt động tốt. Tuy nhiên, hãy đảm bảo sử dụng Safari thay vì Chrome để sử dụng.


0

Tôi sử dụng netfox. Nó rất dễ sử dụng và tích hợp. Bạn có thể sử dụng nó trên trình mô phỏng và thiết bị. Nó hiển thị tất cả các yêu cầu và phản hồi. Nó hỗ trợ JSON, XML, HTML, Hình ảnh và các loại phản hồi khác. Bạn có thể chia sẻ yêu cầu, phản hồi và nhật ký đầy đủ theo các định dạng chia sẻ mặc định của IOS (Gmail, WhatsApp, email, slack, sms, v.v.)

Bạn có thể kiểm tra trên GitHub: https://github.com/kasketis/netfox

Netfox cung cấp một cái nhìn nhanh về tất cả các yêu cầu mạng đã thực thi được thực hiện bởi ứng dụng iOS hoặc OSX của bạn. Nó lấy tất cả các yêu cầu - tất nhiên là của bạn, yêu cầu từ các thư viện của bên thứ 3 (chẳng hạn như AFNetworking, Alamofire hoặc khác), UIWebViews, v.v.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.