Appium ile otomatik testlerde ağ trafiği nasıl yakalanır ?
Selenium testlerinde kullanılan ve oldukça popüler olan BrowserMob Proxy’i muhakkak duymuşuzdur. Bu kütüphane tarayıcıda ziyaret ettiğimiz sayfalardaki http/s isteklerini tutuyordu. Bizler de otomasyon projelerimizde bu kütüphaneyi kullanarak web/responsive testlerimizde Image Loading ve WebPage Loading gibi testleri yapabiliyorduk.
Bu yazımda da eklentinin mobil versiyonu olan Mitmproxy den bahsedeceğim. Mitmproxy hem Android hem de IOS de kullanabileceğiniz bir kütüphane. Kütüphaneyi android cihazlarda kullanabilmek için, cihazınızı root yapmak gerekiyor.
Mitmproxy ile aynı işi yapan diğer kütüphaneler Charles Proxy ve Burp Suite. Ama tabiki mitmproxy kurulumu kolay ve yetenekleri daha fazla olan bir kütüphane.
Kurulum
Mitmproxy için öncelikle aşağıdaki 2 python paketini kuralım.
- sudo pip3 install mitmproxy- sudo pip3 install websockets
Yukarıdaki iki paketi kurduktan sonra terminali açıp mitmweb yazıp enter a basalım.
http://127.0.0.1:8081 adresinde bir arayüz açılıyor ve 8080 (default) portundaki istekleri dinlemeye başlıyor.
Liste boş çünkü mobil cihazda şu an için herhangi bir konfigürasyon yapmadık.
Şimdi de bilgisayarımızdan Sistem Tercihi → Ağ seçeneği → Gelişmiş → TCP/IP sekmesini açın (MacOS). IPv4 Address adresi birazdan kullanacağız!
IOS Cihazı Ayarlama
Ayarlar → Wi-Fi’ye gidin ve iPhone’unuzun bağlı olduğu ağın adının yanındaki mavi ‘i’ ye tıklayın, ardından en alttaki Proxy’i Ayarla menüye tıklayın. Elle seçeneğine tıklayın. Yukarıdaki IPv4 Address IP’yi buraya girin ve port olarak da 8080 yazın.
Daha sonra mobil cihazınızdaki tarayıcıdan mitm.it adresine gidin. iOS sertifikasını indirin.
Ayarlar → Genel → Profil menüsünden indirdiğimiz profili doğrulayalım. Daha sonra Ayarlar → Hakkında → Sertifika Güven Ayarları menüden de mitmproxy sertifika için enable edelim.
Şimdi cihazdan herhangi bir uygulamayı açtığımızda veya tarayıcıda bir siteye gittiğimizde http://127.0.0.1:8081 adresindeki arayüzde HTTP/S isteklerimiz gözükmeye başlayacaktır.
Android Cihazı Ayarlama
Android cihazlarda mitmproxy’i tüm özellikleriyle kullanmak istiyorsak, sertifikayı güvenilir yapmak için cihazı root yapmak gerekiyor. Aksi takdirde HTTP isteklerini yakalayabiliyorken, HTTPS isteklerinin gelmediğini görürüz.
Ayarlar → Ağ ve İnternet → Kablosuz seçeneğine gidin. Ağ adına basılı tutun ve Ağı değiştir seçeneğine tıklayın. Bilgisayarınızın bağlı olduğu wifi IPv4 Address IP’yi buraya girin ve port olarak da 8080 yazın
Daha sonra mobil cihazınızdaki tarayıcıdan mitm.it adresine gidin. Android sertifikasını indirin.
Daha sonra Güvenlik ve Konum → Şifreleme ve kimlik bilgileri → Güvenilen kimlik bilgileri seçeneğinden sertifikanın Trust olduğunu doğrulayın.
Appium projesini ayarlama (iOS - Mitmproxy)
Şimdi de mitmproxy-java ile bu istekleri appium projemizde yakalayalım. Maven projemize aşağıdaki bağımlılığı kullanacağız.
<!-- https://mvnrepository.com/artifact/io.appium/mitmproxy-java -->
<dependency>
<groupId>io.appium</groupId>
<artifactId>mitmproxy-java</artifactId>
<version>2.0.1</version>
</dependency>
Before method da mitmproxy start ediliyor ve 8080 port daki istekleri dinlemeye başlıyor.
Appium projesini ayarlama (Android - Mitmproxy)
Before method da mitmproxy start ediliyor ve 8080 port daki istekleri dinlemeye başlıyor.
Test koşarken HTTP/S istekleri konsola basılıyor olacak ve messages listesinin de dolduğunu göreceksiniz.
Sahibinden.com aktif kullanıcı, ziyaretçi sayısı, performans analizi gibi istatistikleri GA (Google Analytics) üzerinden de alıyor. Mobil uygulamalarımızın GA testleri için de mitmproxy’i kullanıyoruz.
Bir sonraki makale için takipte kalın :)