تخبرنا ويكيبيديا أن:
Charles هو تطبيق وكيل لتصحيح أخطاء HTTP عبر الأنظمة الأساسية مكتوب بلغة Java. يسمح للمستخدم بمشاهدة حركة مرور HTTP و HTTPS و TCP المنشطة التي يتم الوصول إليها من أو إلى أو من خلال الكمبيوتر المحلي. يتضمن ذلك الطلبات والاستجابات ، بما في ذلك رؤوس HTTP والبيانات الوصفية (على سبيل المثال ، ملفات تعريف الارتباط ومعلومات التخزين المؤقت والتشفير) ، مع ميزات مصممة لمساعدة المطورين والمختبرين على تحليل الاتصالات وتبادل الرسائل.
شرح بسيط
الاستنشاق هو عملية مراقبة واعتراض جميع الحزم التي تمر عبر الشبكة باستخدام أدوات الاستنشاق (Charles Proxy).
الخطوات الأولى
1. التثبيت والتشغيل
أولاً تحتاج إلى تنزيل التطبيق وتثبيته.
إذا لم تكن قد اشتريت ترخيصًا ، فستتوفر نسخة تجريبية مدتها 30 يومًا مع قيود (لا يتم حظر الوظيفة ، ولكن ستظهر النوافذ مع مهلة تتراوح من 5 إلى 10 ثوانٍ قبل استئناف الاستخدام ، وبعد 30 دقيقة سيتم إنهاء التطبيق).
2. نبدأ في استنشاق حركة المرور
ابدأ Charles Proxy ، انتقل إلى القائمة Help → SSL Proxying → Install Charles Root Certificate (انظر 1) → تثبيت الشهادة → استيراد الشهادة .
الآن ترى طلبات ، لكنها مشفرة ولا شيء مرئي باستثناء الهيروغليفية. لرؤية الطلب / الاستجابة في شكله العادي ، تحتاج إلى تمكين SSL Proxying وتكوين المجالات التي نريد اعتراض حزمها. ونريد استقبال الطلبات من جميع المواقع. للقيام بذلك ، انتقل إلى Proxy → SSL Proxying Settings .
في مربع الحوار الذي يفتح ، حدد مربع الاختيار Enable SSL Proxying ، وحدد قسم Enclude وانقر فوق Add .
بعد ذلك ، املأ حقل المضيف بـ * (كما هو موضح في لقطة الشاشة) وانقر فوق موافق .
في مربع الحوار SSL Proxying Settings ، انقر فوق OK .
الآن يمكنك مشاهدة الطلبات المرسلة إلى الخادم واستجابات الخادم.
3. إنشاء
الخادم الوكيل لحركة مرور متصفح الويب عند إعادة تشغيل Charles ، ما عليك سوى تنشيط وكيل Windows (إذا كان لديك Windows) أو وكيل Mac.
4. تكوين وكيل على Android
لعرض طلبات تطبيقات Android ، يجب أن يكون لديك مجموعة تطبيقات Android مقابلة مع الإذن المحدد في البيان. دعنا نتظاهر بأن لدينا مثل هذا التطبيق ونريد أن نبدأ في الحصول على حركة المرور منه.
للقيام بذلك ، اكتشفنا عنوان IP الخاص بجهاز الكمبيوتر: في Charles Proxy ، انتقل إلى Help → Local IP Address . ونحن نرى بأن ما تتمتعون به من IP:
192.168.1.50.
بعد ذلك ، ارفع الهاتف ، افتحخصائص الشبكة -> اسم شبكة WiFi -> خادم الوكيل -> يدوي -> اسم المضيف: * عنوان IP الخاص بك * / المنفذ: * 8888 * -> حفظ خصائص الشبكة التي تم تغييرها.
أنت الآن بحاجة إلى اتباع الرابط chls.pro/ssl أو charlesproxy.com/getssl ، ثم سيبدأ التنزيل التلقائي للشهادة. افتحه ، وعيِّن اسمًا للشهادة ، والآن يمكنك الوصول إلى حركة مرور تطبيق Android.
5. تكوين وكيل على iOS
خذ iPhone الخاص بك ، افتح خصائص الشبكة ← اسم شبكة WiFi ← خادم وكيل ← يدوي ← اسم المضيف: * IP * / المنفذ: * 8888 * ← احفظ خصائص الشبكة التي تم تغييرها.
أنت الآن بحاجة إلى اتباع الرابط chls.pro/ssl أو charlesproxy.com/getssl، "السماح" بتحميل ملف تعريف التكوين. بعد ذلك ، انتقل إلى الإعدادات ← تحميل ملف التعريف ← تثبيت . ثم انتقل إلى إعدادات → عامة → معلومات عن هذا الجهاز → شهادات الثقة → العثور على الشهادة المثبتة وجعلها "الموثوق بها".
وظيفة Charles Proxy
- استبدال البيانات:
- 1.1 نقطة توقف
- 1.2 إعادة الكتابة
- 1.3 خريطة محلية
- الوكيل:
- 2.1 إعدادات الخانق
- 2.2 وكلاء عكسيون
- 2.3 ميناء الشحن
- 2.4 وكيل MacOS / وكيل Windows
- أدوات:
- 3.1 لا يوجد تخزين مؤقت
- 3.2 حظر ملفات تعريف الارتباط
- 3.3 خريطة بعيد
- 3.4 قائمة الحظر
- 3.5 انتحال DNS
- 3.6 المرآة
- 3.7 يؤلف
- إعدادات التسجيل
- التركيز
- كرر
- كرر متقدم
1. استبدال البيانات
دعونا نتخيل أننا بحاجة إلى اختبار التخطيط على العميل. تحتاج إلى التحقق من كيفية عرض عدد كبير من مكافآت المستخدم. أحد الخيارات التي سيقدمها الكثيرون: تغيير عدد المكافآت في قاعدة البيانات والتحقق من العميل. نعم ، ستكون على حق! ومع ذلك ، قد يحتوي الخادم على ذاكرة تخزين مؤقت ، وتحتاج إلى الانتظار بعض الوقت حتى يتم تحديث عدد المكافآت ، أو مجرد الاتصال بقاعدة البيانات نفسها وتنفيذ الطلب - يستغرق هذا وقتًا معينًا. هناك خيار أسهل: تغيير الاستجابة من الخادم! لدى Charles Proxy ثلاث طرق لخداع البيانات:
1.1 نقطة توقف
نقطة التوقف هي نوع من نقاط التوقف للطلب. عند العثور على طلب من القائمة المحددة ، يتم فتح نافذة منفصلة لمزيد من التفاعل اليدوي مع معلمات الطلب. في ذلك ، انتقل إلى تغيير الطلبات والاستجابات يدويًا. من الملائم استخدام هذه الوظيفة عند اختبار API أو استجابات خادم مختلفة.
لدينا تطبيق وملف تعريف مستخدم لديه حاليًا 0 مكافآت على حساباتهم:

الطلب الذي يأتي فيه هذا العدد من المكافآت:
https://api.youla.io/api/v1/user/5e6222bbbedcc5975d2375f8
"لتعليق" Breakpoint عند الطلب ، انتقل إلى قسم Proxy → Breakpoint Settings . بعد ذلك ، حدد مربع الاختيار Enable Breakpoints → Add ، وفي مربع الحوار "Edit Breakpoint" الذي يفتح ، الصق عنوان URL للطلب كما هو موضح في لقطة الشاشة:
على سبيل المثال ، حدد مربعي الاختيار "طلب" و "استجابة". ثم انقر فوق موافق ، ثم موافق مرة أخرى في نافذة Breakpoint Settings. الآن قم بتشغيل الطلب مرة أخرى ، أي أن العميل سيعيد فتح الشاشة بملف تعريف المستخدم.
في Charles Proxy ، يمكننا أن نرى أن الطلب متوقف مؤقتًا:
هنا يمكنك تغيير معلمات الاستعلام. ولكن الآن لا تحتاج إلى القيام بذلك ، انقر فوق "تنفيذ". بعد ذلك ، نقوم بإيقاف الاستجابة المستلمة بالفعل من الخادم مؤقتًا. هذا هو المكان الذي نحتاج فيه إلى تعديل "الاستجابة". ابحث عن المعلمة المطلوبة -
bonus_cnt»: 45.
ثم قم بتغيير قيمة المعلمة
bonus_cnt، على سبيل المثال ، إلى 1،000،000 مكافأة ، وانقر فوق "تنفيذ".
يعرض العميل المبلغ الجديد من المكافآت. نحن أغنياء!

