اگر شما در حال توسعه یا آزمایش برنامههای ویندوز هستید و میخواهید ببینید که چه درخواستهای HTTP دقیقا ارسال میشوند — Fiddler ابزار اصلی شما خواهد بود. این ابزار تمام ترافیک را ضبط میکند، به شما اجازه میدهد آن را تجزیه و تحلیل کنید، در حین اجرا تغییر دهید و دوباره ارسال کنید. این به ویژه در کار با برنامههای UWP که به طور پیشفرض از پروکسی سیستم عبور میکنند، مفید است.
در این راهنما، نصب، تنظیم HTTPS، کار با UWP، اتصال پروکسیهای خارجی و سناریوهای معمول استفاده — از اشکالزدایی API تا نظارت بر درخواستهای پسزمینه را بررسی خواهیم کرد.
Fiddler چیست و به چه دردی میخورد
Fiddler یک اشکالزدا پروکسی HTTP است که توسط شرکت Telerik (اکنون Progress) توسعه یافته است. این ابزار به عنوان یک سرور پروکسی محلی عمل میکند: تمام درخواستهای HTTP و HTTPS کامپیوتر شما از طریق آن عبور میکند و شما میتوانید هر یک از آنها را در زمان واقعی مشاهده کنید. این ابزار رایگان است و در دو نسخه وجود دارد — Fiddler Classic (فقط برای ویندوز) و Fiddler Everywhere (چند پلتفرمی).
Fiddler چه تفاوتی با DevTools در مرورگر دارد؟ ابزارهای توسعهدهنده مرورگر فقط ترافیک خود مرورگر را نشان میدهند. اما Fiddler درخواستها را از هر برنامهای در کامپیوتر شما ضبط میکند: برنامههای دسکتاپ، خدمات سیستم، فرآیندهای پسزمینه ویندوز، برنامههای موبایل از طریق Wi-Fi و — که به ویژه مهم است — برنامههای UWP از Microsoft Store.
وظایف معمولی که Fiddler انجام میدهد:
- تجزیه و تحلیل درخواستهای API برنامههای دسکتاپ — چه چیزی دقیقا برنامه ارسال میکند، چه هدرهایی، چه دادههایی
- اشکالزدایی کد خود — شما درخواستهای واقعی برنامه خود را میبینید، نه آنچه که تصور میکردید ارسال کنید
- تغییر درخواستها و پاسخها در حین اجرا — تغییر دادهها برای آزمایش موارد خاص
- نظارت بر فعالیتهای پسزمینه — چه سرورهایی "زنگ میزنند" بدون اینکه شما بدانید
- آزمایش از طریق پروکسی — بررسی رفتار برنامه هنگام کار از طریق یک سرور پروکسی خارجی
- تکرار درخواستها — ارسال مجدد یک درخواست ضبطشده با پارامترهای تغییر یافته
Fiddler برای توسعهدهندگانی که با APIهای بسته کار میکنند، ارزش ویژهای دارد — به عنوان مثال، مهندسی معکوس پروتکل یک برنامه موبایل یا کلاینت دسکتاپ. شما فقط برنامه را اجرا میکنید، دکمههای مورد نیاز را در رابط کاربری فشار میدهید و همه درخواستها را در Fiddler مشاهده میکنید.
نصب و تنظیمات اولیه
نصب Fiddler Classic حدود دو دقیقه طول میکشد. نصبکننده را از وبسایت رسمی telerik.com/fiddler دانلود کرده و آن را اجرا کنید. پس از نصب، Fiddler به طور خودکار خود را به عنوان پروکسی سیستم ویندوز در پورت 127.0.0.1:8888 تنظیم میکند.
بلافاصله پس از راهاندازی، شما پنجره اصلی را با سه ناحیه خواهید دید:
- پنل سمت چپ (Sessions) — لیست تمام درخواستهای ضبطشده در زمان واقعی
- پنل بالای سمت راست — جزئیات درخواست انتخاب شده (هدرها، بدنه، پارامترها)
- پنل پایین سمت راست — پاسخ سرور
اولین کاری که باید انجام دهید — تنظیم فیلترها است، در غیر این صورت تمام ترافیک سیستم ویندوز (بهروزرسانیها، تلمتری، OneDrive و غیره) به لیست اضافه میشود و پیدا کردن درخواستهای مورد نظر دشوار خواهد بود. به تب Filters در سمت راست بروید و Use Filters را فعال کنید. در فیلد Show only the following Hosts دامنههایی که به آنها علاقه دارید را مشخص کنید.
کلیدهای میانبر مفید Fiddler Classic:
F12— فعال/غیرفعال کردن ضبط ترافیکCtrl+X— پاک کردن لیست جلساتCtrl+F— جستجو در جلساتR— تکرار درخواست انتخاب شدهShift+Delete— حذف جلسات انتخاب شده
همچنین پیشنهاد میکنیم که بلافاصله تنظیمات خودکار ذخیرهسازی جلسات را انجام دهید: File → Capture Traffic و File → Save → All Sessions. این به شما اجازه میدهد که بعدا به ترافیک ذخیرهشده برگردید و آن را به صورت آفلاین تجزیه و تحلیل کنید.
ضبط ترافیک HTTPS: تنظیم گواهینامه
به طور پیشفرض، Fiddler فقط ترافیک HTTP را ضبط میکند. برای کار با HTTPS (که بیش از 95% ترافیک مدرن را تشکیل میدهد) باید رمزگشایی SSL را تنظیم کنید. Fiddler به عنوان Man-in-the-Middle عمل میکند: این ابزار گواهینامه ریشه خود را تولید کرده و تمام اتصالات HTTPS را با آن امضا میکند.
تنظیم مرحله به مرحله ضبط HTTPS:
- به Tools → Options → HTTPS بروید
- تیک Capture HTTPS CONNECTs را بزنید
- تیک Decrypt HTTPS traffic را بزنید
- در لیست کشویی ...from all processes را انتخاب کنید
- دکمه Actions → Trust Root Certificate را فشار دهید
- نصب گواهینامه در مخزن سیستم ویندوز را تأیید کنید
- Fiddler را دوباره راهاندازی کنید
پس از این، در ستون Protocol شما HTTPS را به جای CONNECT خواهید دید و میتوانید محتوای رمزگشاییشده درخواستها و پاسخها را مشاهده کنید.
⚠️ مهم: امنیت گواهینامه
گواهینامه Fiddler فقط در مخزن کاربر فعلی ویندوز نصب میشود. فایل گواهینامه را به اشخاص ثالث ندهید — این به آنها اجازه میدهد که ترافیک HTTPS شما را ضبط کنند. پس از اتمام اشکالزدایی، میتوانید گواهینامه را از طریق Tools → Options → HTTPS → Actions → Remove Interception Certificates حذف کنید.
برخی از برنامهها از Certificate Pinning استفاده میکنند — آنها گواهینامه خاص سرور را بررسی میکنند و از کار کردن از طریق Fiddler امتناع میکنند. در این صورت، شما خطای اتصال را در برنامه مشاهده خواهید کرد. دور زدن پینینگ موضوعی جداگانه است که از حیطه این مقاله خارج است.
چگونه ترافیک برنامههای UWP را ضبط کنیم
UWP (Universal Windows Platform) برنامههایی از Microsoft Store هستند: Mail، Maps، Movies & TV، Spotify، Netflix و بسیاری دیگر. ویژگی آنها این است که به دلایل امنیتی در یک کانتینر ایزوله (App Container) کار میکنند و از پروکسی سیستم استفاده نمیکنند. به همین دلیل، تنظیمات معمول Fiddler ترافیک آنها را ضبط نمیکند.
برای حل این مشکل، Fiddler ابزاری خاص به نام AppContainer Loopback Exemption Utility را ارائه میدهد. این ابزار برنامه UWP را به لیست استثنائات اضافه میکند و به آن اجازه میدهد که به پروکسی محلی Fiddler دسترسی پیدا کند.
روش 1 — از طریق رابط کاربری Fiddler:
- در منو WinConfig را انتخاب کنید (دکمه در نوار ابزار یا Tools → Win8 Loopback Exemptions)
- لیست تمام برنامههای UWP نصبشده باز میشود
- برنامه مورد نظر را پیدا کرده و تیک آن را بزنید
- روی Save Changes کلیک کنید
- برنامه UWP را دوباره راهاندازی کنید
روش 2 — از طریق خط فرمان (برای خودکارسازی):
CheckNetIsolation LoopbackExempt -a -n="Microsoft.WindowsMaps_8wekyb3d8bbwe"
Microsoft.WindowsMaps_8wekyb3d8bbwe را با نام خانواده بسته برنامه مورد نظر جایگزین کنید. میتوانید آن را با دستور PowerShell پیدا کنید:
Get-AppxPackage | Select-Object Name, PackageFamilyName | Sort-Object Name
پس از افزودن استثنا، برنامه UWP شروع به ارسال ترافیک از طریق Fiddler خواهد کرد. شما درخواستهای آن را در لیست جلسات خواهید دید — معمولاً آنها به راحتی با User-Agent یا میزبان مقصد شناسایی میشوند.
💡 نکته: UWP و HTTPS
برای ضبط ترافیک HTTPS برنامههای UWP، کافی نیست که استثنای loopback اضافه کنید. همچنین باید گواهینامه Fiddler را در مخزن Trusted Root Certification Authorities برای Local Machine (نه فقط برای کاربر فعلی) نصب کنید. این کار را میتوانید از طریق certmgr.msc یا از طریق سیاستهای گروهی انجام دهید.
فیلترها، نقطههای توقف و تغییر درخواستها
سه ویژگی قدرتمند Fiddler برای اشکالزدایی — فیلتر کردن جلسات، نقطههای توقف و AutoResponder هستند. هر یک از آنها را بررسی میکنیم.
فیلتر کردن جلسات
تب Filters اجازه میدهد فقط درخواستهای مورد نیاز را نمایش دهید. گزینههای اصلی:
- Show only the following Hosts — فیلتر بر اساس دامنه (برای مثال،
api.example.com) - Show only if URL contains — فیلتر بر اساس بخشی از URL
- Show only if response Content-Type — فقط JSON، XML، تصاویر و غیره.
- Hide if URL contains — حذف درخواستهای اضافی (برای مثال،
telemetry،analytics)
همچنین میتوانید از خط QuickExec در پایین پنجره برای دستورات سریع استفاده کنید. برای مثال، select status 404 تمام درخواستهای با خطای 404 را انتخاب میکند و bold api تمام جلسات حاوی "api" در URL را به صورت پررنگ نمایش میدهد.
نقطههای توقف (Breakpoints)
نقطههای توقف اجازه میدهند که درخواست یا پاسخ قبل از ارسال/دریافت متوقف شود و محتوا به صورت دستی تغییر کند. این مشابه نقطه توقف در اشکالزدا کد است، اما برای HTTP.
- Rules → Automatic Breakpoints → Before Requests — هر درخواست را قبل از ارسال متوقف میکند
- Rules → Automatic Breakpoints → After Responses — هر پاسخ را قبل از انتقال به برنامه متوقف میکند
- کلیک راست روی جلسه → Breakpoint → Break on Request — نقطه توقف خاص برای یک URL مشخص
وقتی درخواست متوقف میشود، میتوانید هر هدر، بدنه درخواست، URL را تغییر دهید و روی Run to Completion کلیک کنید تا ادامه دهید. این به ویژه برای آزمایش رفتار برنامه با دادههای تغییر یافته مفید است.
AutoResponder
AutoResponder ابزاری برای تغییر پاسخهای سرور است. شما یک قانون ایجاد میکنید: "اگر URL با الگو مطابقت دارد — این فایل/پاسخ را برگردانید". کاربردها:
- آزمایش برنامه با استابهای API بدون بکاند واقعی
- شبیهسازی خطاهای سرور (500، 503، زمانهای انتظار)
- تغییر منابع — بارگذاری نسخه محلی JS/CSS به جای نسخه سرور
- تسریع توسعه — کش کردن درخواستهای کند به APIهای خارجی
اتصال پروکسی خارجی از طریق Fiddler
یکی از قابلیتهای مهم Fiddler — کار در حالت "پروکسی از طریق پروکسی" (upstream proxy) است. Fiddler ترافیک را به صورت محلی ضبط میکند و سپس آن را از طریق یک سرور پروکسی خارجی هدایت میکند. این امکان را فراهم میکند که به طور همزمان درخواستها را اشکالزدایی کنید و IP یا مکان جغرافیایی را تغییر دهید.
زمانی که به این نیاز دارید:
- آزمایش رفتار برنامه هنگام کار از طریق پروکسی شرکتی
- بررسی محتوای وابسته به جغرافیا — چگونه برنامه از کشور دیگر کار میکند
- اشکالزدایی برنامهای که خود از پروکسی استفاده میکند
- آزمایش API با محدودیتهای IP (لیست سفید بر اساس IP)
تنظیم پروکسی upstream در Fiddler Classic:
- به Tools → Options → Gateway بروید
- گزینه Manual Proxy Configuration را انتخاب کنید
- در فیلد Proxy آدرس پروکسی را به فرمت
host:portوارد کنید - اگر پروکسی نیاز به احراز هویت دارد — نام کاربری و رمز عبور را مشخص کنید
- روی OK کلیک کنید و ضبط ترافیک را دوباره راهاندازی کنید
Fiddler از پروکسیهای HTTP، HTTPS و SOCKS5 به عنوان upstream پشتیبانی میکند. برای SOCKS5 فرمت ثبت کمی متفاوت است:
socks=proxy.example.com:1080
برای آزمایش رفتار وابسته به جغرافیا، پروکسیهای مسکونی بسیار مناسب هستند — آنها از IPهای واقعی کاربران خانگی از کشور مورد نظر استفاده میکنند و برنامه پاسخهایی دقیقا مشابه آنچه که یک کاربر واقعی از این منطقه دریافت میکند، دریافت میکند. این مهم است اگر API محتوا را بسته به جغرافیا متفاوت برگرداند.
اگر به سرعت بالا برای بارگذاری حجم زیادی از دادهها در حین اشکالزدایی نیاز دارید، پروکسیهای دادهمرکزی مناسب هستند — آنها اتصال پایدار و تأخیر حداقلی را فراهم میکنند که هنگام کار با APIهای سنگین راحت است.
💡 FiddlerScript برای انتخاب دینامیک پروکسی
از طریق FiddlerScript میتوانید پروکسیهای مختلف upstream را برای میزبانهای مختلف تنظیم کنید. به عنوان مثال، درخواستها به api.us-service.com را از طریق پروکسی آمریکایی هدایت کنید و بقیه را به طور مستقیم:
static function OnBeforeRequest(oSession: Session) {
if (oSession.HostnameIs("api.us-service.com")) {
oSession["x-OverrideGateway"] = "us-proxy.example.com:8080";
}
}
سناریوهای عملی: تجزیه، آزمایش API، دور زدن جغرافیایی
بیایید به بررسی وظایف خاصی بپردازیم که با استفاده از Fiddler به راحتی قابل حل هستند.
سناریو 1: مهندسی معکوس API برنامه موبایل
شما میخواهید اقدامات را در برنامه خود خودکار کنید، اما این برنامه API عمومی ندارد. راه حل: برنامه را در شبیهساز Android یا از طریق کلاینت ویندوز اجرا کنید، آن را برای استفاده از Fiddler به عنوان پروکسی تنظیم کنید و تمام درخواستها را در حین انجام اقدامات مورد نظر ضبط کنید.
پس از ضبط، شما تصویر کاملی دریافت میکنید: نقاط پایانی، فرمتهای درخواست، هدرهای احراز هویت، توکنها. این دادهها میتوانند برای نوشتن کلاینت خود یا خودکارسازی از طریق اسکریپتها استفاده شوند.
سناریو 2: اشکالزدایی تجزیهکننده بازار
هنگام توسعه تجزیهکننده برای Wildberries، Ozon یا دیگر بازارها، اغلب مشخص نیست که چرا درخواستها مسدود میشوند. Fiddler اجازه میدهد تا درخواستهای مرورگر (که عبور میکنند) را با درخواستهای تجزیهکننده (که مسدود میشوند) مقایسه کنید و تفاوتها را در هدرها، ترتیب آنها، مقادیر کوکی یا TLS fingerprint پیدا کنید.
یافته معمول: تجزیهکننده هدرها را در ترتیب متفاوتی ارسال میکند، Accept-Language وجود ندارد، یا User-Agent شامل نسخه Python است. با اصلاح این جزئیات در کد تجزیهکننده، احتمال مسدود شدن را کاهش میدهید.
سناریو 3: آزمایش محتوای وابسته به جغرافیا
اگر برنامه شما محتوای متفاوتی را به کاربران از کشورهای مختلف نمایش میدهد، باید آن را با IPهای واقعی از این کشورها آزمایش کنید. Fiddler را با پروکسی upstream از منطقه مورد نظر تنظیم کنید، برنامه را اجرا کنید — و شما دقیقاً همان چیزی را خواهید دید که کاربر از این کشور میبیند، به علاوه یک لاگ کامل از تمام درخواستها.
سناریو 4: نظارت بر فعالیتهای پسزمینه برنامهها
آیا میخواهید بدانید که برنامه نصبشده به کجا "زنگ میزند"? Fiddler را راهاندازی کنید، برنامه را اجرا کنید، 5-10 دقیقه صبر کنید. در لیست جلسات، تمام میزبانهایی که برنامه به آنها مراجعه کرده است، ظاهر میشوند. این برای حسابرسی امنیت نرمافزارهای شخص ثالث، بررسی وجود تلمتری یا اتصالات ناخواسته مفید است.
سناریو 5: صادرات درخواستها برای تکرار
Fiddler اجازه میدهد درخواستهای ضبطشده را به فرمت cURL صادر کنید که میتوان آن را بلافاصله در ترمینال اجرا کرد یا در Postman چسباند. کلیک راست روی جلسه → Copy → cURL Request. این برای انتقال درخواست به همکار یا مستندسازی API راحت است.
Fiddler Classic در مقابل Fiddler Everywhere: چه چیزی را انتخاب کنیم
Telerik از دو نسخه محصول پشتیبانی میکند و انتخاب بین آنها همیشه واضح نیست. بیایید تفاوتهای کلیدی را بررسی کنیم.
| پارامتر | Fiddler Classic | Fiddler Everywhere |
|---|---|---|
| پلتفرمها | فقط ویندوز | ویندوز، macOS، لینوکس |
| قیمت | رایگان | اشتراک پولی (طرح رایگان وجود دارد) |
| پشتیبانی UWP | بله (از طریق WinConfig) | محدود |
| FiddlerScript | بله (JScript.NET) | خیر (از Rules استفاده میشود) |
| رابط کاربری | قدیمی، اما کاربردی | مدرن، راحت |
| همکاری | خیر | بله (مجموعههای ابری) |
| قابلیت گسترش | پلاگینهای .NET | محدود |
| ضبط ترافیک سیستم | کامل | کامل |
چه زمانی Fiddler Classic را انتخاب کنیم: شما فقط روی ویندوز کار میکنید، به کار با برنامههای UWP نیاز دارید، از FiddlerScript برای خودکارسازی استفاده میکنید، یا نسخه کاملاً رایگان بدون محدودیت برای شما مهم است.
چه زمانی Fiddler Everywhere را انتخاب کنیم: شما روی macOS یا لینوکس کار میکنید، به یک رابط مدرن نیاز دارید، همکاری با مجموعههای مشترک درخواستها برای شما مهم است، یا میخواهید با CI/CD پایپلاینها ادغام کنید.
همچنین باید به جایگزینها اشاره کرد: Charles Proxy (پولیشده، محبوب در macOS)، mitmproxy (رایگان، کنسولی، بسیار انعطافپذیر)، Wireshark (در سطح بستهها کار میکند، نه HTTP). هر ابزار نقاط قوت خود را دارد، اما برای اکثر وظایف اشکالزدایی برنامههای ویندوز، Fiddler Classic همچنان انتخاب بهینهای باقی میماند.
مشکلات رایج و راهحلهای آنها
هنگام کار با Fiddler، گاهی اوقات مشکلات رایجی پیش میآید. در اینجا رایجترین آنها و راهحلهای آنها آورده شده است.
مشکل: برنامه در هنگام فعال بودن Fiddler کار نمیکند
دلایل: Certificate Pinning، پروکسی سختافزاری در برنامه، یا برنامه به گواهینامه Fiddler اعتماد ندارد. راهحلها:
- گواهینامه Fiddler را در مخزن Local Machine → Trusted Root نصب کنید
- بررسی کنید که آیا برنامه از certificate pinning استفاده میکند یا خیر
- میزبان را به استثنائات SSL اضافه کنید: Tools → Options → HTTPS → Skip Decryption for following hosts
مشکل: پس از بستن Fiddler، اینترنت کار نمیکند
Fiddler نتوانسته است پروکسی سیستم را هنگام خاتمه غیرمنتظره حذف کند. راهحل: به تنظیمات ویندوز → شبکه → پروکسی بروید و پروکسی دستی را غیرفعال کنید. یا دوباره Fiddler را راهاندازی کنید و به طور طبیعی ببندید.
مشکل: فقط تونلهای CONNECT قابل مشاهده هستند، اما محتوای HTTPS نیست
ضبط HTTPS تنظیم نشده است. به بخش تنظیم گواهینامه برگردید و اطمینان حاصل کنید که تیک Decrypt HTTPS traffic فعال است و گواهینامه در مخزن سیستم نصب شده است.
مشکل: ترافیک برنامه UWP در Fiddler ظاهر نمیشود
استثنای loopback برای این برنامه اضافه نشده است. از WinConfig استفاده کنید (که در بخش UWP توضیح داده شده است) و پس از افزودن استثنا، برنامه را دوباره راهاندازی کنید.
مشکل: پروکسی upstream کار نمیکند (خطای اتصال)
بررسی کنید: درستی آدرس و پورت پروکسی، صحت نام کاربری/رمز عبور، در دسترس بودن سرور پروکسی (سعی کنید بدون Fiddler به طور مستقیم متصل شوید). همچنین اطمینان حاصل کنید که پروکسی پروتکل مورد نیاز را پشتیبانی میکند — همه پروکسیهای HTTP از HTTPS tunneling پشتیبانی نمیکنند.
نتیجهگیری
Fiddler — ابزاری ضروری برای همه کسانی است که با ترافیک HTTP برنامههای ویندوز کار میکنند. این ابزار به شما اجازه میدهد تمام درخواستها را در زمان واقعی مشاهده کنید، آنها را در حین اجرا تغییر دهید، رفتار برنامهها را در شرایط مختلف آزمایش کنید و وظایفی را انجام دهید که نمیتوان با DevTools مرورگر انجام داد. پشتیبانی ویژه از برنامههای UWP از طریق مکانیزم استثنائات loopback — این یک فرصت منحصر به فرد است که در اکثر جایگزینها وجود ندارد.
برای وظایف آزمایش رفتار وابسته به جغرافیا یا بررسی عملکرد از طریق پروکسیهای خارجی — پروکسی upstream را در Fiddler تنظیم کنید. اگر به IPهای واقعی از کشورهای خاص برای آزمایش صحیح نیاز دارید، به پروکسیهای مسکونی توجه کنید — آنها جغرافیای واقعیتری را فراهم میکنند و خطر مسدود شدن از طرف خدمات آزمایششده را به حداقل میرسانند.
با Fiddler Classic شروع کنید — این ابزار رایگان، به خوبی مستند شده و 90% وظایف اشکالزدایی در ویندوز را پوشش میدهد. با افزایش نیازها، میتوانید به Fiddler Everywhere منتقل شوید یا فرآیند کاری خود را با ابزارهای تخصصی مانند mitmproxy برای خودکارسازی انعطافپذیرتر تکمیل کنید.
```