Charles Proxy — چیست، تنظیمات و ضبط ترافیک HTTPS

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

Charles Proxy — یک سرور پروکسی چندسکویی برای اشکال‌زدایی ترافیک HTTP/HTTPS است که توسط توسعه‌دهندگان برای ضبط، مشاهده و تغییر درخواست‌های شبکه استفاده می‌شود. به گفته Karl von Randow، سازنده ابزار (2025)، Charles از سال 2004 در بیش از 50,000 شرکت در سراسر جهان استفاده می‌شود. پروکسی از ضبط ترافیک از دستگاه‌های موبایل از طریق WiFi، پروکسی HTTPS با نصب گواهی ریشه و مجموعه گسترده‌ای از ابزارهای تحلیل API پشتیبانی می‌کند.

نکات اصلی

  • Charles Proxy — یک سرور پروکسی HTTP/HTTPS برای ضبط و تحلیل ترافیک شبکه با قابلیت‌های پیشرفته اشکال‌زدایی است
  • پروکسی HTTPS از طریق نصب گواهی ریشه Charles روی دستگاه پیاده‌سازی می‌شود که امکان مشاهده ترافیک رمزگذاری‌شده را فراهم می‌کند
  • Rewrite و Breakpoints — ابزارهای قدرتمند برای تغییر درخواست‌ها و پاسخ‌ها در لحظه بدون تغییر کد سرور یا کلاینت
  • Map Local و Map Remote امکان جایگزینی منابع شبکه با فایل‌های محلی یا سرورهای جایگزین برای آزمایش را فراهم می‌کنند
  • Throttle — شبیه‌سازی اتصالات شبکه آهسته و ناپایدار برای بررسی رفتار برنامه در شرایط ارتباطی ضعیف

Charles Proxy چیست؟

Charles Proxy — یک پروکسی HTTP و مانیتور HTTP است که به عنوان واسطه بین کلاینت و سرور عمل می‌کند. تمام درخواست‌ها و پاسخ‌ها از Charles عبور می‌کنند که امکان مشاهده محتوای آنها، تحلیل ساختار، تغییر داده‌ها در زمان واقعی و شبیه‌سازی شرایط مختلف شبکه را فراهم می‌کند. قابل دسترس برای Windows، macOS و Linux.

تاریخچه و جایگاه

Charles Proxy در سال 2004 توسط Karl von Randow ساخته شد و یکی از محبوب‌ترین ابزارها برای اشکال‌زدایی ترافیک شبکه باقی مانده است. برخلاف جایگزین‌های رایگان، Charles مجوز پولی با دوره آزمایشی 30 روزه ارائه می‌دهد. این ابزار به عنوان یک راه‌حل حرفه‌ای برای توسعه‌دهندگان برنامه‌های موبایل، توسعه‌دهندگان وب و مهندسان QA که به کنترل کامل بر ارتباطات HTTP نیاز دارند، جایگاه‌یابی شده است.

سازگاری با پلتفرم‌ها

Charles به عنوان پروکسی سیستمی روی کامپیوتر کار می‌کند و می‌تواند ترافیک هر دستگاهی را در یک شبکه ضبط کند: Android، iOS، شبیه‌سازها، شبیه‌سازهای الکترونیکی، مرورگرهای وب و دستگاه‌های IoT. برای ضبط HTTPS باید گواهی ریشه Charles را روی هر دستگاه نصب کنید. ترافیک در HTTP/1.1 و HTTP/2 (تا حدی) پشتیبانی می‌شود. HTTP/3 (QUIC) در سطح ضبط پشتیبانی نمی‌شود.

Charles Proxy چگونه کار می‌کند

Charles بر اساس اصل پروکسی MITM (Man-in-the-Middle) کار می‌کند: وقتی کلاینت درخواستی را از طریق Charles ارسال می‌کند، ابزار این درخواست را ضبط می‌کند، به سرور مقصد هدایت می‌کند، پاسخ را دریافت و آن را به کلاینت برمی‌گرداند. تمام ترافیک از Charles عبور می‌کند که امکان تحلیل و تغییر آن را فراهم می‌کند.

معماری پروکسی

