Network Inspector — khái niệm, nguyên lý hoạt động và giám sát yêu cầu mạng

Tác giả: IT Sectr Đã đăng: 2026-05-07 Thời gian đọc: 8 phút

Network Inspector trong Android Studio là công cụ phân tích tích hợp sẵn, được thiết kế để giám sát và phân tích lưu lượng mạng của ứng dụng di động theo thời gian thực. Theo tài liệu chính thức của Android Developers (2025), công cụ này cho phép theo dõi thời gian thực hiện yêu cầu, khối lượng dữ liệu được truyền và trạng thái HTTP của mỗi cuộc gọi. Công cụ không yêu cầu thay đổi mã ứng dụng và hoạt động “sẵn sàng” với mọi dự án có API Level 14 trở lên.

Tóm tắt chính

  • Network Inspector — là thành phần của Android Profiler để giám sát các yêu cầu mạng với khả năng xem tiêu đề và nội dung phản hồi
  • Chặn lưu lượng diễn ra tự động cho tất cả các cuộc gọi HTTP từ ứng dụng, bao gồm OkHttp, Retrofit, Ktor và WebView
  • Dòng thời gian hiển thị trình tự các yêu cầu với thời lượng, kích thước và trạng thái của mỗi cuộc gọi
  • Xem chi tiết từng yêu cầu bao gồm tiêu đề, nội dung yêu cầu và phản hồi, cookie và thời gian thực hiện theo từng giai đoạn
  • Xuất dữ liệu ở định dạng HAR cho phép chuyển tương tác mạng cho đồng nghiệp hoặc lưu lại để phân tích sau

Network Inspector là gì?

Network Inspector là công cụ phân tích hoạt động mạng được tích hợp trong Android Studio. Nó cho phép nhà phát triển xem theo thời gian thực tất cả các yêu cầu HTTP và HTTPS mà ứng dụng gửi đi, bao gồm tiêu đề, nội dung yêu cầu và phản hồi, mã trạng thái và thời gian thực hiện. Có thể truy cập qua bảng Android Profiler từ Android Studio 3.0.

Mục đích và phạm vi ứng dụng

Nhiệm vụ chính của Network Inspector là gỡ lỗi tương tác mạng giữa ứng dụng di động và máy chủ. Công cụ này được sử dụng để kiểm tra tính chính xác của dữ liệu truyền, phân tích thời gian phản hồi, tìm lỗi API và phát hiện các mẫu mạng không tối ưu — ví dụ như nhiều yêu cầu khi tải một màn hình. Network Inspector hoạt động trên mọi thiết bị có API Level 14.

Tương thích và thư viện

Công cụ hỗ trợ tất cả các HTTP client Android chính: OkHttp (từ phiên bản 2.x), Retrofit, Ktor (KMM), UrlConnection, Apache HttpClient (cũ) và WebView. Đối với OkHttp và Retrofit cần thư viện OkHttp Profiler — nó được kết nối tự động khi sử dụng Android Studio 4.1+. Đối với Ktor cần cấu hình riêng bộ chặn.

Cách Network Inspector hoạt động

Network Inspector chặn các cuộc gọi mạng ở cấp độ hệ thống, sử dụng cơ chế Profiler Agent được tích hợp cùng Android Profiler. Yêu cầu bản build debug của ứng dụng để hoạt động chính xác. Công cụ không thay đổi mã ứng dụng và không yêu cầu thêm phụ thuộc cho chức năng cơ bản.

Cơ chế chặn lưu lượng

Khi bắt đầu phân tích, Network Inspector kết nối với tiến trình Debug của ứng dụng và lắng nghe tất cả các cuộc gọi HTTP đi qua OkHttp Client, UrlConnection hoặc các thư viện được hỗ trợ khác. Mỗi yêu cầu được ghi lại với dấu thời gian, cho phép xây dựng dòng thời gian hoạt động mạng. Đối với HTTPS, lớp hệ thống được sử dụng, giữ mã hóa trong quá trình truyền nhưng cho phép xem nội dung đã giải mã trong Studio.

