Charles Proxy Nedir? Nasıl Konfigüre Edilir?

Ayşe Okutan
Delivery Hero Tech Hub
4 min readOct 21, 2021

Bu yazımda Charles Proxy kurulumu ve örnek olarak Chrome web tarayıcı ile mobil cihazlar üzerinde nasıl konfigürasyon yapılacağından bahsedeceğim.

Charles’ın kurulumuna geçmeden önce proxy sunucu kavramına ve bu tip araçlara neden ihtiyaç duyulduğuna kısaca değinmek iyi olacaktır.

Proxy sunucu; ağ ya da protokol arasındaki trafiği çeviren bir ara sunucudur. Web tarayıcıya ya da mobil uygulamalara internet üzerinden proxy kullanarak bağlandığımızda; isteği proxy sunucusuna göndermiş oluyoruz, proxy sunucu isteğin gönderildiği yerdeki bilgiyi bize ileterek köprü görevini sağlar.

Charles Proxy veya benzeri bir proxy aracını kullanarak internet ile tarayıcı/mobil uygulamalarımız arasına bir köprü kurmuş oluyoruz. Böylece proxy aracının breakpoint, throttling, cache blocklama gibi özellikleri sayesinde web tarayıcı/uygulama ve sunucu arasındaki istekleri/cevapları yönetebilme imkanı bulabiliyoruz.

Charles Proxy Nedir?

Charles Proxy, makineleriniz ile internet arasındaki HTTP ve SSL/HTTPS trafiğini izleyebileceğiniz bir web proxy uygulamasıdır. Bandwidth throttling özelliğiyle de düşük internet hızında HTTP istek ve yanıtlarının nasıl davranacağını da simüle etmeye olanak sağlamaktadır.

Charles Proxy’i bilgisayarınızda konfigüre edip web tarayıcınız veya mobil uygulamanızı Charles ile aynı internet ağına erişecek şekilde ayarladıktan sonra ağ trafiğini izleyebilir, çeşitli test senaryolarını Proxy menüsü altındaki özelliklerden faydalanarak gerçekleyebilirsiniz.

Charles Proxy’nin nasıl kurulup tarayıcı ve mobil cihaz için nasıl konfigüre edilebileceğine göz atalım.

Charles Proxy Sertifikası Kurulumu ve Ağ Trafiğinin Dinlenmesi

MacOS ya da Windows için aşağıdaki link üzerinden Charles Proxy indirip kurulabilir.

https://www.charlesproxy.com/download/latest-release/

Chrome

Ağ trafiğinin dinlenebilir olması için öncelikle Charles Proxy sertifikasının Chrome’un güvenilir sertifikalarına eklenmesi gerekir.

  • CP Help menüsünden sertifika kaydedilir.
  • Chrome → Settings → Privacy&Security → Security → Manage Certificates menüsünde + butonuna tıklanır ve kaydedilen sertifika yüklenir.
  • Yüklenen sertifikanın üzerine çift tıklanır, açılan pencerede Trust sekmesine tıklanır ve “Always Trust” seçilir.
  • Son adım olarak Charles Proxy başlatıldığında; Proxy menüsünden MacOS Proxy seçeneği seçilmelidir.
Mobil Cihazlarda Ağ Trafiğinin dinlenmesi

Mobil Cihazlarda Ağ Trafiğinin dinlenmesi

iOS

