برنامج Charles Proxy لفحص واعتراض طلبات الـ API الخاصة بتطبيقات الايفون

برنامج Charles Proxy على نظام الماك هو عبارة عن HTTP Debugging Proxy يسمح لك بمشاهدة الـ HTTP Requests بين جهازك (سواء أكان هاتف جوال او كمبيوترك الشخصي) وبين السيرفر. فإذا كنت مهتم بمعرف الـ API Calls التي يستخدمها أحد التطبيقات (بعض التطبيقات تستخدم طرق حماية لمنع ذلك)، فهذه المقالة مفيدة لك 👌️

كيف يعمل Charles Proxy؟

يقوم برنامج Charles Proxy بتحويل الجهاز الخاص بك إلى بروكسي (Proxy Server) وسيسمح للاجهزة الاخرى الاتصال بالانترنت عبره. فعندما تتصل برنامج Charles Proxy بروكسي، سيقوم البرنامج بتحويل الطلبات إلى الموقع الذي ترغب بالوصول إليه (او الخادم الخاص بالتطبيق). أي أن برنامج Charles Proxy سيقوم بقراءة الطلبات قبل تحويلها للموقع. وبالتالي، ستتمكن من قراءة جميع الطلبات بين التطبيق الذي يعمل على هاتفك والخادم الخاص بالتطبيق!

المصدر: https://haptik.ai/tech/charles-proxy-mobile-apps-testing/

هل يعمل Charles Proxy مع التطبيقات التي تستخدم اتصال آمن SSL؟

كما ذكرت سابقاً، يقوم برنامج Charles Proxy بقراءة الطلبات بين التطبيق على هاتفك والخادم الخاص به، سوءا أكان الاتصال بين التطبيق والخادم امن (HTTPS) او لا (HTTP).

ولكن… حتى تستطيع مشاهدة الطلبات المشفرة عبر الـ HTTPS ستحتاج إلى تحميل شهادة SSL خاصة ببرنامح Charles Proxy على هاتفك الجوال.

ملاحظة: بعض التطبيقات تستخدم طريقة تسمى بـ SSL Pinning، حيث يقوم التطبيق بمقارنة الشهادة المتواجدة على الخادم بالشهادة متواجدة على التطبيق،و في حال اختلاف الشهادة سيتم رفض الاتصال بين التطبيق والخادم. أي أن Charles Proxy لن يكون مجدي في هذه الحالة. بالتأكيد هنالك طرق لمشاهدة البيانات المشفرة وتجاوز الـ SSL Pinning ولكني غير مطلع عليها وليست لدي اي معرفة بها.

قبل ان تبدأ

برنامج تشارلز متوفر على الايفون ايضاً. إذا كنت مهتم لنسخة الايفون (بالرغم من أنك لن تكون بحاجة لها لمتابعة هذه المقالة) يمكنك الحصول عليه من متجر تطبيقات ابل.

لمتابعة المقالة، قم بتحميل برنامج Charles Proxy وتنصيبه على نظام الماك عبر الرابط التالي:

https://www.charlesproxy.com

بعد تحميل Charles Proxy على نظام الماك، اختر من القائمة Proxy > Proxy Settings وضع نفس الاعدادات الظاهرة بالصورة

Image placeholder

بعد ذلك، اختر من القائمة Proxy >SSL Proxy Settings واستخدم نفس الاعدادات الظاهرة بالصورة

Image placeholder

الآن ستحتاج إلى معرفة الـ IP الخاص بالماك حتى يمكنك استخدام الماك كسيرفر بروكسي. هذا السيرفر سيكون حلقة وصل بين هاتفك الجوال وبين سيرفر التطبيق الذي ترغب فيه معرفه الـ http requetsts المرسلة له. لمعرفة الـ IP قم بفتح الـ System Preferences واختر Network و دون الـ IP الخاص بالجهاز.

Image placeholder

الان من اعدادات هاتفك الايفون،اذهب إلى إعدادات شبكة الـ WiFi المتصل بها، واضغط على ايقونة الاستعلام (التعجب) بجانب اسم الشبكة، بعد ذلك اختر Configure Proxy > Manual وضع عنوان الـ IP الخاص بجهاز الماك (الذي قمت بتدوينه في الخطوة السابقة) والمنفذ 8888 (لاحظ أن الـ IP الخاص بك سيكون مختلف عن الـ IP الخاص بي يكون)

Image placeholder

بعد حفظ التغييرات افتح متصفح سفاري على الايفون و اذهب إلى الرابط التالي لتحميل شهادة الـ SSL الخاصة ببرنامج Charles Proxy.

