Bir mobil uygulama geliştiriyor veya test ediyorsunuz ve hangi istekleri sunucuya gönderdiğini, karşılığında ne aldığını tam olarak bilmek mi istiyorsunuz? Bu adım adım rehber sizi sıfırdan kendi uygulamanızın ağ trafiği üzerinde tam kontrole götürecek. 2026’nın en popüler araçlarını inceleyecek, telefona, emülatöre ve simülatöre güvenilen sertifikayı kurmayı öğrenecek, ayrıca hata ayıklama derlemelerinde SSL pinning’i standart yöntemlerle düzgün bir şekilde aşacağız.

En baştan önemli: Aşağıda anlatılan her şey yalnızca kendi uygulamanız veya sahibinden yazılı izin aldığınız bir uygulama için geçerlidir. Bu, kalite mühendisleri ve geliştiriciler için bir malzemedir, başkalarının programlarına müdahale etme kılavuzu değildir. Bununla ilgili detaylı bilgiyi kurallar ve etik bölümünde bulacaksınız.

Giriş: Geliştirici ve test uzmanı neden kendi uygulamasının trafiğini görmeli?

Mobil uygulama sürekli sunucuyla iletişim halindedir: giriş yapar, ürün kataloğunu çeker, analitik gönderir, verileri senkronize eder. Her şey çalışırken bu istekler görünmez kalır. Ama bir şey bozulduğunda soru aynıdır: Sunucuya tam olarak ne gitti ve ne döndü?

Kendi uygulamanızın trafiğini okuyabilmek birkaç sorunu aynı anda çözer:

  • Entegrasyonların kontrolü. API’nize yapılan isteklerin tam biçimini, başlıkları, gövdeyi, yanıt kodlarını görürsünüz. Bir hatada kimin suçlu olduğunu anlamak kolaylaşır: istemci mi yoksa arka uç mu?
  • Hataları yeniden oluşturma. Test uzmanı bir sorun bildirdiğinde gerçek istek sırasını görüp senaryoyu tekrarlayabilirsiniz.
  • Sızıntı denetimi. Dışarıya fazladan bir şeyin çıkıp çıkmadığını kontrol edersiniz: günlüklerde token’lar, analitikte kişisel veriler, gereksiz alanlar.
  • Hata senaryolarını test etme. Sunucu yanıtını değiştirebilir ve uygulamanın 500 hatası veya zaman aşımı durumunda nasıl davranacağını görebilirsiniz.

Sonunda ne elde edeceksiniz

Rehberi tamamladıktan sonra bilgisayarınızda yerel bir proxy kurabilecek, telefon trafiğini bu proxy üzerinden yönlendirebilecek, şifrelenmiş HTTPS isteklerini çözebilecek, bunları kullanışlı bir arayüzde okuyabilecek, tekrarlayabilecek ve yanıtları değiştirebileceksiniz. Tamamen kendi uygulamanız için.

Bu rehber kimler için?

İçerik, QA mühendisleri, mobil geliştiriciler ve uygulamasının ağ katmanını anlamak isteyen teknik uzmanlar için yazılmıştır. Seviye: başlangıç, ancak ileri düzey kullanıcılar için de öğeler içerir.

Önceden bilinmesi gerekenler

Temel düzeyde HTTP isteği, sunucu ve istemci kavramlarını anlamak yeterli. Komut satırı bilgisi avantajdır, ancak grafik araçları da ele alacağız. Derin kriptografi bilgisi gerekmez.

Ne kadar zaman gerekir?

İlk kurulum, araç ve sertifikaların yüklenmesi dahil 1-2 saat sürecektir. Sonraki çalıştırmalar birkaç dakikanızı alır.

Ön hazırlık: Araçlar, gereksinimler ve kurulum

Trafiğe dalmadan önce çalışma ortamınızı hazırlayalım. Dört popüler aracı inceleyip size en uygun olanı seçeceğiz.

Araç karşılaştırması: mitmproxy, Charles, Proxyman ve Burp

Bu araçların her biri MITM proxy olarak çalışır, yani uygulamanızla sunucu arasında bir aracı görevi görür. Farkları arayüz, fiyat ve kullanım kolaylığındadır.

  • mitmproxy. Ücretsiz ve açık kaynak. Terminalde çalışır ancak mitmweb adlı bir web arayüzü de vardır. Python betikleri ve otomasyon sevenler için idealdir. Platformlar arasıdır.
  • Charles. Ücretli, deneme süresi var. Java tabanlı klasik grafik arayüz, Windows, macOS ve Linux’ta çalışır. Basitliği sayesinde mobil QA’lar arasında çok popülerdir.
  • Proxyman. Şık arayüze sahip modern bir araç, aslen macOS için, Windows ve Linux sürümleri de var. Sertifika kurulumunda otomatik yardım sunar.
  • Burp Suite. Güvenlik dünyasından bir araç. Güçlüdür, ücretsiz Community sürümü vardır. Basit trafik izleme için biraz abartılı olabilir ancak ileri düzey analiz için kullanışlıdır.