Charles هنگام راه‌اندازی یک پروکسی HTTP محلی روی پورت 8888 (پیش‌فرض) ایجاد می‌کند. سیستم عامل یا برنامه برای استفاده از این پروکسی تنظیم می‌شود. تمام درخواست‌های HTTP ابتدا به Charles ارسال می‌شوند که سپس به عنوان یک کلاینت کامل برای سرور مقصد عمل می‌کند. برای HTTPS، Charles از تکنیک SSL-پروکسی خود استفاده می‌کند: برای هر دامنه گواهی‌ای در لحظه تولید می‌کند که با گواهی ریشه Charles امضا شده است. اگر گواهی ریشه روی دستگاه به عنوان معتبر نصب شده باشد، Charles می‌تواند ترافیک HTTPS را رمزگشایی و مشاهده کند.

حالت‌های کار

Charles از دو حالت پشتیبانی می‌کند: Proxy (سرور پروکسی کلاسیک) و SOCKS Proxy (برای ترافیک UDP و TCP). برای توسعه وب از HTTP-proxy استاندارد استفاده می‌شود. برای دستگاه‌های موبایل — تنظیمات WiFi Proxy روی دستگاه با مشخص کردن آدرس IP کامپیوتری که Charles روی آن اجرا می‌شود. MacOS از تنظیم خودکار پروکسی برای شبیه‌ساز iOS پشتیبانی می‌کند.

xml
<!-- تنظیم network_security_config.xml برای Android با پشتیبانی Charles -->
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <debug-overrides>
        <trust-anchors>
            <!-- اعتماد به گواهی Charles در ساخت Debug -->
            <certificates src="user" />
        </trust-anchors>
    </debug-overrides>
</network-security-config>

قابلیت‌های اصلی Charles Proxy

Charles Proxy مجموعه‌ای از ابزارهای حرفه‌ای برای تحلیل و تغییر ترافیک فراتر از ضبط ساده درخواست‌ها ارائه می‌دهد.

Rewrite و Breakpoints

ابزار Rewrite امکان تغییر خودکار بخش‌های خاصی از درخواست‌ها یا پاسخ‌ها را فراهم می‌کند: هدرها، پارامترهای URL، بدنه پاسخ. به عنوان مثال، می‌توان هدر User-Agent را با مقدار دستگاه دیگری جایگزین کرد یا کوکی‌های خاصی را حذف کرد. Breakpoints مانند دیباگر کار می‌کنند: درخواست در مرحله انتخاب شده (قبل از ارسال یا قبل از دریافت) متوقف می‌شود و توسعه‌دهنده می‌تواند محتوای آن را دستی تغییر دهد. این برای آزمایش پردازش پاسخ‌های خطا یا حالت‌های غیراستاندارد مفید است.

Map Local و Map Remote

Map Local امکان جایگزینی منبع شبکه (CSS، JS، JSON) با یک فایل محلی روی دیسک را فراهم می‌کند. این برای توسعه فرانت‌اند ضروری است: می‌توان CSS/JS را تغییر داد و بلافاصله نتیجه را بدون استقرار روی سرور دید. Map Remote درخواست‌ها را از یک URL به URL دیگر هدایت می‌کند — مثلاً از سرور تولید به staging برای آزمایش. هر دو ابزار بر اساس الگوهای URL با پشتیبانی از wildcards کار می‌کنند.

Throttle و شبیه‌سازی شرایط شبکه

ابزار Throttle امکان شبیه‌سازی انواع مختلف اتصالات شبکه را بر اساس پروفایل‌های از پیش تعیین‌شده فراهم می‌کند: 3G، EDGE، GPRS، DSL، WiFi. می‌توان محدودیت سرعت (دانلود/آپلود)، تأخیر، از دست دادن بسته و پایداری را تنظیم کرد. این برای آزمایش رفتار برنامه در اتصال آهسته یا ناپایدار حیاتی است — پردازش صحیح تایم‌اوت‌ها، تلاش‌های مجدد، حالت آفلاین.