1.2 إعادة الكتابة
إعادة الكتابة هي أداة تسمح لك بإنشاء قواعد تعدل الطلبات والاستجابات أثناء مرورها عبر وكيل Charles. على سبيل المثال ، يمكنك إضافة عنوان وتغييره والبحث عن نص واستبداله في نص الرد أو الطلب وما إلى ذلك.
دعنا نحاول استخدام Rewrite لتغيير عدد مكافآت مستخدمنا. للقيام بذلك ، افتح Tools → Rewrite → حدد المربع " Enable Rewrite " → Add . في حقل الاسم ، يمكنك إدخال أي اسم للاستبدال ، على سبيل المثال ، "تغيير المكافأة" ، أو ترك "مجموعة بلا عنوان" الافتراضية.
الخطوة التالية هي إضافة مسار الطلب إلى "الموقع". للقيام بذلك ، ضمن الموقع → إضافةاملأ الحقول التالية واحفظها:
Host:
https://api.youla.io
Path:
/api/v1/user/5e6222bbbedcc5975d2375f8
بعد إضافة مسار الطلب ، تحتاج إلى تغيير المعلمة نفسها وقيمتها. للقيام بذلك ، تحتاج إلى إنشاء قاعدة إعادة الكتابة :
النوع: الجسم (لأن المعلمة موجودة في الجسم) ؛
حيث: الاستجابة (لأن المعلمة في استجابة من الخادم) ؛
قسم المطابقة: في "القيمة" ، حدد القيمة والمعلمة التي يقوم الخادم بإرجاعها ؛
قسم الاستبدال: في "القيمة" ، حدد القيمة والمعلمة التي تريد رؤيتها على العميل.
بعد ذلك ، احفظ "قاعدة إعادة الكتابة" وانقر فوق "موافق" في علامة التبويب "إعادة كتابة الإعدادات". على العميل ، أعد طلب ملف تعريف المستخدم مرة أخرى. لقد قمت بتغيير عدد مكافآت المستخدم تلقائيًا. نحن أغنياء مرة أخرى!

1.3 خريطة محلية
Map Local هي أداة تتيح لك استخدام الملفات المحلية كما لو كانت جزءًا من خادم.
انتقل إلى Tools → Map Local.
بعد ذلك ، في نافذة Map Local Settings ، انقر فوق Add → Host:
https://api.youla.io/api/v1/user/5e6222bbbedcc5975d2375f8→ Local path: المسار الموجود على الكمبيوتر إلى الملف. يمكنك استخدام ملفات الوسائط الجاهزة ، HTML ، CSS ، JSON ، XML. إنه أكثر ملاءمة ، بالطبع ، للمطورين حتى لا يقوموا بتحميل البيانات على الخادم للاختبار اللاحق ، ولكن يمكن للمختبرين أيضًا العثور على تطبيق كفء. لقد أعددنا الرد الذي سنحتاجه مقدمًا وحفظناه في ملف change_bonus.json:
احفظ القيم التي تم إدخالها في علامة التبويب تحرير التعيين وعلامة التبويب إعدادات الخريطة المحلية.
على العميل ، أعد طلب ملف تعريف المستخدم مرة أخرى. لقد قمت بتغيير عدد مكافآت المستخدم تلقائيًا. نحن أغنياء مرة أخرى!