Tavsiye: Yeni başlıyorsanız ve hızlı sonuç görmek istiyorsanız Charles veya Proxyman ile başlayın. Terminal ve otomasyon seviyorsanız mitmproxy kurun. Bu rehberde en evrensel seçenekler olarak mitmproxy ve Charles’ı temel alacağız.

Sistem gereksinimleri

  • Windows, macOS veya Linux bilgisayar, yönetici haklarıyla.
  • Android emülatörü veya iOS simülatörü ya da fiziksel bir mobil cihaz.
  • Telefon ve bilgisayar için aynı Wi-Fi ağı veya yapılandırılmış bir emülatör.
  • Hata ayıklama sürümünü derlemek için uygulamanızın kaynak kodlarına erişim.

İndirilecek ve kurulacaklar

  1. Seçtiğiniz proxy aracını resmi web sitesinden indirin. mitmproxy için işletim sisteminize uygun yükleyici veya paket yöneticisi.
  2. Aracı, sisteminiz için standart kurulum sihirbazını izleyerek kurun.
  3. Android emülatörü için Android Studio’yu, emülatörü ve sistem sertifika deposuyla kolay çalışmak için Google servisleri olmayan bir sistem imajını kurun.
  4. macOS’ta iOS simülatörü için App Store’dan Xcode kurun.

⚠️ Dikkat: Araçları yalnızca geliştiricilerin resmi sitelerinden indirin. Proxy programları trafiğe derinlemesine erişir, bu nedenle sahteleri tehlikeli olabilir. Mümkünse yükleyicilerin imzalarını kontrol edin.

Yedekleme ve cihaz hazırlığı

Sertifika ve ağ ayarlarıyla çalışmak genellikle güvenli ve geri döndürülebilirdir. Ancak yine de önlem almakta fayda var.

  1. Telefonunuzun mevcut Wi-Fi ayarlarını not edin, böylece sonra geri alabilirsiniz.
  2. Deneyler için ayrı bir test cihazı veya profili kullanın, ana iş telefonunuzu değil.
  3. İş cihazıyla çalışıyorsanız hangi sertifikaları yüklediğinizi hatırlayın, hata ayıklama sonrası kaldırmak için.

✅ Kontrol: Bu aşamada proxy aracınız kurulu, test cihazınız veya emülatörünüz hazır ve uygulamanızın derlemesine erişiminiz olmalı.

Temel kavramlar: MITM proxy nasıl çalışır ve neden kendi sertifikanız gerekir?

Emin adımlarla ilerlemek için anahtar terimleri basitçe açıklayalım. Bu temel olmadan adımlar sihir gibi görünebilir.

MITM proxy nedir?

MITM, man-in-the-middle yani ortadaki adam anlamına gelir. Proxy, uygulamanızla sunucu arasına girer. Uygulama sunucuyla konuştuğunu, sunucu da uygulamayla konuştuğunu sanır. Aslında her ikisi de proxy ile iletişim kurar ve proxy tüm trafiği görür.

Normal HTTP’de bu hemen çalışır: veriler açıkta iletilir. Ancak modern uygulamalar trafiği şifreleyen HTTPS kullanır. İşte burada iş ilginçleşir.

TLS el sıkışmasında neler olur?

HTTPS, TLS protokolü üzerine kuruludur. Uygulama sunucuya bağlandığında bir el sıkışma gerçekleştirir. Sunucu, kimliğini kanıtlayan sertifikasını gösterir. Uygulama bu sertifikayı güvenilen sertifika otoriteleri listesine göre doğrular.

Sertifika otoritesi (CA), cihazların güvendiği bir kuruluştur. CA’nın sunucu sertifikasındaki imzası, uygulamaya bağlantının güvenli olduğunu kanıtlar.

Neden kendi CA sertifikanıza ihtiyacınız var?

Proxy’nin şifrelenmiş trafiği gösterebilmesi için uygulamaya karşı sunucu gibi davranması gerekir. Bunun için proxy, istenen her alan adı için anında bir sertifika oluşturur ve bunu kendi kök CA sertifikasıyla imzalar.

Ama uygulama varsayılan olarak bu elle yapılmış CA’ya güvenmez. Bu nedenle proxy’nin kök sertifikasını cihazın güvenilen sertifika deposuna manuel olarak yükleriz. Bundan sonra uygulama proxy’nin imzasını güvenilir olarak görür ve bağlantıyı sorunsuzca kurar.

Tavsiye: Proxy’nin kök sertifikasını bir geçiş kartı gibi düşünün. Bu kartı cihaza vermezseniz, cihaz proxy’nin korumalı trafiği okumasına izin vermez.

Güven olmadan neden yalnızca SNI’deki ana bilgisayar adı görünür?

Proxy sertifikası yüklenmemişse uygulama proxy üzerinden güvenli bağlantı kurmayı reddeder. Ancak yine de bir şeyler görülebilir. TLS el sıkışmasının başında SNI alanı iletilir; bu, bağlantının hangi sunucuya yapıldığını belirtir.

Bu nedenle sertifikaya güven olmasa bile uygulamanın hangi alan adlarına bağlandığını görebilir, ancak istek ve yanıtların içeriğini okuyamazsınız. İçeriği okumak için yüklü ve güvenilen bir sertifika gerekir.