پروفایلدانلودآپلودتأخیرسناریوی معمول
3G780 kbps330 kbps200 msآزمایش با سیگنال ضعیف موبایل
EDGE130 kbps50 kbps400 msاتصال فوق‌العاده آهسته
GPRS50 kbps20 kbps500 msحداقل اتصال ممکن
DSL2 Mbps256 kbps50 msاتصال سیمی خانگی
WiFi10 Mbps10 Mbps10 msاتصال WiFi خوب

Auto Save و Recording

Charles می‌تواند به طور خودکار جلسات ترافیک را در فایل‌های .chls ذخیره کند که امکان تحلیل بعدی یا ارسال به همکاران را فراهم می‌کند. Recording Control امکان تنظیم انعطاف‌پذیر اینکه کدام ترافیک ذخیره شود را فراهم می‌کند: بر اساس دامنه‌ها، انواع محتوا، کدهای وضعیت. این برای نظارت طولانی‌مدت API مفید است.

تنظیمات Charles Proxy برای دستگاه‌های موبایل

برای اشکال‌زدایی ترافیک برنامه‌های موبایل، Charles به عنوان WiFi Proxy تنظیم می‌شود: تمام دستگاه‌های موجود در یک شبکه با کامپیوتر می‌توانند ترافیک را از طریق Charles هدایت کنند. تنظیمات صحیح HTTPS نیاز به نصب گواهی Charles روی دستگاه موبایل دارد.

تنظیمات در Android

برای Android لازم است: Settings → WiFi → Advanced → Proxy را باز کنید، Manual را انتخاب کرده و آدرس IP کامپیوتر با پورت 8888 را وارد کنید. سپس مرورگر را روی دستگاه باز کرده و به آدرس http://chls.pro/ssl برای دانلود گواهی Charles بروید. در Android 7+ (API 24+) برای اعتماد به گواهی‌های کاربر در ساخت Debug به network_security_config.xml نیاز است — در غیر این صورت برنامه ممکن است ترافیک را از Charles عبور ندهد.

تنظیمات در iOS

برای iOS: Settings → WiFi → تنظیم پروکسی روی IP و پورت 8888. سپس Safari → http://chls.pro/ssl → نصب پروفایل گواهی. در iOS 10.3+ لازم است اعتماد به گواهی را فعال کنید: Settings → General → About → Certificate Trust Settings → Charles Proxy را فعال کنید. iOS در مورد گواهی‌ها سخت‌گیرانه‌تر است: برخی برنامه‌ها ممکن است از SSL Pinning استفاده کنند که ترافیک را حتی با گواهی معتبر از Charles مسدود می‌کند.

حل مشکلات SSL Pinning

اگر برنامه از SSL Pinning (ثابت کردن گواهی سرور) استفاده می‌کند، پروکسی استاندارد از طریق Charles کار نخواهد کرد — برنامه گواهی Charles را رد می‌کند. راه‌حل‌ها: غیرفعال کردن SSL Pinning در ساخت Debug از طریق تنظیمات OkHttp یا URLSession، استفاده از Frida برای دور زدن pinning در زمان اجرا، یا استفاده از Android Emulator با دسترسی روت.

سناریوهای عملی استفاده از Charles Proxy

Charles Proxy وظایف مشخص توسعه و آزمایش را حل می‌کند. بیایید رایج‌ترین سناریوهایی که ابزار در آنها ضروری است را بررسی کنیم.

اشکال‌زدایی یکپارچه‌سازی API

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

آزمایش با اتصال آهسته

با استفاده از پروفایل‌های Throttle می‌توان بررسی کرد که برنامه در سرعت پایین اتصال چگونه رفتار می‌کند: آیا نشانگر بارگیری نمایش داده می‌شود، آیا تایم‌اوت به درستی پردازش می‌شود، آیا UI در صورت قطع اتصال قفل می‌شود. به ویژه آزمایش کش کردن مهم است — اگر داده‌ها قبلاً بارگیری شده‌اند، برنامه باید آنها را از کش نمایش دهد، نه اینکه وارد بارگیری بی‌نهایت شود.

ویرایش پاسخ‌های سرور

