Network Inspector — این چیست، اصل کار و مانیتورینگ درخواست‌های شبکه

نویسنده: IT Sectr منتشر شده: 2026-05-07 زمان مطالعه: 8 دقیقه

Network Inspector در Android Studio یک ابزار پروفایل‌سازی داخلی است که برای مانیتورینگ و تحلیل ترافیک شبکه برنامه موبایل در زمان واقعی طراحی شده است. به گزارش مستندات رسمی Android Developers (2025)، این ابزار امکان ردیابی زمان اجرای درخواست‌ها، حجم داده‌های ارسالی و وضعیت HTTP هر فراخوانی را فراهم می‌کند. ابزار نیازی به تغییر در کد برنامه ندارد و «خارج از جعبه» با هر پروژه‌ای در API Level 14 و بالاتر کار می‌کند.

نکات اصلی

  • Network Inspector — مؤلفه‌ای از Android Profiler برای مانیتورینگ درخواست‌های شبکه با قابلیت مشاهده هدرها و بدنه پاسخ است
  • ضبط ترافیک به طور خودکار برای تمام فراخوانی‌های HTTP انجام‌شده از برنامه، شامل OkHttp، Retrofit، Ktor و WebView انجام می‌شود
  • خط زمانی توالی درخواست‌ها را با ذکر مدت زمان، اندازه و وضعیت هر فراخوانی نمایش می‌دهد
  • مشاهده جزئیات هر درخواست شامل هدرها، بدنه درخواست و پاسخ، کوکی‌ها و زمان اجرا بر اساس مراحل است
  • خروجی داده‌ها در قالب HAR امکان انتقال تعامل شبکه به همکاران یا ذخیره برای تحلیل بعدی را فراهم می‌کند

Network Inspector چیست؟

Network Inspector یک ابزار پروفایل‌سازی فعالیت شبکه است که در Android Studio تعبیه شده است. این ابزار به توسعه‌دهندگان اجازه می‌دهد تمام درخواست‌های HTTP و HTTPS ارسالی توسط برنامه را در زمان واقعی مشاهده کنند، از جمله هدرها، بدنه درخواست و پاسخ، کدهای وضعیت و مدت زمان اجرا. از طریق پنل Android Profiler از Android Studio 3.0 در دسترس است.

هدف و محدوده کاربرد

وظیفه اصلی Network Inspector اشکال‌زدایی تعامل شبکه برنامه موبایل با سرور است. این ابزار برای بررسی صحت داده‌های ارسالی، تحلیل زمان پاسخ، جستجوی خطاهای API و همچنین کشف الگوهای شبکه غیربهینه — مانند درخواست‌های متعدد هنگام بارگذاری یک صفحه — استفاده می‌شود. Network Inspector در هر دستگاهی با API Level 14 کار می‌کند.

سازگاری و کتابخانه‌ها

این ابزار از تمام کلاینت‌های HTTP اصلی Android پشتیبانی می‌کند: OkHttp (از نسخه 2.x)، Retrofit، Ktor (KMM)، UrlConnection، Apache HttpClient (منسوخ) و WebView. برای OkHttp و Retrofit کتابخانه OkHttp Profiler مورد نیاز است — که در هنگام استفاده از Android Studio 4.1+ به طور خودکار اضافه می‌شود. برای Ktor پیکربندی جداگانه interceptors لازم است.

Network Inspector چگونه کار می‌کند

Network Inspector فراخوانی‌های شبکه را در سطح سیستم با استفاده از مکانیزم Profiler Agent که همراه با Android Profiler تزریق می‌شود، ضبط می‌کند. برای عملکرد صحیح، بیلد debug برنامه مورد نیاز است. این ابزار کد برنامه را تغییر نمی‌دهد و برای عملکرد پایه نیازی به افزودن وابستگی‌ها ندارد.

مکانیزم ضبط ترافیک

هنگام شروع پروفایل‌سازی، Network Inspector به فرآیند Debug برنامه متصل می‌شود و به تمام فراخوانی‌های HTTP عبوری از OkHttp Client، UrlConnection یا سایر کتابخانه‌های پشتیبانی‌شده گوش می‌دهد. هر درخواست با یک برچسب زمانی ثبت می‌شود که امکان ساخت خط زمانی فعالیت شبکه را فراهم می‌کند. برای HTTPS از لایه میانی سیستمی استفاده می‌شود که رمزگذاری را در حین انتقال حفظ می‌کند اما امکان مشاهده محتوای رمزگشایی‌شده در داخل Studio را فراهم می‌کند.