SSL pinning nedir?

SSL pinning (sertifika sabitleme) ek bir korumadır. Uygulama, beklenen sertifikanın veya sunucu anahtarının parmak izini içinde saklar ve sunucunun tam olarak bunu sunduğunu doğrular. Sistemde proxy’nin güvenilen sertifikası olsa bile pinning uygulayan uygulama bunu reddeder çünkü parmak izi eşleşmez. Kendi hata ayıklama derlemelerinizde pinning ile nasıl çalışılacağını ayrıca ele alacağız.

✅ Kontrol: Proxy’nin, aracı olarak trafiği gösterdiğini ve HTTPS’yi okumak için cihazda güvenilen bir kök sertifikası gerektiğini anladınız.

Adım 1: Android ve iOS’ta ağda proxy yapılandırması

Bu aşamanın amacı: Telefonun tüm web trafiğini, proxy aracınızın çalıştığı bilgisayarınıza yönlendirmek.

Bilgisayarı hazırlayın ve IP adresini öğrenin

  1. Bilgisayar ve telefonun aynı Wi-Fi ağına bağlı olduğundan emin olun.
  2. Proxy aracınızı başlatın. mitmweb için terminalde web arayüzünü başlatma komutunu girin, Charles için uygulamayı açmanız yeterli.
  3. Proxy’nin hangi portta dinlediğini kontrol edin. mitmproxy için varsayılan 8080, Charles için 8888 veya sürüme bağlı olarak 8080.
  4. Bilgisayarınızın ağdaki yerel IP adresini öğrenin. Windows’ta ağ ayarlarını görüntüleme komutu, macOS ve Linux’ta terminalde benzer bir komut. Adres genellikle 192.168.1.15 gibi görünür.

Tavsiye: Bilgisayarın IP adresini ve proxy portunu bir kağıda yazın. Bu iki değeri telefon ayarlarında gireceksiniz.

Android’de proxy ayarları

  1. Telefonunuzda Ayarlar uygulamasını açın.
  2. Ağ ve İnternet, ardından Wi-Fi bölümüne gidin.
  3. Mevcut ağınızın adına dokunarak ayarlarını açın.
  4. Gelişmiş veya ağı düzenleme simgesini (kalem) bulun.
  5. Proxy alanında Manuel seçeneğini işaretleyin.
  6. Proxy ana bilgisayar adı alanına bilgisayarın IP adresini girin, örn. 192.168.1.15.
  7. Port alanına proxy portunu girin, örn. 8080.
  8. Kaydet’e dokunarak ayarları kaydedin.

iOS’ta proxy ayarları

  1. Ayarlar uygulamasını açın.
  2. Wi-Fi bölümüne gidin.
  3. Ağınızın adının yanındaki mavi bilgi simgesine dokunun.
  4. HTTP Proxy bölümüne gidin.
  5. Manuel modu seçin.
  6. Sunucu alanına bilgisayarın IP adresini girin.
  7. Port alanına proxy portunu girin.
  8. Geri dönün, ayarlar otomatik kaydedilir.

⚠️ Dikkat: Proxy ayarlandıktan sonra telefonun tüm web trafiği bilgisayar üzerinden gidecektir. Proxy aracı kapalıysa telefonda internet çalışmaz. Bu normaldir; proxy’yi açın veya ayarları kaldırın.

Beklenen sonuç

Telefonda herhangi bir tarayıcı açın ve HTTP üzerinden basit bir siteye gidin. Proxy arayüzünde istek kayıtları görünmelidir. HTTPS ise yalnızca ana bilgisayar adı olarak görünecektir, çünkü sertifika henüz yüklenmemiştir.

Olası sorunlar. Hiçbir şey görünmüyorsa, telefon ve bilgisayarın aynı ağda olduğunu, doğru IP ve portu girdiğinizi ve bilgisayardaki güvenlik duvarının bağlantıları engellemediğini kontrol edin.

✅ Kontrol: Proxy penceresinde telefondan gelen gelen istekler en azından alan adı listesi olarak görünüyor.

Adım 2: Kök sertifikayı yükleyin ve güvenin

Bu aşamanın amacı: Cihazın proxy’nin kök sertifikasına güvenmesini sağlamak ve HTTPS isteklerinin içeriğini okumak.

Proxy sertifikasını indirin

Proxy yapılandırıldığında ve telefon üzerinden geçtiğinde, sertifikayı doğrudan cihaza almanın kolay bir yolu vardır.

  1. Telefonda tarayıcıyı açın.
  2. mitmproxy için özel servis adresi olan mitm.it adresine gidin. Bu sayfa yalnızca trafik mitmproxy üzerinden geçerken görünür.
  3. Farklı platformlar için butonlar göreceksiniz. Android veya Apple için uygun olanı seçin.
  4. Sertifika dosyası indirilecektir.
  5. Charles için sertifika, programın yardım menüsünde gösterilen özel bir adresten de erişilebilir.

Android 7 ve sonrasına yükleme

