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

Çerez olmadan sayım

Bir ziyaretçi sayacının çetrefilli bir görevi vardır: iki ziyareti birbirinden ayırt etmek. Bunu yapamazsa, bir sayfayı on kez yeniden yükleyen tek bir kişi on kişi gibi görünür ve sitedeki sayı kurgudan ibaret olur.

Olağan çözüm bir çerezdir. Bu site çerez kullanmıyor. Aşağıda bunun yerine ne yaptığını ve bu cümleyi dürüstçe söyleyebilmenin neden emek istediğini okuyabilirsiniz.

Kimsenin istemediği çerez

Bu yıla kadar sayaca gelen her istek bir PHP oturumu başlatıyordu. Bu tek satırlık bir kod, zararsız görünüyor ve şu anlama geliyordu: Stats4U sayacı kullanan her sitenin her ziyaretçisi bir oturum çerezi alıyordu – bizim tarafımızdan, başka birinin sayfasında, iki taraf da istemeden yerleştirilen bir çerez.

bileşenlerIP · UA · IDtarih · günlük salthash16 baytsaklanır2 günadresin kendisi asla kaydedilmezsalt silinince o günü kimse yeniden hesaplayamaz — biz de

Oturum hiçbir şey için kullanılmıyordu. Biri bakınca kanıtını bulmak kolaydı: oturumların saklandığı dizinde sıfır dosya vardı. Yıllarca başkalarının web sitelerine, hiç yazılmayan ve hiç okunmayan verileri tutmak için çerez yerleştirmişti.

Sayım sürecinden kaldırıldı. Artık oturum yalnızca biri bir sayaç oluşturduğunda ya da sayacın ayarlarını değiştirdiğinde başlatılıyor – bu sitede, bilerek yaptığı bir işlemle.

Yerine ne geldi

Ziyaretçiler bir hash değeriyle birbirinden ayırt edilir. Hesaba beş şey girer:

  • IP adresi
  • user agent
  • sayaç numarası
  • bugünün tarihi
  • her gün değişen bir gizli değer

Sonuçta 16 bayt çıkar ve saklanan da budur. İki gün tutulur, ardından silinir. IP adresinin kendisi hiçbir aşamada kaydedilmez.

Aynı kişinin aynı gün aynı sayaca yaptığı iki ziyaret aynı 16 baytı üretir; böylece ikincisi tekrar olarak tanınır. Ertesi gün aynı kişi bambaşka bir değer üretir, çünkü hem tarih hem de gizli değer değişmiştir. Bütün mekanizma bundan ibaret.

Gizli değer neden değişiyor

Yanlış yapılması en kolay kısım bu ve bu sitede de bu yıla kadar yanlış yapılıyordu.

Eski sürüm tek bir kalıcı gizli değer kullanıyordu. Bu yöntem de farklı kişiler için farklı hash değerleri üretiyordu; kulağa sorunsuz geliyor. Ama bu, o gizli değere sahip olan herkesin şüphelendiği bir IP adresini alıp hash değerini arşivdeki herhangi bir gün için yeniden hesaplayabileceği anlamına geliyordu – böylece anonim 16 baytlık değerlerden oluşan bir tablo, verilerin uzandığı en eski tarihe kadar, kimin neyi ziyaret ettiğini gösteren bir kayda geri dönüştürülebilirdi.

Gizli değer artık her gün değişiyor ve eskileri iki gün sonra siliniyor. Bu gerçekleştikten sonra hesaplama artık hiç kimse tarafından yapılamaz. Buna bu siteyi işleten kişi de dâhil ve işin özü de bu: işletenin iyi davranmasına dayanan bir koruma, koruma değil, bir vaattir.

Ekran çözünürlüğü ve silmek üzerine bir ders

Eskiden ekran çözünürlüğü toplanıyordu. Bu, tarayıcı parmak izi çıkarmada kullanılan klasik bir sinyaldir ve bedeline değmiyordu; bu yüzden sayacın yerleştirildiği sayfada çalışan betikten çıkarıldı.

Bu yeterli olmadı ve nedeni, başkalarının web siteleri için bir şeyler geliştiren herkesin bilmesine değer. Betik yedi günlük önbellek süresiyle sunuluyor; bu yüzden eski kopyalar değişiklikten sonra bir hafta boyunca ziyaretçilerin tarayıcılarında etkin kaldı. Daha kötüsü, bazı siteler betiğe hiç bağlantı vermiyor – yıllar önce betiğin bir kopyasını kendi sayfalarına yapıştırdılar ve o kopya, yapıştırıldığı gün ne yapıyorsa sonsuza dek tam olarak onu yapmaya devam edecek.

Bu yüzden çözünürlük gelmeye devam etti. Çözüm, değeri kimin gönderdiğine bakmaksızın sunucunun onu reddetmesini sağlamaktı. Bir veri toplamayı istemciden kaldırmak yalnızca yeni istemcileri durdurur. Sunucudan kaldırmak ise onu anında durdurur.

Doğrulama

Bunların hiçbiri bir iddia olarak pek değerli değil; bu yüzden komut şurada:

  • curl -sk -D - -o /dev/null 'https://www.stats4u.net/index.php?action=pic&s4uid=1' | grep -i set-cookie

Çıktı yoksa çerez yerleştirilmemiş demektir.

Son olarak her zamanki uyarı: bu yazı yazılımın ne yaptığını anlatıyor. Bunun belirli bir ülkede geçerli kurallara uyup uymadığı, yanıtlamaya yetkin birine sorulması gereken bir sorudur ve bu yazı o yanıt değildir.

Güncelleme, 11 Eylül 2026: 27 Ağustos 2026'dan itibaren betik, yerleştirildiği her sitede ekran çözünürlüğünü, tarayıcı penceresinin genişliğini ve piksel oranını yeniden okuyordu. 11 Eylül 2026'dan bu yana bunu yalnızca site sahibinin şu öznitelikle açtığı yerlerde yapıyor: data-screen="1". Bu öznitelik olmadan güncel betik bu üç değerden hiçbirini okumuyor ve sunucu da eski kopyalardan gelen bu değerleri artık saklamıyor.

Reklam