Anubis gerçekte kimi engelliyor?
(fzakaria.com)- HTTP erişiminden önce iş ispatı (Proof-of-Work) talep eden Anubis, AI scraper’larından çok sıradan kullanıcılara, düşük özellikli cihazlara ve JavaScript desteklemeyen istemcilere daha büyük ve sürekli bir maliyet yüklüyor
- LLM tarafından oluşturulan anubis-fetch, iş ispatını doğrudan çözüyor, gerekirse Chromium çalıştırıyor ve Chrome’un TLS/JA3 parmak izini taklit ederek Cloudflare’ın manuel engelini bile aşıyor
- Scraper’lar aldıkları çerezleri önbelleğe alıp yeniden kullanarak maliyeti birçok isteğe yayabiliyor, ancak insanlar her ziyarette birkaç saniyelik beklemeye ve pil tüketimine katlanmak zorunda kalıyor
- Varsayılan zorluk seviyesi 4 ortalama 65.536 hash gerektiriyor; yerel Go uygulaması yaklaşık 1,3 ms, tarayıcı JavaScript’i ise yaklaşık 130 ms sürüyor, ancak gerçekte hissedilen bekleme süresi yaklaşık 1~5 saniye
- Deneme başına 2 saniyelik hissedilen süre ve 20J enerji varsayılırsa, günde 1 milyon doğrulama yılda yaklaşık 23 insan-yılı·2MWh, günde 100 milyon doğrulama ise yaklaşık 2.300 insan-yılı·200MWh tüketiyor
Yapay zekanın aştığı Anubis
- Linux çekirdeğinde
binfmt_misciçin bpf üzerinden yorumlayıcıPT_INTERPiçinde$ORIGINdesteği ekleyen bir yama üzerinde çalışırken, LLM’den Linux kernel mailing list başlığını okuması istendi - lore.kernel.org, kaynağa erişmeden önce iş ispatı isteyen HTTP proxy’si Anubis’i devreye almıştı
- LLM bu kısıtı işleyen anubis-fetch’i üretti
- Önce iş ispatını yerel olarak çözüyor, başarısız olursa Chromium ile URL’yi ziyaret ediyor
reqile gerçek Chrome’un TLS/JA3 parmak izini taklit ederek Cloudflare’ın manuel engelini de aşıyoranubis-fetch <URL>HTML çıktısını standart çıktıya veriyor,--textseçeneği ise okunması kolay düz metin üretiyor
- Anubis’in hedef aldığı AI ve botlar, iş ispatı desteğini bir kez ekledikten sonra bunu kolayca aşabiliyor
- Scraper’lar doğrulamayı çözdükten sonra aldıkları çerezleri önbelleğe alıp yeniden kullanarak maliyeti birçok isteğe yayabiliyor
- Buna karşılık insanlar her ziyarette dönen yükleme göstergesini bekliyor, pil tüketiyor ve bu maliyeti başka kullanıcılarla paylaşamıyor
- Cihaz ne kadar düşük özellikliyse ve özellikle akıllı telefonlarda yük o kadar artıyor; JavaScript kullanmayan w3m·lynx·ekran okuyucular·RSS okuyucular ise erişemiyor
- AI’yı engellemeyi amaçlayan mekanizma, AI tarafından kolayca aşılırken insanlara ve açık web’e sürekli maliyet yükleyen tersine artan bir yük olarak çalışıyor
İş ispatının yarattığı zaman ve enerji maliyeti
- Zorluk seviyesi
d, hash’in sahip olması gereken öndeki sıfır hex karakterlerinin sayısıdır ve çözüm başına beklenen iş miktarıW = 16^dhash’tir- Yaygın varsayılan olan zorluk 4, 65.536 hash gerektirir
- Yaklaşık 50 MH/s hızındaki yerel Go uygulaması: yaklaşık 1,3 ms
- Yaklaşık 0,5 MH/s hızındaki tarayıcı JavaScript’i: yaklaşık 130 ms
- Sayfa yüklemesi, worker çalıştırma ve yeniden yüklemeyi içeren hissedilen süre: yaklaşık 1~5 saniye
- Zorluk 5, 1.048.576 hash gerektirir
- Yerel Go uygulaması: yaklaşık 20 ms
- Tarayıcı JavaScript’i: yaklaşık 2 saniye
- Hissedilen süre: yaklaşık 5~15 saniye
- Yaygın varsayılan olan zorluk 4, 65.536 hash gerektirir
- Dünya genelindeki günlük Anubis doğrulama çözüm sayısı
C, deneme başına hissedilen süret = 2 saniye, ekran ve CPU dâhil cihaz enerjisiE = 20Jvarsayılıyor- Yıllık insan zamanı
C × t × 365 / 3.15×10⁷ile hesaplanıyor - Yıllık enerji
C × E × 365 / 3.6×10⁶kWh ile hesaplanıyor
- Yıllık insan zamanı
- Bu varsayımlara göre yıllık maliyet şöyle
- Günde 1 milyon kez: yaklaşık 23 insan-yılı, yaklaşık 2MWh
- Günde 10 milyon kez: yaklaşık 230 insan-yılı, yaklaşık 20MWh
- Günde 100 milyon kez: yaklaşık 2.300 insan-yılı, yaklaşık 200MWh
- Tüm rakamlar kabaca tahminidir; bot çiftlikleri ve AI araçları bunun birkaç basamak daha fazla enerji tükettiğinden, bu hesap çevresel bir iddia ileri sürmek için yapılmış değil
- Robotlar için zaman bir kısıt değil, ama insanların zamanı sonludur; bu nedenle kullanıcılar, AI çağından önce var olmayan web sitesi erişim beklemelerinde topluca önemli miktarda zaman harcamaya başlıyor
1 yorum
Lobste.rs görüşleri
Anubis’in hedef aldığı tarafın bunu kolayca etkisiz hale getirdiği söylemine katılmak zor. Anubis’in asıl amacı LLM ajanlarını veya vibe coding ile yapılmış programları değil, LLM şirketlerinin kullandığı gelişigüzel web scraper’larını engellemek
Aşma yöntemleri var ve ajanlar ya da LLM’ler de kullanılabilir, ancak scraper’ların büyük kısmı basit ve operatörleri de Anubis uygulayan az sayıdaki siteyi özellikle aşmaya uğraşmıyor. Amaç, aşma maliyetini biraz yükselterek toplamayı değmez hale getirmeye daha yakın
Ancak bu amaç için Anubis gereğinden fazla tasarlanmış. Kullanıcıya bir kez düğmeye bastırıp sonra erişim çerezi vermek de aynı koruma etkisini sağlayabilir; bunu Apache üzerinde uyguladım ve karmaşık bir iş ispatı olmadan da yeterince iyi çalıştı
Kendi veri madenciliği işlerimde de kullandığım modern scraping araçları, engellerin neredeyse hepsini aşacak kadar iyi ve Anubis de kolayca aşılabiliyor
Çok özel bazı yapılandırmalar kaçabilir, ama hedef kötü niyetli rakibi değil, tembel rakibi durdurmak
Anubis botları ayıklamıyor; bunun yerine istemcinin istek hızını sınırlıyor
Anubis, AI ajanlarının erişimini engellemekten çok hizmet reddi saldırısına karşı savunma aracına benziyor ve pratikte AI ajanlarını ayırt edip engellemek de zor
Ama mobil cihazda tanımadığım bir siteyi ziyaret ederken JavaScript’i kapalı tutan benim gibi kullanıcıları da birlikte engelliyor
Gerçek işletim sonuçlarına bakınca yazının sonucuna katılmak zor. Homelab web sitesini fly.io herkese açık proxy ve Tailscale yönlendirmesiyle servis ettim; Facebook başta olmak üzere scraper’lar yüzünden her ay yaklaşık 20 dolarlık bant genişliği ücreti oluşuyordu
Proxy’ye Anubis uyguladıktan sonra yeniden ücretsiz katmana döndüm. Gerekirse aşılabilmesi sorun değil; robots.txt’yi yok sayan az sayıdaki kötü niyetli tarafın yoğun toplama trafiğinin büyük kısmını engellemek yeterli
Akıllı TV gibi düşük güçlü cihazların botnet’ini kullanan scraping çalışmalarında Anubis’in iş ispatı gerçekten engel olabilir gibi görünüyor. https://lobste.rs/s/kpaxih/update_on_scraper_situation bağlantısında da bu konu biraz ele alınıyor
Anubis’te en rahatsız edici kısım açık web ile çakışması. Web sitem çoğunlukla RSS akışı üzerinden tüketiliyor; RSS’yi Anubis ile korursam akış çalışmıyor, korumazsam da tüm içerik makinenin kolay okuyacağı biçimde scraper’lara açılmış oluyor
Bu tür iş ispatı bariyerleri, hedeflediğimiz açık web ya da indie web ile temelden bağdaşmakta zorlanıyor
Başkalarının yaptığı seçime saygı duymayan bir tavır açıkça görülüyor
En nahoş tarafı, bunun CFAA gibi yasaları açıkça ihlal eden bir eylem gibi görünmesine rağmen, diğer suç niteliğindeki DDoS hizmetleri gibi kimliğini gizlemesi
Başkalarının emeğini çalmaya ve açık kaynak kodunu aklamaya tüm iş modelini dayandıran bir şirketin yasaya uyacağını beklemek zaten gülünç
Anubis genelde Dillo’yu engellemez ama site ayarına göre engellenebiliyor; bu da JavaScript’in yoksa var olmayı hak etmiyorsun havasını körüklediği için çok can sıkıcı: https://paste.rs/jNgwd.png
Konut tipi proxy’lerdeki tüm IP listesini toplayıp yönetmenin ve bunları belli bir süre engellemenin mümkün olup olmadığını düşünüyorum; ipset bu ölçeği belki kaldırabilir. Loglara bakınca botların CSS ya da görsel gibi diğer kaynakları çekmeden Dillo deposundaki tüm commit’lerdeki tüm dosyaları dolaştığı görülüyor; bu yüzden tespiti nispeten kolay
Her sitede IP başına yalnızca bir istek görünse bile, aynı IP’nin birden fazla siteyi çekiyor olması muhtemel; dolayısıyla birkaç kez bildirilen IP’ler engellenebilir. Bağlantıyı sadece kesmek yerine, ayrı bir porttaki bilgilendirme sayfasına yönlendirip engellenme nedenini ve çözüm yolunu anlatmak gerekir
Bu, tarayıcı eklentilerine veya telefon uygulamalarına ters proxy arka kapısı yerleştirme teşvikini de azaltır. Çünkü kullanıcılar gerçekten engellenmeye başlar
IP itibar sistemine dayanmak zorunda olmak üzücü, ama başka etkili bir karşı önlem pek görünmüyor. Savunmasız cihazlar, botnet komuta-kontrol sunucusu kaldırıldıktan sonra bile bir sonraki saldırgan tarafından yeniden ele geçirilip yeni bir botnet’e katılabiliyor
Yazıda “tabii ki bu işi LLM yardımıyla yapıyorum” denmiş; öyleyse neden vibe coding etiketi eklenmediğini merak ediyorum
vibecodingetiketi pushcx tarafından kaldırıldı