Android 7’den itibaren sistem iki ayrı sertifika deposu kullanır: kullanıcı deposu ve sistem deposu. Bu çok önemli bir noktadır.

  • Kullanıcı deposu: Sertifikayı root hakkı olmadan buraya yükleyebilirsiniz. Ancak uygulamalar varsayılan olarak kullanıcı sertifikalarına güvenmez, yalnızca geliştirici açıkça izin vermişse güvenir.
  • Sistem deposu: Tüm uygulamalar buna güvenir, ancak buraya sertifika eklemek için root erişimi olan bir cihaz veya Google hizmetleri olmayan bir emülatör imajı gerekir.

Kullanıcı deposuna yüklemek için şu adımları izleyin:

  1. Ayarlar > Güvenlik yolunu izleyin.
  2. Şifreleme ve kimlik bilgileri veya Gelişmiş güvenlik ayarları’nı bulun.
  3. Sertifika yükle > CA sertifikası seçeneklerini seçin.
  4. Sistem riskler konusunda uyaracaktır, yüklemeyi onaylayın.
  5. İndirdiğiniz sertifika dosyasını belirtin.
  6. Sertifikaya anlamlı bir ad verin, örn. DebugProxy.

Önemli: Android 7 ve sonrasında depo ayrımı nedeniyle, sertifika kullanıcı deposuna yüklenmiş olsa bile uygulamanız trafiği göremeyebilir. Bunun çözümü pinning bölümünde uygulama yapılandırmasıyla ele alınacak.

iOS’ta yükleme ve güven

iOS’ta süreç iki aşamalıdır: profili yüklemek ve güveni etkinleştirmek.

  1. Sertifika indirildikten sonra iOS, profil indirildi bildirimi gösterir.
  2. Ayarlar’ı açın, üstte Profil İndirildi seçeneği görünecektir.
  3. Buna dokunun ve sağ üstteki Yükle’yi seçin.
  4. Cihaz şifrenizi girin (varsa).
  5. Profili yüklemeyi onaylayın.

Şimdi sıkça unutulan kilit adım: tam güveni etkinleştirmek.

  1. Ayarlar > Genel yolunu izleyin.
  2. Hakkında bölümüne girin.
  3. Sertifika Güveni bölümüne gelin.
  4. Proxy sertifikanızı listede bulun.
  5. Karşısındaki anahtarı açarak kök sertifikaya tam güveni etkinleştirin.

⚠️ Dikkat: Sertifika Güveni bölümündeki anahtarı açmazsanız iOS sertifikayı yüklü sayar ancak güvenmez. HTTPS trafiği okunmaz. Bu, iOS’ta yeni başlayanların en sık yaptığı hatadır.

Beklenen sonuç

Tarayıcıyı açın ve HTTPS üzerinden herhangi bir siteye gidin. Artık proxy arayüzünde istek ve yanıtların tam içeriğini görmelisiniz, yalnızca alan adı değil.

✅ Kontrol: Proxy aracında telefondaki tarayıcıdan gelen HTTPS isteklerinin şifresi çözülmüş içeriği görüntüleniyor.

Adım 3: Android Emülatörü ve iOS Simülatöründe aynı işlem

Bu aşamanın amacı: Fiziksel cihaz olmadan, doğrudan geliştirici bilgisayarında trafik yakalamayı yapılandırmak.

Android Emülatörü

Emülatör, Google hizmetleri olmayan bir imaj kullanarak sistem sertifika deposuna erişim sağlama avantajı sunar.

  1. Android Studio’da Device Manager’ı açın ve sanal bir cihaz oluşturun.
  2. Sistem imajı seçerken Google Play ibaresi olmayan bir sürümü tercih edin, böylece sistem bölümüne yazma hakkınız olur.
  3. Emülatörü başlatın.
  4. Emülatörün gelişmiş ayarlarından proxy’yi doğrudan belirtebilir veya emülatör içindeki Wi-Fi ayarlarından gerçek telefonda olduğu gibi yapılandırabilirsiniz.
  5. Sistem deposu için, emülatörü sistem bölümüne yazma izniyle yeniden başlatmanıza ve sertifikayı eklemenize olanak tanıyan komut satırı araçlarını kullanın.

Tavsiye: Google hizmetleri olmayan ve sistem deposuna erişim sağlayan emülatör, sertifika güveniyle ilgili birçok sorunu ortadan kaldırır. Düzenli hata ayıklama için en iyi seçimdir.

iOS Simülatörü

macOS’taki iOS simülatörü, macOS’un güvenilen sertifikalarını kullanır, bu da yapılandırmayı kolaylaştırır.

  1. Proxy’nin kök sertifikasını Mac’inizin sistem anahtarlığına yükleyin.
  2. Anahtar Zinciri (Keychain) uygulamasını açın, proxy sertifikasını bulun.
  3. Sertifikaya çift tıklayın ve Güven bölümünde Her Zaman Güven olarak ayarlayın.
  4. Xcode üzerinden simülatörü başlatın. Simülatör, macOS’tan gelen sertifika güvenini devralır.
  5. Simülatör trafiği, Mac’in sistem proxy’si yapılandırılmışsa veya ağ ayarlarında belirtilen proxy üzerinden gider.