Charles Web Debugging Proxy – Official Site http://www.charlesproxy.com

بعد فتح الرابط، ستظهر الرسالة التالية والتي ستطلب الاذن بتحميل SSL CA Certificate على جوالك. اضغط على Allow وبعدها Install.

Image placeholder
Image placeholder
Image placeholder
Image placeholder

للتأكد من الخطوات السابقة و أن الشهادة تم تثبيتها بنجاح على هاتفك الجوال. اذهب إلى اعدادات الايفون وبعدها General > Profile & Device Management وتأكد أن الشهادة قد تم تثبيتها كما هو موضح بالصورة

Image placeholder

بعد ذلك، من اعدادات الايفون اذهب إلى General > About > Certificate Trust Settings وتأكد بأن الشهادة موثوقة من قبل هاتف الجوال، قم بالضغط بتفعيل Trust في حالك لم تكن مفعلة

Image placeholder

الان، من المفترض ان جميع الاعدادات مكتملة

ملاحظة مهمة: بعد انتهائك من تجاربك لا تنسى إلغاء اعدادت البروكسي من الايفون. اختر Off واضغط Save. لكن ليس الان!

Image placeholder

الان قم بتشغيل برنامج تشارلز على الماك بعد ذلك قم بإغلاق متابعة الـ HTTP Requests الصادرة من جهاز الماك، تجنبا لأي تداخل في الطلبات بين الماك وهاتف الايفون (سيكون من الصعب عليك معرفة الطلبات الصادرة من الايفون دون البحث والفلترة)، بالإضافة، حتى لا تتوقف بعض البرامج والخدمات لديك على جهاز الماك عن العمل.

للقيام بهذه الخطوة، تاكد من ازالة علامة الصح من Mac OS X Proxy

Image placeholder

الآن لنقم بتجربة اعتراض ومشاهدة الطلبات الصادرة من احد مواقع الانترنت، ساقوم هنا بالتجربة على موقع SoundCloud الشهير. قم بتفح متصفح سفاري على الايفون وتوجه إلى موقع http://SoundCloud.com وقم بتشغيل اي مقطع صوتي من اختيارك.

Image placeholder

لتسهيل مشاهدة طلبات الـ HTTP Requests، قم تغيير طريقة ترتيب البيانات في برنامج تشارلز الى Structure مثل الصورة. هذه الطريقة ستسهل عليك ترتيب الطلبات حسب النطاق. ما يهمنا الان هو النطاق http://api.soundcloud.com والذي قمت بتحديده بالصورة

Image placeholder

لاحظ أن هذا الطلب من نوع GET وبامكانك مشاهدة المتغير client_id خاص بموقع ساوندكلاود. اعتقد ان هذا المفتاح (Key) خاص بموقع https://soundcloud.com/ ولا توجد عليه اي قيود، بمعنى انه يملك صلاحيات اعلى من صلاحيات المطورين!

Image placeholder

الان قم بنسخ الرابط، وضعه في متصفح سفاري على الماك ولاحظ الرد الذي سيظهر لك (Response). هذا الرد من الـ API وهو عبارة عن ملف JSON (قد يظهر لديك بتنسيق مختلف لاني مستخدم اضافة تقوم بترتب الـJSON في متصفح السفاري).

ابحث لديك عن المفتاح (Key) المسمى بـ http_mp3_128_url. هذا المفتاح عبارة عن رابط مباشر لملف الصوت الذي قمت بتشغيله على هاتف الايفون!

Image placeholder

اذا قمت نسخ قيمة المفتاح السابق (الـ value لهذا الـkey) ووضعته في متصفح سفاري، سيعمل لديك ملف الصوت وتستطيع عن طريق السفاري تحميل الملف عن طريق الضغط عليه باليمين مثل الصورة.

معلومة: بامكانك استخدام نفس الطريقة وتطوير تطبيق خاص بك لتحميل ملفات الصوت من موقع SoundCloud ولكن هذه الطريقة مخالفة لسياسة الموقع 🙄️

Image placeholder

ماذا بعد ذلك؟

بإمكانك استخدام نفس الخطوات السابقة مع أي تطبيق على هاتفك لمعرفة الـ HTTP Requests التي يقوم باستدعائها هذا التطبيق. فبدلاً من تشغيل متصفح سفاري على الايفون، قم بتشغيل أي تطبيق لديك بداعي التعلم والفضول!

للمزيد على حسابي بتويتر 👇️