Bloga dön

Selenium Otomasyon İzlerinin Üç Kaynağı ve Yapılandırma Sınırları

Selenium ile başlatılan tarayıcılar hata ayıklama portları, sayfanın okuyabildiği özellikler ve başlatma biçimi açısından farklılık gösterebilir. Bazı ayarlar makul biçimde yapılandırılabilir; otomasyonun kendisini gizlemeye çalışmak ise kırılgan, gereksiz ve çoğu zaman etkisizdir.

Selenium ile otomasyon çalıştırırken betik mantığı doğru olduğu hâlde beklenen sonucun alınamadığı durumlar olabilir. İlk tepki genellikle bir veya iki parametreyi değiştirmek olur; ancak ortamı gerçekten ayırt edilebilir hâle getiren şey çoğu zaman tek bir anahtar değildir. Birkaç farklı katmandaki farkların birleşimidir. Bu katmanları ayrı ayrı incelemek, nelerin yapılandırılmaya değer olduğunu ve nelerin pek sonuç vermeyeceğini daha net gösterir.

Hata ayıklama portları ve çalışma zamanı artefaktları

Selenium'un tarayıcıyı kontrol etme biçimi iki tür iz bırakır. Birincisi, tarayıcı başlatılırken açılabilen hata ayıklama portudur; dış yazılımlar bu port üzerinden sayfanın kontrolünü alabilir. İkincisi, çalışma zamanı ortamında görülen ek öğelerdir: sürücünün enjekte ettiği cdc_ önekli global değişkenler, window üzerindeki ek sürücü nesneleri ve bazı nesne prototiplerinin değiştirilmiş bölümleri gibi.

Bu öğeler web sayfasından değil, sürücünün kendisinden kaynaklanır. Tarayıcı standart biçimde başlatıldığında, betiğin ne kadar iyi yazıldığına bakılmaksızın bulunurlar.

Sayfanın okuyabildiği özellikler

Başka bir iz türü sürücünün içinde değil, sayfanın okuyabildiği JavaScript ortamındadır. En sık anılan örnek navigator.webdriver özelliğidir.

Bu özellik üç değer alabilir. true, tarayıcının bir otomasyon aracı tarafından kontrol edildiğini; false, kontrol edilmediğini; undefined ise ilgili bilginin alınamadığını gösterir. Bu son durum genellikle tarayıcının özelliği sunmaması veya üzerinde bir işlem yapılmış olmasıyla ilgilidir. Normal insan kullanımında değer false veya undefined olurken Selenium varsayılan olarak true ile başlar.

Bunun çevresinde daha geniş bir parametre kümesi vardır: User-Agent, işletim sistemi ve tarayıcı sürümü, ekran çözünürlüğü, saat dilimi, dil, Canvas, WebGL, AudioContext, yazı tipi listesi, GPU modeli ve CPU çekirdek sayısı. Birlikte bunlar genellikle tarayıcı parmak izi olarak adlandırılan yapıyı oluşturur. Gerçek kullanıcıların sistemleri, yazılımları ve alışkanlıkları farklı olduğundan parmak izleri doğal olarak çeşitlidir. Varsayılan otomasyon ayarlarıyla çalışan tarayıcılar ise çok benzer kombinasyonlar üretebilir ve bilinen kalıplara daha kolay dâhil edilebilir.

Başlatma biçimi ve render zamanlamasından doğan farklar

Üçüncü kategori tek bir özelliğe bağlı değildir; tarayıcının genel başlatma ve render biçiminden kaynaklanır.

Otomasyon bayraklarıyla başlatma, headless modda çalışma, pencere boyutu ile ekran parametrelerinin uyuşmaması, yazı tipi render'ı ile grafik sürücüsünün uyumsuz görünmesi veya sayfanın yüklenmesinden etkileşime hazır hâle gelmesine kadar geçen sürenin aşırı düzenli olması tek başına kanıt değildir. Fakat birlikte ele alındıklarında, gerçek bir kişi tarafından kullanılmış bir ortama pek benzemeyen bir yapı oluşturabilirler.

Headless bunun tipik bir örneğidir. Chrome'un yeni sürümlerindeki headless mod birkaç yıl öncesine göre normal tarayıcıya çok daha yakındır, ancak yine de normal moda kıyasla otomasyon özelliklerini daha kolay gösterebilir; özellikle sıkı risk kontrolleri uygulayan sitelerde bu fark daha belirgindir.

Makul biçimde yapılandırılabilecek alanlar