Beklenen sonuç. Her iki durumda da emülatör veya simülatörde çalışan test uygulamasının veya tarayıcının şifresi çözülmüş trafiğini görürsünüz.

Olası sorunlar. Android emülatörü proxy’yi almıyorsa, içindeki Wi-Fi ayarlarını ve başlatma parametrelerini kontrol edin. iOS simülatörü için sertifikanın anahtarlıkta güvenilir olarak işaretlendiğinden emin olun.

✅ Kontrol: Emülatör veya simülatörden gelen trafik proxy aracında şifresi çözülmüş olarak okunabiliyor.

Adım 4: Kendi hata ayıklama derlemenizde SSL pinning ile çalışma

Bu aşamanın amacı: Uygulamada sertifika sabitleme (pinning) olup olmadığını anlamak ve bunu yalnızca hata ayıklama derlemesinde platformun standart yöntemleriyle düzgün şekilde gevşetmek.

Bu en sorumluluk gerektiren bölümdür, bu yüzden dikkatlice ele alalım.

Pinning’in etkin olduğunu nasıl anlarsınız?

Proxy sertifikası yüklü ve güvenilir durumdaysa, tarayıcı trafiği gösteriyor ancak uygulamanız çalışmıyor veya ağ hatası veriyorsa, büyük olasılıkla pinning vardır.

  • Proxy arayüzünde uygulamanızın alan adları için TLS el sıkışması aşamasında bağlantı kesintisi görürsünüz.
  • Uygulama günlüklerinde sertifika doğrulama hatası veya güvenilmeyen zincir mesajları görünebilir.
  • Çoğu zaman geliştirici, pinning’in sürümü korumak için bilinçli olarak eklendiğini bilir.

Android’de network_security_config ile pinning’i gevşetme

Android, ağ güvenliği yapılandırması için standart bir mekanizma sunar. Bununla, yalnızca hata ayıklama derlemesi için kullanıcı sertifikalarına güvenmeyi etkinleştirebilirsiniz.

  1. Projenizde kaynaklara bir ağ güvenliği yapılandırma dosyası oluşturun.
  2. Bu dosyada, hata ayıklama yapılandırması için özel bir blok kullanarak sertifika güven kurallarını tanımlayın.
  3. Hata ayıklamada uygulamanın kullanıcı sertifika deposuna güvendiğini belirtin.
  4. Bu dosyayı manifest dosyasında ilgili nitelikle bağlayın.
  5. Hata ayıklama geçersiz kılmalarının yalnızca uygulama hata ayıklama modunda derlendiğinde uygulandığından ve asla sürümde olmadığından emin olun.

Önemli: Özel hata ayıklama geçersiz kılma bloğu yalnızca uygulama hata ayıklanabilir olarak işaretlendiğinde çalışır. Sürüm derlemesinde bu kurallar sistem tarafından tamamen yok sayılır, bu da güvenliği sağlar.

iOS’ta Info.plist ayarlarıyla doğrulamaları gevşetme

iOS’ta taşıma güvenliği ATS mekanizması tarafından kontrol edilir. Hata ayıklama derlemesinde, test ortamınızın belirli alan adları için katı kontrolleri gevşetebilirsiniz.

  1. Hata ayıklama yapılandırmanızın Info.plist dosyasını açın.
  2. Test sunucunuzun gerekli alan adları için taşıma güvenliği ayarlarını ekleyin.
  3. ATS bağlantı politikasını düzenler, kod içindeki özel pinning’in ayrıca devre dışı bırakılması gerektiğini unutmayın.
  4. Pinning kodda uygulanmışsa, yalnızca sürüm yapılandırmasında parmak izi doğrulaması yapılacak şekilde bir koşul ekleyin.

⚠️ Dikkat: Gevşetilmiş kontrolleri asla sürüm derlemesinde bırakmayın. Bu, uygulamanızın kullanıcıları için gerçek bir güvenlik açığı oluşturur. Tüm değişiklikler yalnızca hata ayıklama yapılandırmasında geçerli olmalı ve sürümde otomatik olarak kaybolmalıdır.

Neden yalnızca hata ayıklamada ve asla sürümde?

SSL pinning, kullanıcılarınızın trafiğinin ele geçirilmesine karşı korur. Hata ayıklamada bunu devre dışı bırakarak, kendi kontrolünüzdeki bir cihazda, teşhis amacıyla, bilinçli ve geçici olarak yaparsınız. Sürümde bu koruma kritiktir ve mümkün olduğunca sıkı kalmalıdır.

Tavsiye: Sertifika doğrulama mantığını derleme bayrağına göre ayırın. Gevşetilmiş kontrollerle yanlışlıkla sürüm derlenemeyecek şekilde yapılandırın. Bu sizi insan hatasından korur.

Beklenen sonuç

Hata ayıklama derlemesi doğru yapılandırıldıktan sonra uygulamanız proxy üzerinden bağlantı kurar ve şifresi çözülmüş istek ve yanıtlarını görürsünüz.

