Destekle iletişim

E-postayla, genellikle iki gün içinde yanıt veririz.

Google reCAPTCHA, kötüye kullanıma karşı bu gönderimi denetler; bu sırada veriler Google'a aktarılır. Komut dosyası yalnızca bu form açıldığında yüklenir.

← Tüm yazılar

Test için curl kullanmak yanlış şeyi sınıyor

Tarayıcı kimliği olmadan gelen bir sayaç isteği, sayılan bir ziyaretin normalde dokunduğu on iki yerden ikisine yazar. 200 yanıtı verir. Geçerli bir sayaç görseli döndürür. On iki yerden onunun atlandığını hiçbir yerde hiçbir şey söylemez.

user agent yok — 12'de 2 curl varsayılanı — 12'de 2 tarayıcı kimliği — 12'de 10 üçü de çalışan bir sayaç görseliyle 200 yanıtı verdi

Filtre ne işe yarar ve bedeli nedir

Buradaki sayaçlar botları insanlardan ayırır ve bu ayrım, istemcinin kendisi için beyan ettiği kimliğe göre yapılır. İşaretler listesi kısa ve bilerek net tutulmuş; curl/ de bu listede. Hiç user agent içermeyen bir istek tarayıcı olamaz mantığıyla boş kimlik de listede.

İkisi de doğru. Hizmet, yalın bir curl isteğini bot sayarken haksız değil; zaten öyle. Sorun şu ki curl'ü çalıştıran kişi genellikle bot algılamanın çalışıp çalışmadığını test etmiyor. Saymanın çalışıp çalışmadığını test ediyor ve farkında olmadan bot yolunu istemiş oluyor.

Elde ettikleri şu: günün hit toplamı bir artıyor, bot sütunu bir artıyor ve hepsi bu. Tekil ziyaretçi satırı yok, dolayısıyla ziyaretçilere dair hiçbir şey yok. Çevrim içi listesinde kayıt yok. Sayfa yok, ülke yok, tarayıcı yok, işletim sistemi yok, cihaz yok, saat yok. Sistemin, herkesin gerçekten kontrol etmek isteyeceği kısımları tam da çalışmayan kısımlar.

Hatanın belirtisi yok

Üzerinde durmaya değer kısım bu. Hiçbir şey ölçmeyen bir test genellikle kendini belli eder: bir hata, boş bir sonuç, sayı olması gereken yerde bir sıfır. Burada yanıt 200. Gövde, 3.361 baytlık gerçek bir sayaç görseli. Resimdeki sayı bile arttı, çünkü hit toplamı gerçekten olan iki şeyden biri.

Yani deneme başarılı görünüyor. Buna dayanan her şey — “sayım yolu çalışıyor”, “yeni sütuna yazılıyor”, “değişiklik hiçbir şeyi bozmadı” — sınaması gereken kodun çoğunu atlamış bir çalıştırmadan çıkarılmış bir sonuç.

Bu yazı yazılırken de oldu

Bu yazının dayandığı ölçümün ilk sürümü şu adresi istedi: /c/<number>. Bu bir sayaç görselinin adresi değil; gerçek adres tasarımı ve bir uzantıyı da taşır: /c/<number>-<design>.png. İstek 404 döndürdü.

Betik üç kez şunu yazdı: 12 yerden 0'ına yazıyor. Bu doğruydu; üstelik ilk bakışta tam da çalışan bir bot filtresinin göstereceği sonuçtu. 404 çıktıdaydı, aynı tabloda, sıfırların bir satır üstünde. Bir dakika boyunca okunmadı, çünkü ilginç olan kısım sıfırlardı ve beklenenle örtüşüyorlardı.

Bu, bu yazının konusu olan hatanın bir üst düzeydeki aynısı: kimsenin kontrol etmediği bir nedenle akla yatkın bir yanıt üreten bir ölçüm. Yalnızca betik isteğe güvenmek yerine on iki tablodaki satırları saydığı için yakalandı — başarısız olan bir istekle filtrelenen bir istek dışarıdan aynı görünür.

Bunun yerine ne yapmalı

Bir tarayıcı kimliği gönderin. Tek bir seçenek yeter: -A ile gerçek bir user agent dizesi verildiğinde aynı istek on iki yerin ikisi yerine onuna yazar.

Ve öbür tarafta bir şey sayın. Yanıt kodu isteğin ulaştığını söyler; isteğin ne yaptığı hakkında hiçbir şey söylemez. Asıl amacın yan etki olduğu her şeyde — bir sayaç, bir kuyruk, bir log satırı, bir yerdeki bir satır — deneme yan etkiye bakmak zorundadır. İlgili her tabloda öncesi ve sonrası sayımlar burada yirmi satır tuttu ve belirsiz bir sonucu iki kez kesin bir sonuca çevirdi: bir kez filtre için, bir kez de 404 için.

Tarayıcı kimliğiyle bile on iki yerden ikisi boş kaldı: haklı olarak bot sütunu ve yönlendiren sayfalar listesi; ikincisi gönderilen yönlendiren sayfayı kaydetmedi. Bu ikincisi burada açıklanmıyor, çünkü henüz peşine düşülmedi. Raporlanıyor, çünkü alternatifi on bir satırlık bir tablo yayımlayıp ona on iki demek.

Reklam