Kiến trúc thu thập dữ liệu

Việc thu thập dữ liệu diễn ra thông qua Profiler Service của Android Studio, chạy trong một tiến trình riêng trên máy chủ. Trên thiết bị chạy một tác nhân nhẹ, truyền siêu dữ liệu yêu cầu qua kênh ADB. Điều này giảm thiểu tác động đến hiệu suất ứng dụng — chi phí overhead dưới 3% theo Google. Dữ liệu yêu cầu (nội dung, tiêu đề) chỉ được truyền khi đang xem chi tiết.

kotlin
// Kết nối OkHttp để tích hợp với Network Inspector
val client = OkHttpClient.Builder()
    .addInterceptor(HttpLoggingInterceptor().apply {
        level = HttpLoggingInterceptor.Level.BASIC
    })
    .build()

// Network Inspector tự động chặn tất cả các cuộc gọi qua client
client.newCall(Request.Builder()
    .url("https://api.example.com/data")
    .build()).execute()

Tính năng chính của Network Inspector

Network Inspector cung cấp bộ công cụ để phân tích toàn diện lưu lượng mạng. Mỗi chức năng hướng đến giải quyết một tác vụ gỡ lỗi cụ thể — từ kiểm tra tiêu đề đến phân tích hiệu suất API.

Dòng thời gian yêu cầu

Màn hình chính của Network Inspector hiển thị trình tự thời gian của tất cả yêu cầu dưới dạng dòng thời gian. Mỗi yêu cầu được biểu diễn bằng một thanh màu: xanh lá — phản hồi thành công (2xx), xanh dương — chuyển hướng (3xx), vàng — lỗi máy khách (4xx), đỏ — lỗi máy chủ (5xx). Độ dài thanh tương ứng với thời gian thực hiện yêu cầu từ kết nối đến khi nhận được phản hồi đầy đủ. Điều này cho phép phát hiện ngay các yêu cầu chậm hoặc bị lỗi.

Tham sốMô tảGiá trị ví dụ
URLĐịa chỉ đầy đủ của yêu cầuhttps://api.example.com/v2/users
MethodPhương thức HTTP của yêu cầuPOST
StatusMã HTTP phản hồi200 OK
SizeKích thước yêu cầu + phản hồi (byte)12.4 KB
TimeThời gian thực hiện đầy đủ342 ms

Xem chi tiết yêu cầu

Khi chọn một yêu cầu cụ thể, bảng chi tiết sẽ mở ra: Headers(tất cả tiêu đề yêu cầu và phản hồi), Request Body(nội dung yêu cầu ở định dạng văn bản hoặc nhị phân), Response Body(nội dung phản hồi với hỗ trợ định dạng JSON), Cookies(cookie đã gửi và nhận), Timing(phân chia thời gian theo giai đoạn: DNS, Connection, TLS Handshake, Request, Response).

Lọc và tìm kiếm

Network Inspector hỗ trợ lọc yêu cầu theo URL, phương thức HTTP, mã trạng thái và loại nội dung. Có thể loại trừ yêu cầu đến các miền nhất định để tập trung vào API cần thiết. Tìm kiếm hoạt động trên tất cả các trường yêu cầu, bao gồm nội dung và tiêu đề, thuận tiện khi gỡ lỗi một chức năng cụ thể của ứng dụng. Bộ lọc kết hợp cho phép tạo tập hợp quy tắc tự động áp dụng mỗi khi chạy phân tích.

Nhóm và so sánh yêu cầu