✅ Kontrol: Uygulamanızın API’sine yaptığı istekler proxy’de okunabilir biçimde görünüyor ve değişiklikler yalnızca debug derlemesini etkiliyor.

Adım 5: Trafiği okuyun ve analiz edin

Bu aşamanın amacı: İhtiyacınız olan istekleri bulmak, gürültüyü filtrelemek, verileri dışa aktarmak, istekleri tekrarlamak ve yanıtları değiştirmek.

Filtreler ve arama

Küçük bir uygulama bile onlarca istek üretir. Filtreler ihtiyacınız olanı bulmanıza yardımcı olur.

  1. Yalnızca API’nize yapılan istekleri göstermek için alan adına göre filtreleyin.
  2. İçerik türüne göre filtreleyin, örneğin yalnızca JSON yanıtları.
  3. İstek veya yanıt gövdesinde bir dize arayarak ihtiyacınız olan çağrıyı hızlıca bulun.
  4. Charles’ta ana bilgisayarlara göre kullanışlı bir ağaç yapısı vardır, mitmweb’de esnek bir filtre çubuğu bulunur.

Tavsiye: Filtreyi yalnızca uygulamanızın alan adlarını gösterecek şekilde ayarlayın. Bu, sistemin ve üçüncü taraf hizmetlerin arka plan trafiğini hemen ortadan kaldırır.

HAR olarak dışa aktarma

HAR formatı, bir trafik oturumunu tek bir dosyaya kaydetmenin standart yoludur. Arka uç ekibine iletmek veya hata raporuna eklemek için kullanışlıdır.

  1. İhtiyacınız olan istekleri veya tüm oturumu seçin.
  2. Araç menüsünde HAR formatında dışa aktarma seçeneğini belirleyin.
  3. Dosyayı kaydedin ve görev takip sistemindeki bir göreve ekleyin.

İsteği tekrarlama

Bazen aynı isteği birkaç kez tekrarlamak gerekir, örneğin idempotentliği kontrol etmek veya bir hatayı yeniden oluşturmak için.

  1. Listede istediğiniz isteği seçin.
  2. Tekrarla işlevini kullanın, Charles’ta Repeat, mitmproxy’de akış tekrarlama komutu.
  3. Gerekirse başlıkları veya gövdeyi değiştirerek isteği tekrarlamadan önce düzenleyin.

Hata senaryolarını test etmek için yanıt değiştirme

Bu güçlü bir özelliktir. Uygulamanın gerçek yanıt yerine istediğiniz yanıtı almasını sağlayabilirsiniz.

  1. Bir değiştirme kuralı yapılandırın, Charles’ta Map Local veya Breakpoints, mitmproxy’de Python betikleri.
  2. Belirli bir adrese yapılan istekte, önceden hazırlanmış bir yanıtın (örneğin 500 hatası veya boş liste) döndürülmesini ayarlayın.
  3. Uygulamada senaryoyu çalıştırın ve uygulamanın hatayı nasıl işlediğini görün.

Tavsiye: Yanıt değiştirme ile uygulamanın kötü internet, sunucu hataları ve beklenmedik veriler karşısındaki davranışını gerçek arka uca dokunmadan test etmek kolaydır.

✅ Kontrol: Trafiği filtrelemeyi, HAR dışa aktarmayı, istek tekrarlamayı ve kendi uygulamanızda yanıt değiştirmeyi biliyorsunuz.

Mobil proxy’ler uygulamanızı farklı bir ağ ve bölgeden test etmenize nasıl yardımcı olur?

Ayrıca mobil proxy’lerden bahsedelim. Bunlar, gerçek mobil operatör ağları üzerinden çalışan proxy sunuculardır. Uygulamanızın, kullanıcı farklı bir bölgede mobil internetle bağlandığında nasıl davrandığını test etmek için faydalıdır.

QA için neden gerekli?

  • Bölgesel içerik kontrolü. Birçok uygulama kullanıcının bölgesine göre farklı veriler gösterir. Mobil proxy, uygulamayı istenen bölgedeki bir kullanıcının gözüyle görmenizi sağlar.
  • Mobil ağda test. Uygulamanın mobil internetteki davranışı Wi-Fi’den farklıdır: farklı gecikmeler, IP değişimi, operatör ağlarının özellikleri. Mobil proxy bu koşulları yeniden oluşturmanıza yardımcı olur.
  • Konuma bağlı mantığın kontrolü. Arka uç bölgeyi IP’ye göre belirliyorsa, mantığın farklı yerler için doğru çalıştığından emin olabilirsiniz.

Önemli: Mobil proxy’leri yalnızca kendi uygulamanızı test etmek ve yasal çerçevede kullanın. Bu, bölgesel mantığın doğruluğunu kontrol etmek için bir QA aracıdır, bir şeyi atlamak için değil. MobileProxy.space gibi mobil proxy hizmetleri, bu tür görevler için yasal mobil IP erişimi sağlar.

Tavsiye: Çıkış noktasını değiştirmek için mobil proxy ile trafiği okumak için yerel MITM proxy’sini birleştirin. Böylece hem isteklerin içeriğini görür hem de bölgesel davranışı test edersiniz.