معماری جمع‌آوری داده‌ها

جمع‌آوری داده‌ها از طریق Profiler Service Android Studio انجام می‌شود که در یک فرآیند مجزا روی میزبان اجرا می‌شود. روی دستگاه، یک عامل سبک اجرا می‌شود که ابرداده‌های درخواست را از طریق کانال ADB ارسال می‌کند. این کار تأثیر بر عملکرد برنامه را به حداقل می‌رساند — سربار طبق داده‌های Google کمتر از 3٪ است. خود داده‌های درخواست (بدنه، هدرها) فقط هنگام مشاهده فعال جزئیات ارسال می‌شوند.

kotlin
// اتصال OkHttp برای یکپارچه‌سازی با Network Inspector
val client = OkHttpClient.Builder()
    .addInterceptor(HttpLoggingInterceptor().apply {
        level = HttpLoggingInterceptor.Level.BASIC
    })
    .build()

// Network Inspector به طور خودکار تمام فراخوانی‌ها را از طریق client ضبط می‌کند
client.newCall(Request.Builder()
    .url("https://api.example.com/data")
    .build()).execute()

قابلیت‌های اصلی Network Inspector

Network Inspector مجموعه‌ای از ابزارها را برای تحلیل جامع ترافیک شبکه فراهم می‌کند. هر ویژگی برای حل یک وظیفه خاص اشکال‌زدایی — از بررسی هدرها تا تحلیل عملکرد API — طراحی شده است.

خط زمانی درخواست‌ها

صفحه اصلی Network Inspector گاه‌نگاری تمام درخواست‌ها را به صورت خط زمانی نمایش می‌دهد. هر درخواست با یک نوار رنگی نمایش داده می‌شود: سبز — پاسخ موفق (2xx)، آبی — تغییر مسیر (3xx)، زرد — خطای مشتری (4xx)، قرمز — خطای سرور (5xx). طول نوار با زمان اجرای درخواست از اتصال تا دریافت پاسخ کامل مطابقت دارد. این امکان را فراهم می‌کند که فوراً درخواست‌های کند یا دارای خطا شناسایی شوند.

پارامترتوضیحمقدار نمونه
URLآدرس کامل درخواستhttps://api.example.com/v2/users
Methodروش HTTP درخواستPOST
Statusکد پاسخ HTTP200 OK
Sizeاندازه درخواست + پاسخ بر حسب بایت12.4 KB
Timeزمان کل اجرا342 ms

مشاهده جزئیات درخواست

هنگام انتخاب یک درخواست خاص، پنلی با جزئیات باز می‌شود: Headers (تمام هدرهای درخواست و پاسخ)، Request Body (بدنه درخواست در قالب متنی یا باینری)، Response Body (بدنه پاسخ با قابلیت قالب‌بندی JSON)، Cookies (ارسال و دریافت‌شده)، Timing (تقسیم زمان به مراحل: DNS، Connection، TLS Handshake، Request، Response).

فیلتر و جستجو

Network Inspector از فیلتر درخواست‌ها بر اساس URL، روش HTTP، کد وضعیت و نوع محتوا پشتیبانی می‌کند. می‌توان درخواست‌های دامنه‌های خاص را حذف کرد تا فقط روی API مورد نظر تمرکز شود. جستجو در تمام فیلدهای درخواست از جمله بدنه و هدرها کار می‌کند که برای اشکال‌زدایی یک تابع خاص برنامه مفید است. فیلترهای ترکیبی امکان ایجاد مجموعه‌ای از قوانین را فراهم می‌کنند که به طور خودکار در هر بار شروع پروفایل‌سازی اعمال می‌شوند.

گروه‌بندی و مقایسه درخواست‌ها