Dòng thời gian hỗ trợ nhóm yêu cầu theo mẫu URL. Ví dụ, tất cả yêu cầu dạng /api/v2/users/* có thể thu gọn vào một nhóm. Điều này đơn giản hóa việc phân tích khi ứng dụng thực hiện hàng trăm yêu cầu trong thời gian ngắn. Chức năng so sánh các yêu cầu liền kề giúp phát hiện thay đổi trong phản hồi máy chủ khi gọi lặp lại.

Gỡ lỗi yêu cầu mạng với Network Inspector

Sử dụng thực tế Network Inspector bao gồm các kịch bản gỡ lỗi điển hình: kiểm tra định dạng dữ liệu, xác định endpoint chậm, phát hiện rò rỉ bộ nhớ do kết nối không đóng và phân tích bộ nhớ đệm.

Kiểm tra cấu trúc phản hồi JSON

Một tác vụ thường gặp là đảm bảo máy chủ trả về dữ liệu ở định dạng mong đợi. Network Inspector hiển thị nội dung phản hồi với định dạng JSON, bao gồm tô màu cú pháp. Nếu phản hồi không được phân tích ở máy khách, trình kiểm tra sẽ hiển thị ngay nguyên nhân: thiếu trường, sai kiểu dữ liệu (chuỗi thay vì số) hoặc lồng ghép thừa. Nếu máy chủ trả về lỗi, trình kiểm tra hiển thị cấu trúc lỗi với mã và thông báo. Đối với định dạng nhị phân (Protocol Buffers, hình ảnh), kích thước và content-type được hiển thị.

Phân tích thời gian thực hiện

Tab Timing chia nhỏ việc thực hiện yêu cầu thành các giai đoạn: DNS Resolution, TCP Connection, TLS Handshake, Request Send, Response Receive. Nếu tổng thời gian vượt quá 1–2 giây, phân tích theo giai đoạn có thể xác định nguyên nhân. Ví dụ, DNS lâu cho thấy vấn đề với bộ phân giải, TLS Handshake lâu cho thấy phiên bản giao thức cũ trên máy chủ, Response lâu cho thấy mã máy chủ chậm hoặc yêu cầu không hiệu quả với dữ liệu dư thừa. Phân tích Timing giúp xác định điểm nghẽn trước khi tối ưu hóa phía máy chủ.

Tìm yêu cầu trùng lặp

Network Inspector giúp phát hiện yêu cầu dư thừa — ví dụ, khi mỗi lần xoay màn hình, Activity tạo lại việc tải dữ liệu. Trên dòng thời gian, một loạt yêu cầu giống nhau liên tiếp chỉ ra rõ vấn đề. Giải pháp có thể là bộ nhớ đệm, sử dụng ViewModel với trạng thái được lưu hoặc SingleLiveEvent để tải một lần.

kotlin
// Lưu trữ yêu cầu với OkHttp để loại bỏ trùng lặp
val cache = Cache(
    File(context.cacheDir, "http_cache"),
    cacheSize = 10L * 1024 * 1024 // 10 MB
)

val cachedClient = OkHttpClient.Builder()
    .cache(cache)
    .addNetworkInterceptor(CacheInterceptor())
    .build()

Hạn chế của Network Inspector và các giải pháp thay thế

Mặc dù có nhiều tính năng, Network Inspector có một số hạn chế cần lưu ý. Đối với một số kịch bản — như chặn HTTPS với chứng chỉ tự ký hoặc phân tích lưu lượng thư viện bên thứ ba — có thể cần các công cụ thay thế.

Hạn chế về nền tảng và thư viện

Network Inspector chỉ hoạt động với ứng dụng Android và không hỗ trợ iOS. Đối với Kotlin Multiplatform (KMM), một số yêu cầu có thể không hiển thị nếu chúng được thực hiện trong phần native. Một số thư viện — như gRPC, WebSocket (không phải HTTP), GraphQL qua Apollo (trước phiên bản 3.x) — có thể bị chặn một phần hoặc hoàn toàn không cho đến khi cấu hình thêm bộ chặn.

Công cụ thay thế

Để phân tích sâu hơn lưu lượng mạng, có các giải pháp bên thứ ba: Charles Proxy (máy chủ proxy đầy đủ với chặn HTTPS), Proxyman (giải pháp thay thế cho macOS), Wireshark (phân tích ở cấp độ gói tin), Stetho by Facebook (tích hợp với Chrome DevTools), Chucker (thư viện kiểm tra yêu cầu trong ứng dụng). Mỗi công cụ có lĩnh vực riêng: Charles và Proxyman không thể thiếu khi gỡ lỗi tương tác với máy chủ ở giai đoạn đầu phát triển, còn Chucker dùng để thu thập thông tin trong bản build thử nghiệm.

Công cụLoạiNền tảngHTTPSHAR
Network InspectorTích hợp trong Android StudioAndroid
Charles ProxyMáy chủ proxyĐa nền tảng
ProxymanMáy chủ proxymacOS, iOS
ChuckerTrình kiểm tra trong ứng dụngAndroidKhông
WiresharkTrình phân tích gói tinĐa nền tảngKhôngKhông

Câu hỏi thường gặp

Tại sao Network Inspector không hiển thị yêu cầu?

Hãy đảm bảo ứng dụng được build ở cấu hình Debug và chạy với Android Profiler đã kết nối. Nếu sử dụng OkHttp 4.x, có thể cần cập nhật thư viện lên phiên bản mới nhất. Đối với Ktor, yêu cầu chỉ hiển thị khi sử dụng Ktor client với Engine hỗ trợ chặn.

Có thể xem lưu lượng HTTPS không?

Có, Network Inspector hỗ trợ lưu lượng HTTPS mà không cần cấu hình thêm. Không giống Charles Proxy, không cần cài đặt chứng chỉ gốc. Công cụ sử dụng cơ chế hệ thống của Android Profiler để giải mã lưu lượng trong phiên gỡ lỗi.

Làm thế nào để xuất dữ liệu từ Network Inspector?

Network Inspector cho phép xuất dữ liệu ở định dạng HAR (HTTP Archive). Nhấn nút Export ở góc trên bên phải bảng. Tệp HAR có thể mở trong bất kỳ trình xem HAR nào hoặc nhập vào Charles Proxy và Proxyman để phân tích thêm.

Network Inspector có ảnh hưởng đến hiệu suất ứng dụng không?

Theo Google, chi phí overhead không vượt quá 3% khi đang phân tích. Khi Network Inspector tắt, không có chi phí overhead. Không nên sử dụng công cụ này trên bản build phát hành, nhưng đối với phiên Debug, ảnh hưởng không đáng kể trên các thiết bị hiện đại.

Phải làm gì nếu phản hồi hiển thị dưới dạng dữ liệu thô?

Nếu nội dung phản hồi hiển thị dưới dạng dữ liệu thô không đọc được, điều này có thể do nén gzip hoặc định dạng nhị phân (Protocol Buffers, MessagePack). Network Inspector tự động giải mã gzip. Đối với định dạng tùy chỉnh, hãy sử dụng Content-Type hint trong tiêu đề phản hồi.

Tổng kết

  • Network Inspector — là công cụ tích hợp trong Android Studio để giám sát và gỡ lỗi yêu cầu mạng theo thời gian thực mà không cần thay đổi mã ứng dụng
  • Tự động chặn tất cả các cuộc gọi HTTP qua OkHttp, Retrofit, Ktor và UrlConnection — công cụ hoạt động “sẵn sàng” trong bản Debug
  • Dòng thời gian mã màu theo trạng thái cho phép phát hiện ngay các yêu cầu chậm, bị lỗi và lặp lại
  • Xem chi tiết từng yêu cầu bao gồm tiêu đề, nội dung (với định dạng JSON), cookie và phân tích thời gian theo giai đoạn
  • Phân tích Timing theo giai đoạn (DNS, TCP, TLS, Request, Response) giúp xác định chính xác nguyên nhân yêu cầu chậm
  • Xuất HAR cho phép lưu phiên để chuyển cho đồng nghiệp hoặc phân tích trong các công cụ bên thứ ba như Charles Proxy
  • Đối với các kịch bản phức tạp hơn, hãy sử dụng Charles Proxy hoặc Proxyman — chúng hỗ trợ chặn lưu lượng ở cấp độ hệ điều hành và làm việc với iOS

Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay

IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.

Thảo luận dự án

Đọc thêm