Sonuç kontrolü: Başarılı yapılandırma kontrol listesi

Her şeyin olması gerektiği gibi çalıştığından emin olmak için bu listeyi gözden geçirin.

  • Proxy aracı çalışıyor ve doğru portta dinliyor.
  • Telefon, emülatör veya simülatör trafiği proxy üzerinden yönlendiriyor.
  • Proxy’nin kök sertifikası cihaza yüklendi ve güvenildi.
  • Tarayıcı HTTPS trafiği şifresi çözülmüş olarak okunuyor.
  • Uygulamanın hata ayıklama derlemesinde pinning standart yöntemlerle gevşetildi.
  • Uygulamanızın API’sine yaptığı istekler proxy’de tam olarak görünüyor.
  • İstekleri filtreleyebiliyor, dışa aktarabiliyor, tekrarlayabiliyor ve değiştirebiliyorsunuz.

Nasıl test edilir?

  1. Hata ayıklama derlemesini çalıştırın.
  2. Giriş yapma ve ana ekranı yükleme gibi tipik bir senaryo gerçekleştirin.
  3. Proxy’de API’nize yapılan ve gövdesi okunabilen isteklerin göründüğünden emin olun.
  4. Bir isteği tekrarlayın ve bir yanıtı değiştirerek uygulamanın tepkisini kontrol edin.

Başarı göstergeleri. Uygulamanızın ağ etkileşiminin tüm yaşam döngüsünü görüyor ve test etmek için etkileyebiliyorsunuz.

Sık yapılan hatalar ve çözümleri

Sık karşılaşılan sorunları sorun, neden, çözüm şeklinde inceleyelim.

Uygulama sistem proxy’sini yok sayıyor

Sorun: Trafik proxy’de görünmüyor, ancak tarayıcı çalışıyor. Nedeni: Uygulama, sistem proxy ayarlarını okumayan kendi ağ yığınını kullanıyor. Çözüm: Hata ayıklama derlemesinde ağ istemcisini sistem proxy’sini dikkate alacak şekilde yapılandırın veya ağ düzeyinde şeffaf proxy modu kullanın.

QUIC trafiği görünmüyor

Sorun: Bazı istekler eksik. Nedeni: Uygulama UDP üzerinden QUIC protokolünü kullanıyor, normal HTTP proxy’ler bunu yakalamaz. Çözüm: Hata ayıklama derlemesinde ağ istemcisinde QUIC desteğini geçici olarak devre dışı bırakın, böylece trafik normal HTTPS üzerinden gider ve proxy’de görünür.

Android 14 nüansları

Sorun: Sertifika yüklü ancak uygulama görmüyor. Nedeni: Yeni Android sürümlerinde kullanıcı sertifikalarını yönetme kuralları katılaştı ve uygulamalar varsayılan olarak bunlara güvenmiyor. Çözüm: Hata ayıklama geçersiz kılmaları içeren ağ güvenliği yapılandırması kullanın veya emülatörde sistem deposunu kullanın.

iOS trafiği şifre çözmüyor

Sorun: iOS’ta uygulama istekleri okunmuyor. Nedeni: Sertifika yüklü ancak Sertifika Güveni bölümünde tam güven etkinleştirilmemiş. Çözüm: Ayarlar > Genel > Hakkında > Sertifika Güveni yolunu izleyip anahtarı açın.

gRPC ve HTTP/2

Sorun: Veriler görünüyor ancak ikili, anlaşılmaz formatta. Nedeni: Uygulama HTTP/2 üzerinde ikili serileştirme ile gRPC kullanıyor. Çözüm: HTTP/2’yi anlayan araçlar kullanın ve gerekirse mesaj biçimini çözmek için eklentiler ekleyin.

Proxy ayarlarından sonra internet yok

Sorun: Telefon internete çıkamıyor. Nedeni: Proxy aracı kapalıyken proxy ayarları kalmış. Çözüm: Bilgisayarda proxy’yi açın veya telefonun Wi-Fi ayarlarından proxy ayarlarını kaldırın.

Güvenlik duvarı bağlantıları engelliyor

Sorun: Telefon proxy’ye bağlanamıyor. Nedeni: Bilgisayarın güvenlik duvarı proxy portuna gelen bağlantıları engelliyor. Çözüm: Sistem güvenlik duvarına proxy portu için izin veren bir kural ekleyin.

Ek özellikler ve ileri düzey ayarlar

Temel yapılandırmayı öğrendikten sonra araç setinizi genişletmeye değer.

Betikler ve otomasyon

mitmproxy, istekleri ve yanıtları otomatik olarak değiştiren Python betikleri yazmanıza olanak tanır. Bu, regresyon testi ve karmaşık değiştirme senaryoları için kullanışlıdır.

Oturumları kaydetme

Yakalanan trafik oturumlarını dosyalara kaydedin, böylece daha sonra geri dönebilir veya ekibinizle paylaşabilirsiniz. Hata analizini hızlandırır.

Yerel dosyalara eşleme