Saat dilimi, dil, ekran çözünürlüğü ve yazı tipi listesi otomasyona özgü değildir. Gerçek cihazlar da doğal olarak farklılık gösterir. Bu parametrelerde asıl önemli olan iç tutarlılıktır: saat dilimi ağ çıkışının bölgesiyle, dil yaygın kullanım bölgesiyle uyumlu olmalı; çözünürlük de donanım profiliyle çelişmemelidir.

Başka bir deyişle amaç ortamı özel göstermek değil, kendi içinde mantıklı hâle getirmektir. Bir cihaz Almanya'dan bağlanıyormuş gibi görünürken tarayıcı ABD batı kıyısı saat dilimini bildiriyor, sistem dili yalnızca İngilizce ve ekran çözünürlüğü tipik bir sanal ekranı andırıyorsa, bu kombinasyon zaten yeterince dikkat çekicidir.

Bu nedenle ortam ayarlarını kalıcı biçimde saklamak daha iyidir. Bugün saat dilimini değiştirip yarın dil ayarını unutmak, hiçbir şeyi değiştirmemekten daha kötü bir tutarsızlık oluşturabilir.

Otomasyonun kendisini gizlemeye çalışan yöntemler ve neden değmez

Başka bir yöntem grubu doğrudan izleri hedefler: navigator.webdriver özelliğini kaldırmak, sürücünün enjekte ettiği değişkenleri silmek, sürücü nesnelerini gizlemek veya algılama tarafının otomasyon durumunu okuyamamasını sağlamak.

Sorun, bu yöntemlerin temeli değil yalnızca yüzeyi değiştirmesidir. Algılama sistemleri uzun süredir tek bir özelliğe bakmıyor; özellik okumak yalnızca en yüzeysel katmandır. Bir sürücü güncellemesi, algılama betiğinin çalışma sırasındaki değişiklik veya JavaScript'i atlayıp düşük seviyeli render sonuçlarıyla cihaz özelliklerinin birleşimini doğrudan inceleyen bir kontrol, önceki düzenlemeleri etkisiz bırakabilir. Bakım maliyeti yüksek kalırken sağlanan fayda azalmaya devam eder.

Daha pratik bir nokta da bu tür işlemlerin çoğu zaman platform hizmet şartlarının teknik koruma önlemlerini aşma olarak tanımladığı alana girmesidir. Kodun temiz yazılmış olması, birkaç özelliğin değiştirilmiş olması nedeniyle işlemin niteliğini değiştirmez.

Ağ katmanı betikle çözülemez

Tarayıcı ortamı tutarlı görünse bile ağ katmanı oturumu yine de tanımlayabilir. IP'nin veri merkezine, bulut sunucusuna veya proxy ağına ait olup olmadığı; IP aralığının geçmiş itibarı ve ASN'i; coğrafi konum; aynı IP'den gelen istek yoğunluğu; ayrıca IP'nin kısa sürede birden çok hesaba veya sayfaya erişip erişmediği dikkate alınabilir. İsteklerde taşınan Cookies, Sessions ve oturum açma durumu da ilişkilendirilebilir.

Bunlar betik içinde çözülemez; ortam katmanında ele alınmalıdır: her görev için ayrı bir çıkış, çıkış bölgesi ile ortam bölgesinin uyumu ve kontrol edilebilir istek temposu. Çoklu görev izolasyonunda PurpleMark gibi yetenekler genellikle bu katmanda çalışır; her göreve bağımsız bir tarayıcı ortamı ve ağ çıkışı sağlarken coğrafi parametreleri tutarlı tutar.

Erişim engellendiğinde pratik inceleme sırası

Selenium 自动化痕迹来自运行时与调试、页面属性、启动方式与渲染时序三层,并应按网络、环境、行为、驱动的顺序排查

Makul bir sıra şöyledir: önce ağ katmanında IP türünü, kararlılığı ve coğrafi tutarlılığı kontrol edin; ardından ortamın saat dilimi, dil, çözünürlük ve yazı tipleri açısından kendi içinde uyumlu olup olmadığına bakın; sonra sabit bekleme süreleri veya anında tamamlanan girişler gibi davranış zamanlamasını inceleyin; en son sürücü düzeyindeki otomasyon özelliklerine geçin.

Nedeni basittir: sürücü düzeyindeki artefaktlar artık algılamanın ana odağı değildir. Bunları sorun gidermenin ilk adımı yapmak çoğu zaman yalnızca zaman kaybettirir.

Sınırlar

Teknik önlemler tanımlanma olasılığını azaltabilir, ancak aşılmaması gereken çizgiler vardır: hedef sitenin robots kurallarına ve hizmet şartlarına uyun, kişisel bilgi toplamayın, teknik koruma önlemlerini aşmayın, istek sıklığını kontrol edin ve karşı tarafın hizmetinin normal çalışmasını bozmayın.