با استفاده از Breakpoints می‌توان پاسخ سرور را تغییر داد قبل از اینکه به برنامه ارسال شود. مثلاً برگرداندن آرایه خالی به جای داده‌ها، تغییر کد وضعیت به 500، اضافه کردن فیلد جدید به JSON. این امکان بررسی پردازش موارد مرزی را بدون تغییر کد سرور فراهم می‌کند — یکی از قدرتمندترین کاربردهای Charles در توسعه موبایل.

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

آیا Charles Proxy رایگان است؟

Charles Proxy یک محصول تجاری با دوره آزمایشی 30 روزه است. پس از پایان دوره آزمایشی، برنامه با 30 دقیقه وقفه در هر بار راه‌اندازی به کار خود ادامه می‌دهد. هزینه مجوز 50 دلار برای هر نسخه است. جایگزین‌های رایگانی مانند Proxyman (macOS) و mitmproxy (چندسکویی) وجود دارند.

آیا می‌توان ترافیک شبیه‌ساز iOS را ضبط کرد؟

بله، شبیه‌ساز iOS به طور خودکار از پروکسی سیستمی macOS استفاده می‌کند. کافی است Charles را راه‌اندازی کرده و SSL-پروکسی را فعال کنید — تمام ترافیک شبیه‌ساز ضبط خواهد شد. تنظیم گواهی برای شبیه‌ساز به طور خودکار انجام می‌شود، فقط باید به گواهی Charles در زنجیره کلید macOS اعتماد کنید.

Charles چه تفاوتی با Proxyman دارد؟

تفاوت‌های اصلی: Charles چندسکویی است (Windows، macOS، Linux)، Proxyman — فقط macOS و iOS. Charles مجموعه ابزارهای گسترده‌تری دارد (Rewrite، Map Local، Repeat، Auto Save)، اما پولی است. Proxyman برای عملکرد پایه رایگان است، با رابط مدرن و یکپارچه‌سازی بومی با شبیه‌ساز iOS.

Charles Proxy چگونه بر عملکرد تأثیر می‌گذارد؟

Charles هنگام عبور ترافیک از پروکسی تأخیر اضافه می‌کند، به ویژه در SSL-پروکسی فعال (رمزگشایی/رمزگذاری). در کامپیوترهای مدرن، تأخیر 5–15 میلی‌ثانیه به ازای هر درخواست است. برای آزمایش عملکرد، توصیه می‌شود SSL-پروکسی را برای منابع ایستا (CSS، JS، تصاویر) از طریق Recording Control غیرفعال کنید.

چگونه جلسه را از Charles صادر کنیم؟

Charles از صادرات به فرمت‌های: .chls (فرمت اختصاصی برای باز کردن مجدد در Charles)، HAR (HTTP Archive، قابل باز شدن در مرورگرها و سایر ابزارها)، CSV (برای پردازش در Excel یا صفحات گسترده)، Trace (برای صادرات درخواست خاص در فرمت سازگار با curl) پشتیبانی می‌کند. صادرات از طریق منوی File → Export Session انجام می‌شود.

خلاصه

  • Charles Proxy — یک سرور پروکسی حرفه‌ای HTTP/HTTPS برای ضبط، مشاهده و تغییر ترافیک شبکه از سال 2004 است
  • اصل کار — MITM-پروکسی: تمام درخواست‌ها از Charles عبور می‌کنند که امکان تحلیل و تغییر آنها را در لحظه فراهم می‌کند
  • ابزارهای قدرتمند: Rewrite، Breakpoints، Map Local، Map Remote، Throttle — برای اشکال‌زدایی جامع API و تجربه کاربری
  • پروکسی HTTPS نیاز به نصب گواهی ریشه Charles روی دستگاه دارد و برای Android 7+ — network_security_config.xml در ساخت Debug
  • پروفایل‌های Throttle امکان شبیه‌سازی 3G، EDGE، DSL و سایر انواع اتصالات برای آزمایش رفتار برنامه در شرایط واقعی را فراهم می‌کنند
  • صادرات جلسات به فرمت‌های HAR، CSV و .chls برای تحلیل، گزارش‌دهی و ارسال به تیم
  • برای پروژه‌های با بودجه محدود، جایگزین‌های رایگان را در نظر بگیرید: Proxyman (macOS) یا mitmproxy (چندسکویی متن‌باز)

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

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

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

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