Yanıtı yerel bir dosyayla değiştirme özelliği, arka uç hazır olmadan uygulama arayüzünü geliştirmenize olanak tanır. Uygulamaya önceden hazırlanmış JSON yanıtları verirsiniz.

Hız sınırlama

Birçok proxy bağlantıyı yapay olarak yavaşlatabilir. Bu, uygulamanın yavaş ağdaki davranışını kontrol etmeye ve zaman aşımı sorunlarını bulmaya yardımcı olur.

Tavsiye: Tipik değiştirme ve yavaşlatma senaryolarından oluşan bir set oluşturun ve bunları her sürümde yeniden kullanın. Bu, manuel hata ayıklamayı tekrarlanabilir bir test sürecine dönüştürür.

SSS: Sıkça sorulan sorular

Android’de trafiği okumak için root gerekli mi?

Kullanıcı deposu ve debug konfigürasyonuyla kendi uygulamanız için root gerekmez. Gerçek bir cihazda sistem deposu için root gerekir, ancak Google hizmetleri olmayan emülatör kullanmak daha kolaydır.

Sertifika yüklemeden işi halledebilir miyim?

Güvenilen bir sertifika olmadan yalnızca SNI’deki alan adlarını görürsünüz, HTTPS içeriğini göremezsiniz. İstekleri okumak için sertifika zorunludur.

Tarayıcı trafiği görüyor ama uygulama neden görmüyor?

Büyük olasılıkla uygulamada SSL pinning veya kendi ağ yığını vardır. Pinning bölümünde anlatıldığı gibi hata ayıklama derlemesini yapılandırın.

Proxy’nin kök sertifikasını yüklemek güvenli mi?

Test cihazında ve hata ayıklama süresince kabul edilebilir. İşiniz bittikten sonra sertifikayı kaldırın, cihazda genişletilmiş güven bırakmamak için.

Trafik QUIC üzerinden gidiyorsa ne yapmalıyım?

Hata ayıklama derlemesinde ağ istemcisinde QUIC’i devre dışı bırakın, böylece bağlantılar normal HTTPS üzerinden gider ve proxy tarafından görülür.

Başka bir uygulamanın trafiğini analiz edebilir miyim?

Hayır. Yalnızca kendi uygulamanız veya sahibinden açık izin aldığınız bir uygulama. Bu temel bir kuraldır.

Charles mı mitmproxy mi: yeni başlayan ne seçmeli?

Charles grafik arayüzü sayesinde başlaması daha kolaydır. mitmproxy otomasyon için daha güçlüdür. Size en uygun olanla başlayın.

Hata ayıklama sonrası tüm değişiklikler nasıl kaldırılır?

Wi-Fi’daki proxy ayarlarını silin, güvenlik ayarlarından yüklenen sertifikayı kaldırın ve uygulamayı tam kontrollerle sürüm konfigürasyonunda derleyin.

iOS’ta sertifika güveni neden çalışmıyor?

Profili yüklediniz ancak Sertifika Güveni bölümünde tam güveni etkinleştirmediniz. Bu ayrı ve zorunlu bir adımdır.

Yavaş ağda trafiği izleyebilir miyim?

Evet, birçok proxy bağlantıyı yapay olarak yavaşlatarak uygulamanın kötü internet durumundaki davranışını test etmenizi sağlar.

Sonuç

Tebrikler, artık kendi mobil uygulamanızın ağ trafiğini analiz etmek için eksiksiz bir beceri setine sahipsiniz. mitmproxy, Charles, Proxyman ve Burp arasında seçim yapmayı, yerel proxy kurmayı, telefon, emülatör ve simülatör trafiğini bu proxy üzerinden yönlendirmeyi öğrendiniz.

MITM proxy’nin nasıl çalıştığını ve neden güvenilen bir kök sertifikaya ihtiyaç duyulduğunu, Android 7 ve sonrasında sertifika depolarının inceliklerini ve iOS’ta zorunlu güven adımını kavradınız. SSL pinning’i yalnızca hata ayıklama derlemesinde, platformun standart yöntemleriyle, sürüme asla dokunmadan nasıl gevşeteceğinizi anladınız.

Son olarak, istekleri okumayı, filtrelemeyi, dışa aktarmayı, tekrarlamayı ve değiştirmeyi, ayrıca yasal çerçevede uygulamanın bölgesel davranışını test etmek için mobil proxy’leri kullanmayı öğrendiniz.

Sırada ne var?

Beceriyi gerçek bir projede pekiştirin: kendi uygulamanızın trafiğini yakalamayı kurun ve tipik yanıt değiştirme senaryolarını test sürecine ekleyin. Zamanla otomasyon betiklerini keşfedin ve trafik oturumlarını ekibinizle paylaşın.

Daha da ilerlemek için: HTTP/2 ve gRPC analizine derinlemesine dalın, mitmproxy için betik yazmayı öğrenin, trafik yakalamayı otomatik testlere entegre edin. Ve her zaman ana kuralı unutmayın: yalnızca kendi uygulamanızla veya sahibinin açık izniyle çalışın, yasalara uyun ve kullanıcıların gizliliğine saygı gösterin.