Ağ trafiği izlenecek uygulamanın kurulu olduğu cihaz ile Charles Proxy’nin kurulu olduğu bilgisayarın bağlı olduğu internet ağı aynı olmalıdır.

  • Charles Proxy — Help — Local IP menüsü üzerinden IP bilgisi elde edilir.
  • Ağ trafiği izlenecek uygulamanın kurulu olduğu mobil cihazın WIFI ayarları üzerinden HTTP Proxy menüsüne erişilir. Host; Charles’taki local IP ve port da 8888 olacak şekilde yeniden ayarlanır.
  • Charles Proxy uygulaması bu aşamada cihazın ağ trafiğini izlemek için izin pop-up’ı çıkaracaktır. İzni verdiğimizde cihaza erişebiliyor ve dinleyebiliyor olacaktır.
  • Gerekli izinleri verdikten sonra; cihazda arama motoru üzerinden chls.pro/ssl adresine gidip mobil cihazlar için Charles Proxy sertifika indirilir.
  • Cihaza indirilen sertifika profilini kurmak için cihaz ayarlarından profili yüklemek gerekiyor. Sertifika chls.pro/ssl adresinden indirildiğinde Apple kimliğinin altında profil indirildi bildirimi görünecektir. Bu bildirime tıklayıp sertifika yüklenebilir ya da iOS ayarları — General — Profiles ekranından yüklenebilir.
  • Charles Proxy sertifikası cihaza yüklendikten sonra cihazda kullanımı için izin vermek gerekmektedir. iOS ayarları — General — About — Trusted Certificates menüsü altından Charles Proxy’i trusted certificate listesine ekleyebilirsiniz. Böylelikle Charles Proxy üzerinden cihazınızdaki mobil uygulamaların ağ trafiğini izleyebilir ve testlerinizi gerçekleştirebilirsiniz.

Android

  • Cihazın WIFI ayarlarından Modify Network ile Advanced ayarlarına ulaşılır
  • Proxy seçeneğinin altında Manual seçilir.
  • Proxy adresi olarak Charles’tan edindiğiniz local IP adresi bilgisi girilir
  • Proxy Port olarak 8888 ayarlanır
  • Charles Proxy uygulaması bu aşamada cihazı dinlemek için izin pop-up’ı çıkaracaktır. Gerekli izinler verilir.
  • http://charlesproxy.com/getssl adresinden android cihaza Charles Proxy sertifikası indirilir
  • Android cihazın File Manager menüsü altında sertifika bulunur, sertifikaya isim verilir ve güvenilir sertifika olarak kaydedilir.

Gerekli kurulum ve konfigürasyonları tamamladık. Son olarak eğer projeniz CORS kullanıyorsa Charles Proxy’i nasıl konfigüre edebilirsiniz bu konuya bakalım.

Charles Proxy’i CORS kullanan uygulamalar ile uyumlu çalıştırma

Eğer uygulamanız CORS(Cross Origin Resource Sharing) kullanıyorsa; client ve ara katman farklı domainlerde ve farklı portları kullanıyorsa; servis isteklerinden önce OPTIONS metodu çağırılır.

Charles Proxy’i etkin hale getirdikten sonra api requestlerine breakpoint koyarak istekleri manipüle etmek istediğimizde; OPTIONS metodundan sonra diğer servis istekleri çağırılamadığı için sayfa “yükleniyor” statüsünde bekleyebilir bunu önlemek ve verimli bir biçimde uygulamada ağ trafiğini dinlemek için Chrome’un güvenlik özelliklerini devre dışı bırakmak gerekebilir.

Bu işlemi gerçekleştirmek için terminalde aşağıdaki komut çalıştırılır.

open -n -a /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome — args — user-data-dir=”/tmp/chrome_dev_test” — disable-web-security

Chrome yeniden başlatıldığında güvenlik özelliklerinin devre dışı bırakılmış olmasını bekleriz. Bu şekilde options metoduna takılmadan api istekleri manipüle edilebilecektir.

Bu yazıda kısaca Charles Proxy kurulumu ve cihazlardaki konfigürasyonlarından bahsettim. Bir sonraki yazımda Charles Proxy kullanarak test senaryoları geliştirmekten bahsedeceğim.

--

--

Ayşe Okutan
Delivery Hero Tech Hub

ISTQB™ CTAL-Test Analyst, Staff Quality Assurance Engineer at Yemeksepeti, MSc. Management Engineering and BSc. Computer Engineering, Izmir Yasar University