نحوه رصد clear text درخواست های http و https اندروید با fiddler

گاهی وقتا تو حین توسعه نرم افزار نیاز میشه تا قادر باشیم درخواست های دستگاهمون رو رصد کنیم و از داده های ارسالی و دریافتیش باخبر باشیم. در این مطلب آموزش میدم که چطور میتونیم داده های ارسالی و دریافتی در دستگاه اندرویدی رو بصورت clear text از پروتکل های http و https توی سیستم رصد کنیم.برای اینکار ابزاری وجود داره بنام Fiddler که محصولی از Telerik هست که میتونید از لینک زیر اطلاعات بیشتر در مورد این نرم افزار بخونید و از سایت اصلی دانلودش کنید https://www.telerik.com/fiddler اگه موفق به دانلود این نرم افزار نشدید میتونید از لینک زیر مستقیم دانلود کنید https://p30download.com/fa/entry/74298/ حالا قدم به قدم جلو میریم و fiddler رو کانفیگ میکنیمکانفیگ Fiddlerمرحله اول: نصب Fiddler خوشبختانه fiddler برای تمامی سیستم های عامل از جمله لینوکس، ویندوز و مکینتاش وجود داره که من روی نسخه های مکینتاش و ویندوز تست کردم و نتیجه مشابه و موفقیت آمیزی گرفتم در این آموزش محیط ویندوز رو با هم جلو میریم.مرحله دوم: شروع Capture نمای نرم افزار fiddlerشماره ۱ در تصویردر این بخش لیست درخواست هایی که از طریق سیستم و دیگر دستگاه های متصل (گوشی، تبلت یا ...) به نمایش در خواهد آمد که شامل یه اطلاعات خیلی کلی هست.شماره ۲ در تصویربا انتخاب هر آیتم از بخش ۱ اطلاعات کامل آن درخواست در این بخش دسته بندی و به نمایش در خواهد آمد.شماره ۳ در تصویرهنگامی که نرم افزار fiddler رو اجرا شد می بایست این بخش به نوشته capturing تغییر کنه که یعنی در حال اسنیف کردن هست در غیر اینصورت می بایست اونو فعال کنید، برای فعال کردن وارد منوی File بشید و تیک گزینه Capture Traffic رو فعال کنیدمرحله سوم: کانفیگ Httpsباید به fiddler این اجازه رو بدیم که درخواست های https رو رصد و decrypt کنه برای اینکار باید از منوی Tools گزینه Options رو بزنید و وارد سربرگ Https بشید و گزینه capture https connections و decrypt https traffic رو فعال کنید ممکنه توی این مرحله از شما چند بار اجازه بگیره برای نصب گواهینامه https که برای خود fiddler هست که اونا رو باید accept بزنید تا این گزینه براتون فعال بشه، الان ما قادر هستیم که پروتکل Https رو رصد کنیم.مرحله چهارم: رصد کردن remote connectionهنوز به fiddler نگفتیم که ما می خوایم درخواست های دستگاه دیگه ای رو رصد کنیم. برای اینکار از منوی Tools گزینه Options را انتخاب کنید و وارد سربرگ Connections بشید و تیک گزینه Allow remote computers to connect رو فعال کنید و مقدار Fiddler listens on port رو به 8888 تغییر بدید.حالا پروسه کانفیگ کردن fiddler تموم شده و تنها کاری که باید تو دستگاه اندرویدی یا هر دستگاهی که میخوایم ترافیکش رو رصد کنیم اینه که پراکسی fiddler رو ست کنیم.کانفیگ دستگاه اندرویدیبرای اینکار می بایست هم سیستم و هم دستگاه به یه مودم روتر وصل باشن. حالا وارد تنظیمات دستگاه بشید و روی کانکشنی که متصل شدید نگه دارید تا گزینه show advanced options به نمایش در بیاد حالا باید گزینه proxy رو از none به manual تغییر بدید و آی پی سیستم خودتون رو در فیلد Hostname و شماره پورت fiddler که 8888 ست کرده بودیم رو وارد کنید و تغییرات رو ذخیره کنید.چطور IP سیستمم رو بفهمم؟کافیه fiddler رو باز کنید از سمت راست روی آیکون connection ماوس hover کنید و میبینید که ip سیستمتون به نمایش در میاد الان شما قادر هستید تا درخواست های دستگاه اندرویدی رو توی fiddler رصد کنید ولی یه مشکلی وجود داره اینکه توی مرورگر دستگاه و اپلیکیشن ها با خطای ssl و عدم اتصال به سرور برمیخورید اون بخاطر این هست که گواهینامه fiddler رو باید توی دستگاه هم نصب کنید تا این مشکل برطرف بشه، برای اینکار کافیه آدرس زیر رو در مرورگر دستگاه باز کنیدipv4.fiddler:8888حالا از پایین صفحه به نمایش در اومده لینک FiddlerRoot certificate رو بزنید که یه فایل دانلود میشه که باید در دستگاه نصب کنید حالا مشکل حل شده و درخواست ها رو میتونید بصورت clear text توی محیط fiddler رصد کنید.یه مشکل بزرگ در اندروید!!!یه حالت خاص وجود داره که رصد کردن تو محیط اندروید رو با مشکل مواجه میکنه اونم اینه که اگر دستگاه اندرویدی شما دارای اندروید 7 و به بالا باشه (api 24 and above) شما نمیتونید درخواست های اپلیکیشن هایی که تو دستگاه نصب کردید رو رصد کنید بخاطر اینه که گواهینامه fiddler که تو دستگاه نصب کردید در زمانی که اپلیکیشنی تو دستگاه درخواست میفرسته به صورت خودکار توسط سیستم عامل رد میشه و از اون گواهینامه استفاده نمیکنه که در نتیجه نمیتونید درخواست های ارسالی از پروتکل https از اپلیکیشن ها رو رصد کنید. برای اینکه بتونید اینکار رو بکنید باید اندروید دستگاه حداکثر نسخه 6 یا M باشه.در نهایت امیدوارم این مطلب مفید بوده باشهبا تشکر، مهدی جانبراری