خط زمانی از گروه‌بندی درخواست‌ها بر اساس الگوهای URL پشتیبانی می‌کند. به عنوان مثال، تمام درخواست‌های به شکل /api/v2/users/* را می‌توان در یک گروه جمع کرد. این کار تحلیل را زمانی که برنامه صدها درخواست در مدت زمان کوتاه انجام می‌دهد، ساده می‌کند. تابع مقایسه درخواست‌های مجاور به شناسایی تغییرات در پاسخ‌های سرور هنگام فراخوانی‌های مکرر کمک می‌کند.

اشکال‌زدایی درخواست‌های شبکه با Network Inspector

استفاده عملی از Network Inspector سناریوهای معمول اشکال‌زدایی را پوشش می‌دهد: بررسی قالب داده، تشخیص نقاط پایانی کند، پیدا کردن نشت حافظه ناشی از اتصالات بازنشده و تحلیل حافظه‌نهان.

بررسی ساختار پاسخ JSON

یک وظیفه رایج — اطمینان از اینکه سرور داده‌ها را در قالب مورد انتظار برمی‌گرداند. Network Inspector بدنه پاسخ را با قالب‌بندی JSON از جمله برجسته‌سازی نحو نمایش می‌دهد. اگر پاسخ در سمت مشتری تجزیه نشود، در بازرس بلافاصله علت مشخص می‌شود: عدم وجود فیلد، نوع داده اشتباه (رشته به جای عدد) یا تودرتو اضافی. اگر سرور خطا برگرداند، بازرس ساختار خطا را با کد و پیام نمایش می‌دهد. برای قالب‌های باینری (Protocol Buffers، تصاویر) اندازه و content-type نمایش داده می‌شود.

تحلیل زمان اجرا

تب Timing اجرای درخواست را به مراحل تقسیم می‌کند: DNS Resolution، TCP Connection، TLS Handshake، Request Send، Response Receive. اگر زمان کل از ۱–۲ ثانیه بیشتر باشد، بر اساس تقسیم‌بندی مراحل می‌توان علت را تعیین کرد. به عنوان مثال، DNS طولانی نشان‌دهنده مشکلات حل‌کننده، TLS Handshake طولانی — نسخه منسوخ پروتکل روی سرور، Response طولانی — کد کند سرور یا درخواست ناکارآمد با داده‌های اضافی. تحلیل Timing به شناسایی تنگناها حتی قبل از شروع بهینه‌سازی سمت سرور کمک می‌کند.

یافتن درخواست‌های تکراری

Network Inspector به شناسایی درخواست‌های اضافی کمک می‌کند — به عنوان مثال، هنگامی که Activity در هر چرخش صفحه، بارگذاری داده را دوباره ایجاد می‌کند. در خط زمانی، یک سری از درخواست‌های یکسان پشت سر هم به وضوح مشکل را نشان می‌دهد. راه‌حل می‌تواند حافظه‌نهان‌سازی، استفاده از ViewModel با حفظ حالت یا SingleLiveEvent برای بارگذاری یک‌باره باشد.

kotlin
// ذخیره‌سازی درخواست‌ها با OkHttp برای حذف تکرار
val cache = Cache(
    File(context.cacheDir, "http_cache"),
    cacheSize = 10L * 1024 * 1024 // 10 MB
)

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

محدودیت‌های Network Inspector و جایگزین‌ها

با وجود قابلیت‌های گسترده، Network Inspector محدودیت‌هایی دارد که باید در نظر گرفته شوند. برای برخی سناریوها — مانند ضبط HTTPS با گواهی‌های خودامضا یا تحلیل ترافیک کتابخانه‌های شخص ثالث — ممکن است ابزارهای جایگزین مورد نیاز باشد.

محدودیت‌های پلتفرم و کتابخانه

Network Inspector فقط با برنامه‌های Android کار می‌کند و از iOS پشتیبانی نمی‌کند. برای Kotlin Multiplatform (KMM) بخشی از درخواست‌ها ممکن است نمایش داده نشوند اگر در بخش native اجرا شوند. برخی کتابخانه‌ها — مانند gRPC، WebSocket (نه HTTP)، GraphQL از طریق Apollo (تا نسخه 3.x) — ممکن است به صورت جزئی یا اصلاً بدون پیکربندی interceptors اضافی ضبط نشوند.

ابزارهای جایگزین

برای تحلیل عمیق‌تر ترافیک شبکه، راه‌حل‌های شخص ثالث وجود دارند: Charles Proxy (پروکسی سرور کامل با ضبط HTTPS)، Proxyman (معادل برای macOS)، Wireshark (تحلیل در سطح بسته)، Stetho by Facebook (ادغام با Chrome DevTools)، Chucker (کتابخانه برای بازرسی درخواست‌ها درون برنامه). هر ابزار جایگاه خود را دارد: Charles و Proxyman در اشکال‌زدایی تعامل با سرور در مراحل اولیه توسعه ضروری هستند و Chucker — برای جمع‌آوری اطلاعات در بیلدهای آزمایشی.

ابزارنوعپلتفرمHTTPSHAR
Network Inspectorتعبیه‌شده در Android StudioAndroidبلهبله
Charles Proxyسرور پروکسیچندپلتفرمیبلهبله
Proxymanسرور پروکسیmacOS، iOSبلهبله
Chuckerبازرس درون‌برنامه‌ایAndroidبلهخیر
Wiresharkتحلیلگر بستهچندپلتفرمیخیرخیر

سوالات متداول

چرا Network Inspector درخواست‌ها را نشان نمی‌دهد؟

مطمئن شوید برنامه در پیکربندی Debug ساخته شده و با Android Profiler متصل اجرا شده است. اگر از OkHttp 4.x استفاده می‌شود، ممکن است نیاز به به‌روزرسانی کتابخانه به آخرین نسخه باشد. برای Ktor درخواست‌ها فقط هنگام استفاده از کلاینت Ktor با Engine پشتیبانی‌کننده از ضبط نمایش داده می‌شوند.

آیا می‌توان ترافیک HTTPS را مشاهده کرد؟

بله، Network Inspector از ترافیک HTTPS بدون پیکربندی اضافی پشتیبانی می‌کند. برخلاف Charles Proxy، نیازی به نصب گواهی ریشه نیست. این ابزار از مکانیزم سیستمی Android Profiler برای رمزگشایی ترافیک در داخل جلسه اشکال‌زدایی استفاده می‌کند.

چگونه داده‌ها را از Network Inspector خروجی بگیریم؟

Network Inspector امکان خروجی داده‌ها در قالب HAR (HTTP Archive) را فراهم می‌کند. دکمه Export را در گوشه بالا سمت راست پنل کلیک کنید. فایل HAR را می‌توان در هر نمایشگر HAR باز کرد یا برای تحلیل بیشتر به Charles Proxy و Proxyman وارد کرد.

آیا Network Inspector بر عملکرد برنامه تأثیر می‌گذارد؟

طبق داده‌های Google، سربار از 3٪ تجاوز نمی‌کند در هنگام پروفایل‌سازی فعال. هنگامی که Network Inspector خاموش است، سرباری وجود ندارد. این ابزار برای استفاده در بیلدهای release توصیه نمی‌شود، اما در جلسات Debug تأثیر در دستگاه‌های مدرن قابل توجه نیست.

اگر پاسخ به صورت داده خام نمایش داده شود چه باید کرد؟

اگر بدنه پاسخ به صورت داده خام غیرقابل خواندن نمایش داده می‌شود، این ممکن است به دلیل فشرده‌سازی gzip یا قالب باینری (Protocol Buffers، MessagePack) باشد. Network Inspector به طور خودکار gzip را رمزگشایی می‌کند. برای قالب‌های سفارشی از راهنمای Content-Type در هدرهای پاسخ استفاده کنید.

خلاصه

  • Network Inspector — ابزاری تعبیه‌شده در Android Studio برای مانیتورینگ و اشکال‌زدایی درخواست‌های شبکه در زمان واقعی بدون تغییر کد برنامه
  • ضبط خودکار تمام فراخوانی‌های HTTP از طریق OkHttp، Retrofit، Ktor و UrlConnection — ابزار «خارج از جعبه» در بیلد Debug کار می‌کند
  • خط زمانی با کدگذاری رنگی کدهای وضعیت امکان شناسایی فوری درخواست‌های کند، خطادار و تکراری را فراهم می‌کند
  • مشاهده جزئیات هر درخواست شامل هدرها، بدنه (با قالب‌بندی JSON)، کوکی‌ها و تقسیم‌بندی فاز زمانی اجرا است
  • تقسیم‌بندی فاز Timing (DNS، TCP، TLS، Request، Response) به تعیین دقیق علت درخواست‌های کند کمک می‌کند
  • خروجی به HAR امکان ذخیره جلسات برای انتقال به همکاران یا تحلیل در ابزارهای خارجی مانند Charles Proxy را فراهم می‌کند
  • برای سناریوهای پیچیده‌تر از Charles Proxy یا Proxyman استفاده کنید — آنها ضبط ترافیک در سطح سیستم‌عامل و کار با iOS را پشتیبانی می‌کنند

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید