Charles Proxy هو خادم بروكسي متعدد المنصات لتصحيح أخطاء حركة مرور HTTP/HTTPS، يستخدمه المطورون لالتقاط وعرض وتعديل طلبات الشبكة. وفقًا لـ Karl von Randow، منشئ الأداة (2025)، يُستخدم Charles في أكثر من 50,000 شركة حول العالم منذ عام 2004. البروكسي يدعم التقاط حركة المرور من الأجهزة المحمولة عبر WiFi، وبروكسي HTTPS مع تثبيت الشهادة الجذرية، ومجموعة واسعة من الأدوات لتحليل API.
الملامح الرئيسية
Charles Proxy هو بروكسي HTTP ومراقب HTTP يعمل كوسيط بين العميل والخادم. تمر جميع الطلبات والردود عبر Charles، مما يسمح بعرض محتوياتها، وتحليل بنيتها، وتعديل البيانات في الوقت الفعلي، ومحاكاة ظروف الشبكة المختلفة. وهو متاح لنظام Windows و macOS و Linux.
تم إنشاء Charles Proxy في 2004 بواسطة Karl von Randow ولا يزال أحد أكثر الأدوات شيوعًا لتصحيح أخطاء حركة مرور الشبكة. على عكس البدائل المجانية، يقدم Charles ترخيصًا مدفوعًا مع فترة تجريبية مدتها 30 يومًا. يتم وضع الأداة كحل احترافي لمطوري التطبيقات المحمولة ومطوري الويب ومهندسي ضمان الجودة الذين يحتاجون إلى تحكم كامل في اتصالات HTTP.
يعمل Charles كـ بروكسي نظام على الكمبيوتر ويمكنه التقاط حركة المرور من أي جهاز في نفس الشبكة: Android و iOS و المحاكيات ومتصفحات الويب وأجهزة IoT. لالتقاط HTTPS، تحتاج إلى تثبيت الشهادة الجذرية لـ Charles على كل جهاز. حركة المرور مدعومة على HTTP/1.1 و HTTP/2 (جزئيًا). HTTP/3 (QUIC) غير مدعوم على مستوى الالتقاط.
يعمل Charles وفقًا لمبدأ بروكسي MITM (رجل في المنتصف): عندما يرسل العميل طلبًا عبر Charles، تلتقط الأداة الطلب، وتعيد توجيهه إلى الخادم الهدف، وتستقبل الرد، وتعده إلى العميل. تمر كل حركة المرور عبر Charles، مما يسمح بتحليلها وتعديلها.
عند التشغيل، يقوم Charles بإنشاء بروكسي HTTP محلي على المنفذ 8888 (افتراضيًا). يتم تكوين نظام التشغيل أو التطبيق لاستخدام هذا البروكسي. يتم إرسال جميع طلبات HTTP أولاً إلى Charles، الذي يعمل بعد ذلك كعميل كامل للخادم الهدف. بالنسبة لـ HTTPS، يستخدم Charles تقنية بروكسي SSL الخاصة به: يقوم بإنشاء شهادة فورية لكل مجال، موقعة من الشهادة الجذرية لـ Charles. إذا تم تثبيت الشهادة الجذرية على الجهاز كموثوقة، يمكن لـ Charles فك تشفير وعرض حركة مرور HTTPS.
يدعم Charles وضعين: Proxy(خادم بروكسي كلاسيكي) و SOCKS Proxy(لحركة مرور UDP و TCP). لتطوير الويب، يُستخدم بروكسي HTTP القياسي. للأجهزة المحمولة — تكوين WiFi Proxy على الجهاز مع تحديد عنوان IP للكمبيوتر الذي يعمل عليه Charles. يدعم macOS التكوين التلقائي للبروكسي لمحاكي iOS.
<!-- تهيئة 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 مجموعة من الأدوات الاحترافية لتحليل وتعديل حركة المرور تتجاوز بكثير مجرد التقاط الطلبات البسيط.
أداة Rewrite تسمح بتغيير أجزاء معينة من الطلبات أو الردود تلقائيًا: الرؤوس، ومعلمات URL، ونص الرد. على سبيل المثال، يمكن استبدال رأس User-Agent بقيمة من جهاز آخر أو إزالة بعض ملفات تعريف الارتباط. Breakpoints تعمل مثل المصحح: يتوقف الطلب عند مرحلة محددة (قبل الإرسال أو قبل الاستقبال)، ويمكن للمطور تغيير محتوياته يدويًا قبل أن تستمر. هذا مفيد لاختبار معالجة الردود الخاطئة أو الحالات غير القياسية.
Map Local تسمح باستبدال مورد شبكة (CSS, JS, JSON) بملف محلي من القرص. هذا لا غنى عنه في تطوير الواجهة الأمامية: يمكن تعديل CSS/JS ورؤية النتيجة فورًا دون نشر على الخادم. Map Remote يعيد توجيه الطلبات من URL إلى آخر — على سبيل المثال، من خادم الإنتاج إلى staging للاختبار. تعمل كلتا الأداتين مع أنماط URL التي تدعم الأحرف البدل.
أداة Throttle تسمح بمحاكاة أنواع مختلفة من اتصالات الشبكة باستخدام ملفات تعريف محددة مسبقًا: 3G, EDGE, GPRS, DSL, WiFi. يمكن تكوين حد السرعة (تنزيل/رفع)، وزمن الوصول، وفقدان الحزمة، والاستقرار. هذا أمر بالغ الأهمية لاختبار سلوك التطبيق في ظل اتصالات بطيئة أو غير مستقرة — معالجة المهلات بشكل صحيح، وإعادة المحاولة، والوضع دون اتصال.
| الملف الشخصي | التنزيل | الرفع | زمن الوصول | السيناريو النموذجي |
|---|---|---|---|---|
| 3G | 780 kbps | 330 kbps | 200 ms | اختبار مع إشارة جوال ضعيفة |
| EDGE | 130 kbps | 50 kbps | 400 ms | اتصال بطيء للغاية |
| GPRS | 50 kbps | 20 kbps | 500 ms | أدنى اتصال ممكن |
| DSL | 2 Mbps | 256 kbps | 50 ms | اتصال سلكي منزلي |
| WiFi | 10 Mbps | 10 Mbps | 10 ms | اتصال WiFi جيد |
يمكن لـ Charles حفظ جلسات حركة المرور تلقائيًا في ملفات .chls، مما يسمح بتحليلها لاحقًا أو مشاركتها مع الزملاء. يتيح Recording Control تكوين حركة المرور التي تريد حفظها بمرونة: حسب النطاق، أو نوع المحتوى، أو رمز الحالة. هذا مناسب للمراقبة طويلة المدى لواجهات API.
لتصحيح أخطاء حركة مرور تطبيقات الجوال، يتم تكوين Charles كـ WiFi Proxy: يمكن لجميع الأجهزة في نفس شبكة الكمبيوتر توجيه حركة المرور عبر Charles. يتطلب التكوين الصحيح لـ HTTPS تثبيت شهادة Charles على الجهاز المحمول.
لـ Android: افتح Settings → WiFi → Advanced → Proxy، واختر Manual، وأدخل عنوان IP للكمبيوتر مع المنفذ 8888. ثم افتح متصفحًا على الجهاز واذهب إلى http://chls.pro/ssl لتنزيل شهادة Charles. على Android 7+ (API 24+)، يلزم وجود network_security_config.xml للثقة بشهادات المستخدم في إصدارات Debug — وإلا فقد لا يمرر التطبيق حركة المرور عبر Charles.
لـ 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(تثبيت شهادة الخادم)، فلن يعمل البروكسي القياسي عبر Charles — سيرفض التطبيق شهادة Charles. الحلول: تعطيل SSL Pinning في إصدارات Debug من خلال إعدادات OkHttp أو URLSession، أو استخدام Frida لتجاوز pinning في وقت التشغيل، أو استخدام Android Emulator مع وصول جذر.
يحل Charles Proxy مهام تطوير واختبار محددة. دعنا نلقي نظرة على السيناريوهات الأكثر شيوعًا حيث تكون الأداة لا غنى عنها.
السيناريو الأكثر شيوعًا — التحقق من صحة طلبات API. يعرض Charles عنوان URL الدقيق للطلب، والرؤوس، والنص، والمعلمات. إذا أعاد الخادم استجابة غير متوقعة، ترى فورًا: بنية JSON، ورمز الخطأ، ورؤوس الاستجابة. هذا يسمح بالتمييز بين أخطاء العميل وأخطاء الخادم دون سجلات من كلا الجانبين.
باستخدام ملفات تعريف Throttle، يمكنك اختبار كيفية تصرف التطبيق في ظل سرعة اتصال منخفضة: هل يتم عرض مؤشر التحميل، هل يتم التعامل مع المهلات بشكل صحيح، هل تتجمد واجهة المستخدم عند فقدان الاتصال. من المهم بشكل خاص اختبار التخزين المؤقت — إذا تم تحميل البيانات بالفعل، يجب أن يعرضها التطبيق من ذاكرة التخزين المؤقت بدلاً من الدخول في حالة تحميل لا نهائية.
باستخدام Breakpoints، يمكنك تعديل استجابة الخادم قبل إرسالها إلى التطبيق. على سبيل المثال، إرجاع مصفوفة فارغة بدلاً من البيانات، أو تغيير رمز الحالة إلى 500، أو إضافة حقل جديد إلى JSON. هذا يسمح باختبار معالجة الحالات الحدودية دون تعديل كود الخادم — أحد أقوى استخدامات Charles في تطوير الجوال.
الأسئلة الشائعة
Charles Proxy هو منتج تجاري مع فترة تجريبية مدتها 30 يومًا. بعد انتهاء الفترة التجريبية، يستمر البرنامج في العمل مع توقف لمدة 30 دقيقة عند كل تشغيل. تكلفة الترخيص $50 لكل نسخة. توجد بدائل مجانية مثل Proxyman (macOS) و mitmproxy (متعدد المنصات).
نعم، محاكي iOS يستخدم تلقائيًا بروكسي نظام macOS. يكفي تشغيل Charles وتمكين بروكسي SSL — سيتم التقاط كل حركة مرور المحاكي. إعداد الشهادة للمحاكي يتم تلقائيًا، ما عليك سوى الوثوق بشهادة Charles في سلسلة مفاتيح macOS.
الاختلافات الرئيسية: Charles متعدد المنصات (Windows، macOS، Linux)، Proxyman مخصص لـ macOS و iOS فقط. Charles لديه مجموعة أدوات أوسع (Rewrite، Map Local، Repeat، Auto Save) ولكنه مدفوع. Proxyman مجاني للوظائف الأساسية، بواجهة حديثة وتكامل أصلي مع محاكي iOS.
Charles يضيف زمن انتقال عند مرور حركة المرور عبر البروكسي، خاصة مع بروكسي SSL النشط (فك التشفير/التشفير). على أجهزة الكمبيوتر الحديثة، التأخير هو 5-15 مللي ثانية لكل طلب. لاختبارات الأداء، يُوصى بتعطيل بروكسي SSL للمحتوى الثابت (CSS, JS, الصور) عبر Recording Control.
يدعم Charles التصدير إلى تنسيقات: .chls(أصلي، لإعادة الفتح في Charles)، HAR(HTTP Archive، يُفتح في المتصفحات والأدوات الأخرى)، CSV(للمعالجة في Excel أو جداول البيانات)، Trace(لتصدير طلب محدد بتنسيق متوافق مع curl). التصدير عبر قائمة File → Export Session.
الخلاصة
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.
اقرأ أيضًا