Appium ile otomatik testlerde ağ trafiği nasıl yakalanır ?

Enes Aydın
Sahibinden Technology
4 min readDec 29, 2021

Selenium testlerinde kullanılan ve oldukça popüler olan BrowserMob Proxyi 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 TercihiAğ 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.

mitmproxy request logs

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 :)

--

--

Enes Aydın
Sahibinden Technology

Senior Software Test Automation Specialist @sahibindencom