CAPTCHA, “Completely Automated Public Turing test to tell Computers and Humans Apart” ifadesinin baş harflerinden oluşur. Bu insan davranışı ile botnet (robot yazılım) bazlı hareketleri ayırmaya yarayan bir testtir. Peki bir RPA projesi geliştirirken aşmamız gereken bir captcha varsa neler yapabiliriz. Bu yazıda biraz robot ile captcha çözümleme yöntemlerinden bahsetmek istedim.
Aslında basit diyebileceğimiz captchalar için Uipath Studio içerisinde yer alan OCR aktiviteleri yüksek bir başarı oranı ile çözümleme yapabiliyor. Tesseract ve Microsoft OCR motorları bu iş için en çok kullanılan aktiviteler arasında. Bunun dışında Google Cloud Vision OCR, Microsoft Azure OCR ve Abbyy Cloud OCR gibi daha gelişmiş bir yapıya sahip olan ama api key satın alarak kullanılabilecek aktiviteler de mevcut. Bu motorları kullanabilmek için de GetOCRText veya FindOCRTextPosition gibi Screen Scrapping özelliklerine sahip aktiviteleri kullanmak gerekiyor.
Yukarıdaki gibi basit olarak nitelendirebileceğimiz bir güvenlik kodunun örnek olarak aşağıdaki gibi bir yöntemle çözülebilir.
Örnek olarak burada önce Get OCR Text aktivitesi içerisinde Tesseract OCR aktivitesi kullanılmış. Get OCR Text aktivitesinin input kısmına güvenlik kodunun selektörü verilmesi yeterlidir. OCR motoru için ise ‘Properties’ penceresinde görüldüğü gibi bazı özellikler vermek gerekiyor. Burada izin verilen ve verilmeyen karakterleri dil ve boyut gibi tercihleri captcha nın durumuna göre değiştirme şansımız oluyor. Sonuçta aktivite bu captcha yı çözüp bize doğru bir şekilde metin olarak çıktıyı verebiliyor.
Peki daha zor captchalar için bu motorlar yeterli oluyor mu? Zor diye nitelendirdiğimiz captchalar için bu aktivteler ancak çok düşük ihtimallerle doğru sonucu veriyor. Yani aktiviteler bu noktada yetersiz kalabiliyor. Bu sorunu çözmek için yazılmış olan bazı servisler var. Bunlardan en popüler olanı Uipath Connect in sitesinde de referans edilen BestCaptchaSolver servisi. https://connect.uipath.com/marketplace/components/captcha-solver-for-bestcaptchasolver-com/ linkinden bu servisi kullanmak için yazılan akış direkt olarak indirilebiliyor. Sadece bu servisi kullanabilmek için bir api key satın almak gerekiyor. Yaklaşık 1 dolara 1000 adet captcha çözümü için hak veriliyor. https://bestcaptchasolver.com/ üzerinden bu api key e ulaşmak mümkün.
Örnek olarak yukarıdaki gibi bir captcha için bu servis kullanılabilir.
Peki bu akışın içinde nasıl bir yapı var? Akış, toplamda 4 ana alt akıştan oluşuyor. İlk olarak Get Capctha Balance akışının içerisinde iligili api key e sahip olan url e bir istek atılıyor ve sonucunda kaç adet çözümleme hakkı kaldığı cevap olarak dönüyor. Cevap döndükten sonra bir kontrol yapılıp diğer adıma geçiliyor. Burada input olarak gelen image in tam dosya yolu alınıp string türüne çevriliyor ve 3.adım olan SubmitImage akışına iletiliyor. Bu akış içerisinde bu sefer Post türünde bir istek atılarak ilgili imaj çözümlenmek üzere api ye gönderiliyor. Cevap olarak dönen id, son adım olan Get Capctha Text akışında ilgli url in sonuna eklenerek son bir istek daha yapılıyor ve burada iamjın çözümlenmiş hali metin olarak dönüyor.
Ana akışın çağrıldığı kısmdaki argümanları da yukarıda görebilirisiniz. BCSTokenCode argümanının değerine satın alınan api için verilen kodu yazmak gerekiyor. İmajın dosya yolu ve dönecek olan metin için de değerlerini verdikten sonra diğer değerler de sabit olduğundan projelere kolayca adapte edilebiliyor. Bir captcha için bu işlemleri yapması ortalama 15-20 saniye sürmekle birlikte zor captchalar için yüzde 75-80 gibi oranlarda başarı sağlanabiliyor.