دعنا نلقي نظرة على الميزات الأخرى لأداة Charles Proxy. ولنبدأ من البداية بعلامة التبويب "الوكيل".
2.1 إعدادات الخانق
إعدادات Throttle هي وظيفة تسمح لك بتعيين معلمات مختلفة لسرعة الاتصال بالمجال المحدد.
وظيفة لمن يحبون الاختبار في المصعد ، في مترو الأنفاق ، في النفق. لننتقل إلى Proxy → Throttle Settings → the Enable Throttling checkbox . إذا كنت لا تفهم جميع النقاط المذكورة أعلاه ، يمكنك استخدام الإعداد المسبق Throttle وتحديد السرعة المناسبة للاختبار ، وسيقوم النظام تلقائيًا بملء باقي الحقول.
إذا حددت "للمضيفين المحددين فقط" ، فيمكنك تعيين مضيف معين سيتم تطبيق الإعدادات عليه. هنا يمكنك استخدام الإعدادات المسبقة الجاهزة مع الإعدادات لأنواع مختلفة (4G ، 3G ، إلخ). ويمكنك أيضًا تعيين معلمات مختلفة ، وسأقوم بإدراج بعض منها بإيجاز:
النطاق الترددي هو الحد الأقصى لمقدار البيانات التي يمكن نقلها بمرور الوقت.
الاستخدام هو جزء النطاق الترددي الإجمالي الذي يمكن توفيره للمستخدم في أي وقت.
الكمون - الكمون بالمللي ثانية عند الطلب بين العميل والخادم البعيد.
MTU هي وحدة الإرسال القصوى للإعداد المسبق الحالي.
الموثوقية - مقياس لاحتمال فشل الاتصال. تستخدم لمحاكاة ظروف الشبكة غير الموثوق بها.
الاستقرار هو مقياس لاحتمال أن يكون الاتصال غير مستقر ، وبالتالي انخفاض في الجودة. مفيد لمحاكاة الشبكات التي تنخفض فيها جودة الاتصال بشكل دوري ، على سبيل المثال ، الهاتف المحمول.
2.2 وكلاء عكسيون
الوكيل العكسي هو خادم وكيل عكسي. تُستخدم عادةً لتلقي الطلبات من الإنترنت وإعادة توجيهها إلى أحد خوادم الويب.
2.3 ميناء الشحن
إعادة توجيه المنفذ ، التي يشار إليها أحيانًا باسم إعادة توجيه المنفذ ، أو النفق ، هي عملية إعادة توجيه حركة المرور الموجهة إلى منفذ شبكة معين من عقدة شبكة إلى أخرى. تسمح هذه الطريقة للمستخدم الخارجي بالوصول إلى منفذ داخل الشبكة المحلية.
2.4 وكيل MacOS / وكيل Windows
MacOS Proxy أو Windows Proxy (اعتمادًا على نظام التشغيل الخاص بك) - يقوم بتوصيل حركة المرور من متصفح الويب الخاص بك.
بعد التعامل مع قسم الوكيل ، دعنا ننتقل إلى قسم الأدوات.
3.1 لا يوجد تخزين مؤقت
تمنع أداة No Caching التخزين المؤقت عن طريق معالجة رؤوس HTTP التي تتحكم في التخزين المؤقت للاستجابة. رؤوس
If-Modified-Sinceو If-None-Matchيتم إزالتها من طلبات، Pragma: no-cacheو تضاف Cache-control: no-cache. رؤوس Expires، Last-Modifiedو ETagتتم إزالة من الجواب، وأضاف Expires: 0، و Cache-Control: no-cache.
3.2 حظر ملفات تعريف الارتباط
حظر ملفات تعريف الارتباط - تتم إزالة رأس ملف تعريف الارتباط من الطلبات ، مما يمنع إرسال قيم الملف من تطبيق العميل (مثل متصفح الويب) إلى خادم بعيد. أيضًا ، تتم إزالة رأس Set-Cookie من الاستجابات ، مما يمنع تطبيق العميل من تلقي طلبات تعيين ملفات تعريف الارتباط من الخادم البعيد. في الإعدادات ، يمكنك تمكين إزالة ملفات تعريف الارتباط لكل من المضيفين والمختارين. يتيح المثال أدناه إمكانية حذف ملفات تعريف الارتباط لجميع الطلبات.
3.3 خريطة بعيد
خريطة بعيد - يسمح لك بإعادة توجيه الطلبات من خريطة واحدة من URL إلى خريطة أخرى إلى. يستبدل المضيف أو المسار بالكامل أو المعلمات فقط ، بناءً على مهمتك. في المثال أدناه ، تم استبدال الطلب من خادم prod إلى خادم dev.
3.4 قائمة الحظر
قائمة الحظر - تسمح لك بحظر أسماء نطاقات معينة. عندما يحاول مستعرض الويب طلب أي صفحة من اسم مجال محظور ، فسيتم حظره. يمكنك اختيار إما "إسقاط الاتصال" أو إرجاع الخطأ 403.
3.5 انتحال DNS
الاستضافة المشتركة هي عندما يكون لديك عدة مواقع على نفس عنوان IP ، ويحدد خادم الويب الموقع الذي تطلبه بناءً على الاسم الذي تم إدخاله في المتصفح. بتعبير أدق ، ينظر الخادم إلى رأس المضيف المرسل في الطلب. على سبيل المثال ، عندما تحتاج إلى استبدال المضيفين بحيث عندما تقوم بإدخال عنوان في المتصفح (على سبيل المثال ، api.youla.ru) ، تنتقل الطلبات إلى عنوان آخر (على سبيل المثال ، إلى موقع اختبار).
انتحال DNS - يعيد توجيه اسم المجال إلى عنوان IP محدد.
3.6 المرآة
مرآة - تتيح لك هذه الميزة حفظ جميع الردود التي تم إرجاعها إلى Charles Proxy تلقائيًا. تم وضعها محليًا في نفس التسلسل الهرمي الموجود على الخادم. إذا كان هناك توقف مفاجئ في الواجهة الخلفية ، وسقطت بيئة الاختبار ، وما إلى ذلك ، فلديك بالفعل نماذج جاهزة لـ Map Local. يمكنك تنشيط الوظيفة مثل: أدوات → مرآة أو أدوات → حفظ تلقائي .
3.7 يؤلف
الإنشاء هي وظيفة لتحرير الاستعلامات التي التقطتها.
على سبيل المثال ، يمكنك إضافة منتج إلى مفضلاتك ، ولكن لسبب ما لم تتم إضافته. يمكنك تحرير طلب تم إرساله بالفعل وإرساله مرة أخرى. للقيام بذلك ، حدد الطلب المطلوب من القائمة ، وانقر بزر الماوس الأيمن فوقه وحدد إنشاء . سيتغير رمز الطلب ، والآن يمكنك تحريره بأمان.
بعد أن قمت بتغيير القيم المطلوبة في الطلب ، انقر فوق "تنفيذ" أدناه لإرسال الطلب إلى الخادم.
4. إعدادات التسجيل
إعدادات التسجيل - إعدادات لعرض قوائم المجالات المسموح بها والمحظورة.
في علامة التبويب "الخيارات" ، يمكنك تكوين الحد ، أي عدد الطلبات التي يمكن لـ Charles Proxy تسجيلها.
في علامة التبويب "تضمين" ، يمكنك تحديد مجال معين لعرض الحزم.
في علامة التبويب "استبعاد" ، يمكننا تحديد المجالات التي يجب إخفاؤها أثناء الاستنشاق.
5. التركيز
التركيز - تنقل هذه الوظيفة المجال إلى المواضع الأولى في القائمة.
6. كرر
تكرار - يرسل طلبًا إلى الخادم المطابق للطلب المحدد.
7. كرر متقدم
كرر متقدم - مماثل للتكرار ، يمكنك فقط تحديد عدد الطلبات المرسلة والتأخير بينها. هذه الميزة مفيدة عند فحص استجابة الخادم للفيضان.
هنا التزامن هو عدد المستخدمين والتكرار هو عدد مرات تكرار كل طلب. يمكنك أيضًا تحديد مربع "إظهار النتائج في جلسة جديدة" ، وفي هذه الحالة سيتم فتح نافذة جديدة حيث سيتم تنفيذ الطلبات.
ملخص
في هذه المقالة ، حاولنا وصف ميزات Charles Proxy التي يستخدمها مختبرو تطبيقات الهاتف المحمول. هذا كل شيء ، ولا تنسى إرفاق الجلسة من المتشمم بتقرير الخطأ.