بازگشت به وبلاگ

چارلز پراکسی برای اشکال‌زدایی برنامه‌های موبایل: راهنمای کامل برای ضبط ترافیک و تحلیل HTTP/HTTPS

چارلز پروکسی — ابزار قدرتمندی برای ضبط و تحلیل ترافیک HTTP/HTTPS برنامه‌های موبایل است. بیاموزید چگونه آن را برای اشکال‌زدایی، تست و کار با پروکسی تنظیم کنید.

📅۱۴ مرداد ۱۴۰۵
```html

شما برنامه‌ای را اجرا می‌کنید و آن رفتار غیرقابل پیش‌بینی دارد: داده‌ها بارگذاری نمی‌شوند، تبلیغات نمایش داده نمی‌شوند، حساب بدون دلیل مشخصی مسدود می‌شود. برای درک اینکه چه چیزی در حال وقوع است «زیر کاپوت»، باید درخواست‌های واقعی HTTP بین برنامه و سرور را مشاهده کنید. به همین دلیل Charles Proxy وجود دارد — ابزاری که به شما اجازه می‌دهد ترافیک برنامه‌های موبایل را در زمان واقعی ضبط، تجزیه و تحلیل و تغییر دهید.

در این راهنما، تنظیمات کامل Charles Proxy برای iOS و Android، کار با HTTPS، تغییر پاسخ‌های سرور و ادغام با سرورهای پروکسی خارجی را بررسی خواهیم کرد — همه اینها بدون نظریه اضافی، فقط عمل.

Charles Proxy چیست و به چه کار می‌آید

Charles Proxy یک برنامه دسکتاپ برای ویندوز، macOS و لینوکس است که به عنوان یک پروکسی HTTP/HTTPS بین دستگاه شما (اسمارت‌فون، شبیه‌ساز) و اینترنت عمل می‌کند. وقتی شما ترافیک را از طریق Charles هدایت می‌کنید، برنامه تمام درخواست‌ها و پاسخ‌ها را ضبط می‌کند و به شما اجازه می‌دهد هر بایت داده‌ای که برنامه به سرورها ارسال می‌کند را ببینید.

در واقع، Charles همان کاری را انجام می‌دهد که DevTools در مرورگر Chrome انجام می‌دهد — فقط برای برنامه‌های موبایل که دارای بازرسی داخلی نیستند. این موضوع به ویژه زمانی مهم است که بخواهید بفهمید:

  • کدام پارامترها هنگام احراز هویت یا ثبت‌نام حساب کاربری به سرور ارسال می‌شوند
  • کدام هدرها (User-Agent، Device-ID، توکن‌ها) به سرور ارسال می‌شوند
  • فیس‌بوک، TikTok یا اینستاگرام چگونه دستگاه را هنگام ورود بررسی می‌کنند
  • چرا برنامه در شرایط خاصی خطا می‌دهد
  • کدام داده‌ها هنگام درخواست قیمت یا کاتالوگ به سرور ارسال می‌شوند

برای آربیتراژکنندگان، Charles Proxy ابزاری برای شناسایی است: می‌توان به‌طور دقیق دید که چه داده‌های fingerprint از دستگاه توسط Facebook Ads جمع‌آوری می‌شود و فهمید چرا حساب بلافاصله پس از ورود مسدود می‌شود. متخصصان SMM از Charles برای تجزیه و تحلیل API اینستاگرام و TikTok استفاده می‌کنند تا محدودیت‌ها و الگوهای درخواست‌ها را درک کنند. توسعه‌دهندگان و تست‌کنندگان از آن برای شبیه‌سازی پاسخ‌های سرور و بررسی رفتار برنامه در شرایط غیرمعمول استفاده می‌کنند.

ویژگی‌های کلیدی Charles Proxy:

  • ضبط ترافیک HTTP و HTTPS (شامل TLS 1.3)
  • مشاهده بدنه درخواست‌ها و پاسخ‌ها در فرمت‌های راحت (JSON، XML، متن)
  • تغییر پاسخ‌های سرور (Rewrite، Map Local، Map Remote)
  • نقاط توقف (Breakpoints) برای ویرایش دستی درخواست‌ها
  • کاهش سرعت اتصال برای شبیه‌سازی اینترنت کند
  • ضبط و پخش جلسات
  • پشتیبانی از پروکسی‌های خارجی (HTTP، SOCKS5)

نصب و تنظیم اولیه Charles Proxy

Charles Proxy به عنوان یک برنامه پولی با دوره آزمایشی 30 روزه توزیع می‌شود. می‌توانید آن را از وب‌سایت رسمی charlesproxy.com دانلود کنید. نسخه‌های macOS، Windows و Linux از نظر عملکرد یکسان هستند.

مرحله 1. نصب برنامه

نصب‌کننده را برای سیستم‌عامل خود دانلود کنید، اجرا کنید و مراحل استاندارد نصب را دنبال کنید. پس از راه‌اندازی، Charles بلافاصله شروع به گوش دادن به پورت 8888 در کامپیوتر شما می‌کند. این پورت پیش‌فرض است که از طریق آن دستگاه‌ها ترافیک را هدایت می‌کنند.

مرحله 2. بررسی آدرس IP کامپیوتر

برای اینکه دستگاه موبایل بتواند به Charles متصل شود، باید در همان شبکه Wi-Fi باشد که کامپیوتر. آدرس IP کامپیوتر خود را در شبکه محلی پیدا کنید:

  • macOS: تنظیمات سیستم → شبکه → Wi-Fi را انتخاب کنید → آدرس IP
  • Windows: خط فرمان → ipconfig → آدرس IPv4
  • در خود Charles: Help → Local IP Address

این آدرس را به خاطر بسپارید — در تنظیم پروکسی در اسمارت‌فون به آن نیاز خواهید داشت. معمولاً چیزی شبیه به 192.168.1.X است.

مرحله 3. اجازه اتصال از دستگاه‌ها

هنگام اولین اتصال دستگاه موبایل، Charles یک پنجره گفت‌وگو با سوال «آیا اجازه اتصال از IP xxx.xxx.x.x را می‌دهید؟» نمایش می‌دهد. روی Allow کلیک کنید. اگر این پنجره نمایش داده نشد — بررسی کنید که آیا فایروال Windows یا macOS Charles را مسدود نکرده است. در macOS ممکن است نیاز باشد که به‌طور صریح اجازه دهید اتصالات ورودی در تنظیمات سیستم → امنیت → فایروال.

تنظیم Charles Proxy برای Android

تنظیم در Android شامل دو بخش است: هدایت ترافیک از طریق Charles و نصب گواهی برای رمزگشایی HTTPS. بدون گواهی، شما فقط داده‌های رمزگذاری شده — مجموعه‌ای بی‌فایده از نمادها را خواهید دید.

تنظیم پروکسی Wi-Fi در Android

  1. به تنظیمات → Wi-Fi بروید
  2. شبکه متصل را فشار داده و نگه دارید → تغییر شبکه
  3. گزینه‌های اضافی را فعال کنید
  4. در فیلد پروکسی گزینه دستی را انتخاب کنید
  5. میزبان پروکسی: آدرس IP کامپیوتر شما (به عنوان مثال، 192.168.1.5)
  6. پورت: 8888
  7. تنظیمات را ذخیره کنید

پس از این، تمام ترافیک HTTP از دستگاه از طریق Charles خواهد رفت. در صفحه برنامه، ضبط درخواست‌ها شروع به نمایش می‌کند.

نصب گواهی Charles در Android

  1. در دستگاه، مرورگر را باز کرده و به آدرس chls.pro/ssl بروید
  2. فایل گواهی .pem دانلود خواهد شد
  3. به تنظیمات → امنیت → نصب گواهی بروید
  4. فایل دانلود شده را انتخاب کرده و به عنوان گواهی CA نصب کنید
  5. هر نامی را وارد کنید، به عنوان مثال «Charles SSL»

در Android 7 و بالاتر، برنامه‌ها به طور پیش‌فرض به گواهی‌های کاربر اعتماد نمی‌کنند. این بدان معناست که برنامه‌های سیستمی و اکثر برنامه‌های شخص ثالث (Facebook، Instagram، TikTok) ضبط را مسدود خواهند کرد. برای کار با چنین برنامه‌هایی به دسترسی روت یا استفاده از شبیه‌ساز Android (به عنوان مثال، Genymotion یا Android Studio Emulator) با امکان نصب گواهی در مخزن سیستمی نیاز خواهید داشت.

⚠️ مهم برای Android 7+

از Android 7 (Nougat) به بعد، برنامه‌ها باید به‌طور صریح اعتماد به گواهی‌های کاربر را در فایل network_security_config.xml اعلام کنند. اکثر برنامه‌های محبوب (Facebook Ads، Instagram) این کار را انجام نمی‌دهند. برای تجزیه و تحلیل آنها از شبیه‌ساز با روت یا نسخه اصلاح‌شده Android استفاده کنید.

تنظیم Charles Proxy برای iOS

در iOS، روند کمی ساده‌تر است — اپل مکانیزم استانداردی برای نصب گواهی‌ها از طریق پروفایل‌ها ارائه می‌دهد و اکثر برنامه‌ها تنظیمات پروکسی سیستمی را رعایت می‌کنند.

تنظیم پروکسی Wi-Fi در iPhone/iPad

  1. به تنظیمات → Wi-Fi بروید
  2. روی نماد (i) کنار شبکه متصل کلیک کنید
  3. به پایین بروید تا بخش HTTP-proxy
  4. گزینه دستی را انتخاب کنید
  5. سرور: آدرس IP کامپیوتر با Charles
  6. پورت: 8888
  7. احراز هویت: خاموش (اگر در Charles تنظیم نشده باشد)

نصب گواهی Charles در iOS

  1. در iPhone، مرورگر Safari را باز کرده و به chls.pro/ssl بروید
  2. Safari پیشنهاد می‌کند که پروفایل پیکربندی را نصب کنید — روی اجازه دهید کلیک کنید
  3. به تنظیمات → عمومی → VPN و مدیریت دستگاه بروید
  4. پروفایل Charles را پیدا کرده و روی نصب کلیک کنید
  5. در صورت نیاز، PIN دستگاه را وارد کنید
  6. حالا به تنظیمات → عمومی → درباره این دستگاه → اعتماد به گواهی‌ها بروید
  7. کلید کنار Charles Proxy CA را روشن کنید

پس از این، Charles قادر خواهد بود ترافیک HTTPS اکثر برنامه‌های iOS را رمزگشایی کند. استثنا شامل برنامه‌هایی است که Certificate Pinning (چسباندن گواهی) را فعال کرده‌اند — به عنوان مثال، برنامه‌های بانکی و برخی نسخه‌های اینستاگرام. برای تجزیه و تحلیل آنها به jailbreak و تیک‌های خاصی مانند SSL Kill Switch نیاز خواهید داشت.

ضبط ترافیک HTTPS: تنظیم SSL Proxying

حتی پس از نصب گواهی، Charles به‌طور پیش‌فرض ترافیک HTTPS را رمزگشایی نمی‌کند — باید به‌طور صریح مشخص کنید که برای کدام دامنه‌ها SSL Proxying فعال شود. این کار به‌طور عمدی انجام شده است تا رابط کاربری با داده‌های اضافی بارگذاری نشود.

چگونه SSL Proxying را فعال کنیم

  1. در منوی Charles گزینه Proxy → SSL Proxying Settings را انتخاب کنید
  2. علامت Enable SSL Proxying را بزنید
  3. در بخش Include روی Add کلیک کنید
  4. در فیلد Host، * (ستاره = همه دامنه‌ها) را وارد کنید
  5. در فیلد Port، 443 را وارد کنید
  6. روی OK کلیک کرده و ضبط را دوباره راه‌اندازی کنید

حالا Charles ترافیک HTTPS را برای تمام دامنه‌ها رمزگشایی خواهد کرد. اگر به یک سرویس خاص علاقه دارید — دامنه آن را به جای ستاره مشخص کنید. به عنوان مثال، برای تجزیه و تحلیل اینستاگرام، *.instagram.com را وارد کنید، برای Facebook — *.facebook.com.

چه چیزی پس از فعال‌سازی SSL Proxying قابل مشاهده است

در پنل سمت چپ Charles، درخت دامنه‌ها را خواهید دید. روی هر درخواست کلیک کنید — در سمت راست اطلاعات دقیقی باز خواهد شد: URL، روش (GET/POST)، هدرهای درخواست، بدنه درخواست (اگر وجود داشته باشد) و پاسخ سرور. تب‌های Request و Response داده‌ها را به صورت خام یا در فرمت مناسب (JSON، XML، HTML) نشان می‌دهند.

هدرهای درخواست به ویژه ارزشمند هستند — زیرا در آنجا توکن‌های احراز هویت، شناسه‌های دستگاه، نسخه برنامه و سایر داده‌هایی که پلتفرم‌ها برای تأیید استفاده می‌کنند، منتقل می‌شوند. اگر پارامترهای مشکوکی را در درخواست‌ها به Facebook Ads یا TikTok مشاهده می‌کنید — این اولین قدم برای درک این است که چرا حساب مسدود می‌شود.

ابزارهای تجزیه و تحلیل: Breakpoints، Rewrite و Map Local

Charles فقط یک مشاهده‌گر ترافیک نیست، بلکه ابزاری قدرتمند برای تغییر آن است. سه ابزار کلیدی که بیشتر استفاده می‌شوند:

Breakpoints — نقاط توقف

Breakpoints به شما اجازه می‌دهد تا درخواست یا پاسخ را در لحظه عبور آن ضبط کرده و داده‌ها را به صورت دستی ویرایش کنید قبل از اینکه به گیرنده برسد. این یک ابزار قدرتمند برای تست است: می‌توانید پارامترهای درخواست را تغییر دهید، توکن دیگری را جایگزین کنید یا پاسخ سرور را تغییر دهید.

برای تنظیم Breakpoint: با کلیک راست روی درخواست در لیست → Breakpoint را انتخاب کنید. حالا در هنگام مراجعه بعدی برنامه به این URL، Charles انتقال را متوقف کرده و پنجره ویرایش را باز می‌کند. شما می‌توانید هر پارامتری را تغییر داده و روی Execute برای ادامه کلیک کنید.

Rewrite — تغییر خودکار داده‌ها

Rewrite به‌طور خودکار کار می‌کند: شما یک قاعده «اگر در درخواست X وجود دارد — آن را به Y تغییر بده» را تعیین می‌کنید و Charles آن را به تمام درخواست‌های مناسب بدون دخالت شما اعمال می‌کند. این برای تست‌های انبوه راحت است: به عنوان مثال، تغییر مقدار یک هدر خاص در تمام درخواست‌ها به یک دامنه خاص.

تنظیم: Tools → Rewrite → Add → نام مجموعه قوانین را تعیین کنید → Add قاعده → نوع (Header، Body، URL و غیره)، چه چیزی را جستجو کنید و به چه چیزی جایگزین کنید را مشخص کنید.

Map Local — جایگزینی پاسخ با فایل محلی

Map Local به شما اجازه می‌دهد تا پاسخ سرور را با محتوای یک فایل محلی جایگزین کنید. این برای تست برنامه‌ها بدون بک‌اند واقعی ضروری است: شما یک فایل JSON با داده‌های مورد نیاز ایجاد می‌کنید و برنامه به جای پاسخ واقعی API آنها را دریافت می‌کند.

تنظیم: Tools → Map Local → Add → URL برای ضبط و مسیر فایل محلی را مشخص کنید. حالا هر درخواست به این URL محتوای فایل شما را باز می‌گرداند. این امکان را برای تست موارد مرزی فراهم می‌کند: لیست خالی محصولات، خطای سرور 500، فرمت داده غیرمعمول.

ابزار کی استفاده کنیم پیچیدگی
Breakpoints ویرایش دستی یکبار درخواست/پاسخ پایین
Rewrite تغییر خودکار بر اساس قوانین متوسط
Map Local جایگزینی پاسخ API با فایل محلی پایین
Map Remote هدایت درخواست به سرور دیگر متوسط
Throttle شبیه‌سازی اتصال کند پایین

چگونه یک سرور پروکسی خارجی را از طریق Charles متصل کنیم

Charles Proxy می‌تواند نه تنها به عنوان یک ضبط‌کننده محلی عمل کند، بلکه به عنوان یک حلقه واسط بین دستگاه و سرور پروکسی خارجی نیز عمل کند. این به ویژه زمانی مفید است که بخواهید به طور همزمان ترافیک را تجزیه و تحلیل کرده و آن را از طریق یک آدرس IP خاص هدایت کنید — به عنوان مثال، برای بررسی اینکه برنامه چگونه در هنگام اتصال از کشور دیگر یا از طریق IP موبایل عمل می‌کند.

این طرح به این صورت است: اسمارت‌فون → Charles Proxy (کامپیوتر) → سرور پروکسی خارجی → اینترنت. شما تمام ترافیک را در Charles مشاهده می‌کنید، اما درخواست‌ها از طریق IP مورد نظر ارسال می‌شوند.

تنظیم پروکسی خارجی در Charles

  1. به Proxy → External Proxy Settings بروید
  2. علامت استفاده از سرورهای پروکسی خارجی را بزنید
  3. برای ترافیک HTTP: Web Proxy (HTTP) را فعال کنید، میزبان و پورت پروکسی را وارد کنید
  4. برای ترافیک HTTPS: Secure Web Proxy (HTTPS) را فعال کنید، همان داده‌ها را وارد کنید
  5. اگر پروکسی نیاز به احراز هویت دارد — نام کاربری و رمز عبور را وارد کنید
  6. روی OK کلیک کنید

Charles از پروکسی‌های HTTP و SOCKS5 پشتیبانی می‌کند. برای SOCKS5 از تب SOCKS Proxy در همان تنظیمات استفاده کنید. اگر با پروکسی‌های مسکونی با چرخش IP کار می‌کنید — هر درخواست جدید از طریق آدرس متفاوتی ارسال خواهد شد، که برای تست رفتار پلتفرم در هنگام تغییر IP مناسب است.

استثناها برای ترافیک محلی

اگر نیاز دارید که بخشی از ترافیک به‌طور مستقیم (بدون پروکسی خارجی) برود، استثناها را در فیلد Bypass external proxies for the following hosts اضافه کنید. به عنوان مثال، آدرس‌های محلی localhost و 127.0.0.1 معمولاً باید استثنا شوند تا خدمات محلی خراب نشوند.

زمانی که پروکسی خارجی در Charles نیاز است:

  • تست جغرافیایی برنامه (چگونه از ایالات متحده، آلمان، برزیل عمل می‌کند)
  • بررسی در دسترس بودن محتوا در مناطق مختلف
  • تجزیه و تحلیل درخواست‌ها هنگام کار با پروکسی‌های موبایل — برای درک اینکه پلتفرم چگونه به IP موبایل پاسخ می‌دهد
  • دور زدن محدودیت‌های منطقه‌ای هنگام تست

سناریوهای عملی: آربیتراژ، SMM و تست برنامه‌ها

بیایید به وظایف خاصی بپردازیم که Charles Proxy در کار واقعی استفاده می‌شود — بدون نظریه اضافی.

سناریو 1. آربیتراژ — تجزیه و تحلیل fingerprint Facebook Ads

یکی از وظایف اصلی آربیتراژکننده‌ها — درک این است که چرا Facebook حساب‌ها را بلافاصله پس از ورود مسدود می‌کند. Charles اجازه می‌دهد تا اولین درخواست‌های برنامه Facebook را در هنگام احراز هویت ضبط کرده و ببینید چه داده‌هایی درباره دستگاه به سرورهای Meta ارسال می‌شود.

در درخواست‌ها به graph.facebook.com شما پارامترهایی مانند device_id، hardware_id، advertiser_id و سایر شناسه‌ها را خواهید دید. این به شما کمک می‌کند تا بفهمید کدام داده‌ها باید در مرورگرهای ضد شناسایی مانند Dolphin Anty یا AdsPower هنگام کار با چندین حساب جدا شوند.

همچنین مفید است که پاسخ سرور را در هنگام مسدود شدن ضبط کنید — معمولاً شامل کد خطا و گاهی دلیل مسدود شدن است که Facebook در رابط کاربری برنامه نشان نمی‌دهد.

سناریو 2. SMM — مطالعه API اینستاگرام و TikTok

متخصصان SMM که 10-50 حساب مشتری را مدیریت می‌کنند، اغلب با محدودیت‌های پلتفرم‌ها مواجه می‌شوند: اینستاگرام تعداد لایک‌ها، دنبال کردن‌ها و نظرات را در هر ساعت محدود می‌کند. Charles اجازه می‌دهد تا این محدودیت‌ها را به‌طور دقیق اندازه‌گیری کنید و درخواست‌ها را هنگام کار با حساب به‌صورت دستی ضبط کنید.

با ضبط درخواست‌ها به i.instagram.com، ساختار API را خواهید دید: نقطه‌های پایانی، پارامترها، توکن‌های احراز هویت. این کمک می‌کند تا اتوماسیون را طوری تنظیم کنید که رفتار کاربر واقعی را شبیه‌سازی کند و مسدود نشود. همین کار برای TikTok نیز انجام می‌شود — تجزیه و تحلیل درخواست‌ها به api16-normal-c-useast1a.tiktokv.com نشان می‌دهد که پلتفرم چه پارامترهایی را بررسی می‌کند.

سناریو 3. تجارت الکترونیک — تجزیه و تحلیل API بازارها

فروشندگان در Wildberries، Ozon و Avito به‌طور فعال از نظارت بر قیمت‌های رقبا استفاده می‌کنند. Charles اجازه می‌دهد تا درخواست‌های برنامه موبایل بازار را ضبط کرده و ببینید که داده‌های قیمت و موجودی از چه نقاط پایانی بارگذاری می‌شوند. این کمک می‌کند تا یک پارسر تنظیم کنید که رفتار برنامه موبایل را شبیه‌سازی کند — چنین درخواست‌هایی به‌مراتب آسان‌تر از درخواست‌های پارسر مرورگر عبور می‌کنند.

به عنوان مثال، در برنامه Wildberries می‌توانید درخواست‌ها به catalog.wb.ru را ضبط کنید و ساختار دقیق پارامترهای فیلتر و صفحه‌بندی را ببینید. این یک الگوی آماده برای ساخت پارسر فراهم می‌کند که به‌طور قابل توجهی از تلاش برای بازتولید درخواست‌های مرورگر مؤثرتر خواهد بود. برای پارسینگ پایدار در اینجا به پروکسی‌های دیتاسنتر با سرعت و ثبات بالا نیاز خواهید داشت.

سناریو 4. تست QA برنامه‌های موبایل

تست‌کنندگان از Charles برای بررسی رفتار برنامه در شرایط غیرمعمول استفاده می‌کنند. با استفاده از Map Local می‌توان پاسخ سرور را به خطای 500 تغییر داد و بررسی کرد که برنامه چگونه خطای بک‌اند را مدیریت می‌کند. Throttle اجازه می‌دهد تا اینترنت کند (3G، Edge) شبیه‌سازی شود و بررسی شود که آیا برنامه در هنگام بارگذاری طولانی متوقف می‌شود یا خیر. Breakpoints این امکان را می‌دهد که داده‌ها را به‌صورت دستی تغییر دهید و موارد مرزی را بررسی کنید — به عنوان مثال، چه اتفاقی می‌افتد اگر سرور یک آرایه خالی به جای لیست محصولات بازگرداند.

مشکلات رایج و راه‌حل‌های آنها

هنگام کار با Charles Proxy، مبتدیان به طور مرتب با مشکلات مشابهی مواجه می‌شوند. بیایید رایج‌ترین آنها را بررسی کنیم.

مشکل 1: Charles «unknown» را به جای محتوای درخواست‌های HTTPS نشان می‌دهد

دلیل: SSL Proxying فعال نیست یا گواهی روی دستگاه نصب نشده است.
راه‌حل: بررسی کنید که در Proxy → SSL Proxying Settings، SSL Proxying فعال شده و میزبان *:443 اضافه شده باشد. اطمینان حاصل کنید که گواهی Charles روی دستگاه نصب شده و برای آن اعتماد کامل فعال شده است (در iOS — از طریق تنظیمات اعتماد به گواهی‌ها).

مشکل 2: ترافیک ضبط نمی‌شود، لیست درخواست‌ها خالی است

دلیل: دستگاه ترافیک را از طریق Charles هدایت نمی‌کند یا Charles اتصالات را نمی‌پذیرد.
راه‌حل: بررسی کنید که دستگاه و کامپیوتر در یک شبکه Wi-Fi هستند. اطمینان حاصل کنید که در تنظیمات پروکسی روی دستگاه، IP صحیح کامپیوتر و پورت 8888 مشخص شده باشد. بررسی کنید که در Charles ضبط فعال باشد: Proxy → Start Recording (یا دکمه با نقطه قرمز در نوار ابزار).

مشکل 3: برنامه هنگام فعال بودن Charles کار نمی‌کند

دلیل: برنامه از Certificate Pinning استفاده می‌کند — نه تنها زنجیره اعتماد را بررسی می‌کند، بلکه گواهی خاص سرور را نیز بررسی می‌کند. گواهی Charles با آنچه انتظار می‌رود مطابقت ندارد.
راه‌حل برای Android با روت: ماژول Magisk TrustUserCerts را نصب کنید یا از Frida برای دور زدن SSL Pinning استفاده کنید. برای iOS با jailbreak — SSL Kill Switch 2. بدون روت/jailbreak دور زدن Certificate Pinning بسیار دشوار است.

مشکل 4: Charles ترافیک زیادی را ضبط می‌کند، رابط کاربری کند می‌شود

دلیل: تمام ترافیک از تمام برنامه‌ها در دستگاه ضبط می‌شود، از جمله خدمات سیستمی.
راه‌حل: از فیلتر کردن استفاده کنید. در فیلد Filter (در پایین پنل سمت چپ) دامنه سرویس مورد نظر را وارد کنید. یا کنترل دسترسی را در Proxy → Access Control Settings تنظیم کنید تا Charles فقط اتصالات را از برنامه‌های خاص از طریق Proxy → Recording Settings → Include/Exclude بپذیرد.

مشکل 5: اینترنت پس از بستن Charles کار نمی‌کند

دلیل: تنظیمات پروکسی روی دستگاه باقی مانده است، اما Charles دیگر اجرا نشده است — ترافیک جایی برای رفتن ندارد.
راه‌حل: همیشه پس از اتمام کار با Charles، تنظیمات پروکسی را از روی دستگاه حذف کنید. پارامتر پروکسی را به حالت «هیچ» یا «غیرفعال» در تنظیمات Wi-Fi برگردانید.

مشکل راه‌حل سریع
HTTPS نشان می‌دهد «unknown» SSL Proxying را فعال کنید + گواهی را نصب کنید
لیست درخواست‌ها خالی است IP، پورت و اینکه Charles در حالت ضبط است را بررسی کنید
برنامه باز نمی‌شود Certificate Pinning — نیاز به روت/jailbreak دارد
رابط کاربری کند می‌شود فیلتر دامنه را در فیلد Filter اضافه کنید
پس از بستن، اینترنت کار نمی‌کند تنظیمات پروکسی را از روی دستگاه حذف کنید

نتیجه‌گیری

Charles Proxy یکی از مفیدترین ابزارها برای همه کسانی است که با برنامه‌های موبایل کار می‌کنند: چه آربیتراژکننده‌ای که می‌خواهد مکانیزم‌های تأیید Facebook Ads را درک کند، چه متخصص SMM که API اینستاگرام را مطالعه می‌کند، یا توسعه‌دهنده‌ای که رفتار برنامه خود را در شرایط غیرمعمول تست می‌کند. نصب آن 15-20 دقیقه طول می‌کشد و امکاناتی که پس از تنظیم آن باز می‌شود، به راحتی قابل ارزیابی نیست.

نکته اصلی که باید به خاطر بسپارید: Charles ابزاری برای تجزیه و تحلیل و اشکال‌زدایی است، نه برای ناشناس‌سازی. برای کار با چندین حساب، تست از مکان‌های جغرافیایی مختلف یا دور زدن محدودیت‌های پلتفرم، به سطح جداگانه‌ای از حفاظت — سرورهای پروکسی با آدرس‌های IP واقعی نیاز دارید.

اگر شما ترافیک برنامه‌های موبایل را برای آربیتراژ یا کار با حساب‌های شبکه‌های اجتماعی تجزیه و تحلیل می‌کنید، توصیه می‌کنیم Charles را با پروکسی‌های مسکونی ترکیب کنید — آنها IP واقعی کاربران خانگی را فراهم می‌کنند که خطر مسدود شدن را در هنگام تست و کار با حساب‌ها به حداقل می‌رساند. برای وظایفی که سرعت و ثبات بالا اهمیت دارد — به عنوان مثال، پارسینگ انبوه API بازارها — پروکسی‌های دیتاسنتر با uptime بالا مناسب هستند.

```