Reddit’in anti-spam sisteminin içine bir bakış
(lyra.horse)- 2021’de Reddit’te geçici bir hata gibi görünen bir durum nedeniyle, Relay for reddit’te normalde
Removed: Autoolarak gizlenen site genelindeki spam kaldırma nedenleri ve iç karar verileri açığa çıktı - Herkese açık arşiv koduna göre kaldırma bilgisi
ban_info.bannerüzerinden aktarılıyor; Relay, API’dekibanned_by=truedeğerini Auto olarak gösteriyordu, ancak aynı alana iç nedenler girince sorun oluşmuş gibi görünüyor - Açığa çıkan nedenler arasında
domain,spammit,banned user,shadowban, spamurai vb. vardı; spamurai ise hesap yaşı, karma, şikâyet sayısı, ISP, e-posta alan adı, User-Agent, dil başlığı, TLS parmak izi, referrer ve Perspective API puanına kadar birçok veri içeriyordu - Google Perspective API’nin SPAM puanı ile Reddit’in kaldırma günlüklerindeki değerler neredeyse bire bir örtüşüyordu; kısa karakter ekleme, Kiril karakterlerle değiştirme, büyük/küçük harf ve sayıların yok sayılması gibi özellikler nedeniyle puanın ciddi şekilde oynadığı örnekler görüldü
- Reddit anti-spam sistemi; Python 2.7 tabanlı kontroller, Lua kural tabanlı REV1/REV2, Snooron, OCR ve görüntü sınıflandırma araçlarının karıştığı çok kuşaklı bir sistem gibi görünüyor; 2026’da Perspective API’nin kapanması ve LLM tabanlı spam değişimi nedeniyle bilgilerin açıklanma riskinin azaldığı değerlendiriliyor
2021’de ortaya çıkan kaldırma nedenleri
- Reddit moderatörü olan bir kullanıcı, 2021’de Relay for reddit uygulamasında kaldırılmış spam bildirimleri alırken normalde görünmemesi gereken anti-spam iç mesajlarını fark etti
- Normal moderatör ekranında otomatik spam kaldırmaları
Removed: Autogibi gösterilirken, o dönemde gerçek kaldırma nedeni ve iç veriler kırmızı metin olarak görünüyordu - Bu durum yaklaşık bir saat sonra normale döndü ve geriye kalan tek materyal o sırada alınan ekran görüntüleri oldu
Reddit moderasyonu ve Auto gösterim biçimi
- Reddit’in alt toplulukları olan subreddit’lerde topluluk moderatörleri gönderi kaldırma, kullanıcı engelleme, modmail yönetimi gibi işlerden sorumludur
- Moderatörler bir gönderinin veya yorumun kim tarafından kaldırıldığını görebilir
- Normal moderatör kaldırmaları moderatör adıyla gösterilir
- AutoModerator kaldırmaları
AutoModeratorolarak gösterilir - Reddit’in site geneli spam filtresi veya yönetici kaldırmaları
Autoolarak gösterilebilir
- Moderasyon günlüğünde site geneli kaldırmalar
redditveyaAnti-Evil Operationsolarak görünür
Herkese açık arşiv kodunda görülen sızıntı yolu
- Reddit, 2017’ye kadar kaynak kodunu açık tutmuştu; bu arşiv koduyla kaldırma işleme akışının bir kısmı izlenebiliyor
- Moderatör kaldırma fonksiyonu olan
POST_remove,admintools.spamçağırırmoderator_banned, kaldırmayı yapan tarafın moderatör mü yönetici mi olduğunu ayırırbanner, kaldırma işlemini yapan kullanıcının adını kaydeder
get_mod_attributes, kaldırılan öğeninban_infobilgisini API yanıtına çıkarır- Moderatör kaldırdıysa
bannerdeğerinibanned_byolarak döndürür - Yönetici kaldırdıysa gerçek ad yerine
Truedöndürür
- Moderatör kaldırdıysa
- Relay for reddit’in decompile edilmiş kodunda
bannedBydeğeri"true"ise bununAutodizesine çevrilip gösterildiği görülüyor - Reddit’te link gönderimi sırasında yasaklı alan adı algılandığında
banner = "domain (REASON)"gibi iç nedenibanneralanına koyan bir kod yolu da vardı - İç kaldırma nedeni içeren
banneralanının aslında yalnızca site genelindeki yöneticilere görünmesi gerekiyordu; benzer bir kod yolundaki hata nedeniyle moderatörlere açığa çıktığı tahmin ediliyor
Açığa çıkan kaldırma nedeni kategorileri
-
domain- Alan adı tabanlı kaldırma, herkese açık kodda da doğrulanabilen bir kategori
- Çoğu
Removed: domain (spam)biçimindeydi, ancak bazı durumlarda özel notlar da vardı - Tumblr ile ilgili spam denemeleri için 2012’de belirli bir alan adının kaldırıldığı bir örnek vardı
le sexxxxy sex spamgibi ifadeler de kaldırma nedeni olarak görünüyordu
-
spammitspammit, gönderileri analiz ederek spam olasılığı yüzdesi ekleyen bir kategori gibi görünüyor- Doğrulanan kaldırma örneklerindeki puanlar en düşük %39,71, en yüksek %98,19 idi
- İlgili subreddit’lerde normal Imgur gönderilerinin bile %70–98 spam puanıyla kaldırıldığı çok sayıda örnek olduğundan, doğruluğu yüksek görünmüyordu
-
Engellenmiş kullanıcı ve shadowban
Removed: banned userveyaRemoved: Reddit (banall performed)biçiminde kaldırmalar vardı- Bu örneklerin çoğu reklam amaçlı servis linkleri gibi bariz spam gönderiler olarak görünüyordu
- Shadowban uygulanmış kullanıcıların gönderileri
Removed: Reddit (shadowban applied on tarih)gibi gösteriliyordu - Shadowban, kullanıcının kendisi hâlâ yazabiliyormuş gibi göründüğü ancak gönderi ve yorumlarının başkalarına görünmediği sessiz bir engelleme türüdür
spamurai’nin ortaya çıkardığı iç karar verileri
- spamurai, açığa çıkan kategoriler içinde en fazla iç veri içeren öğeydi
- Herkese açık sunum materyallerinde Reddit’in “ML” için Minsky, “Rules” için Spamurai kullandığı belirtiliyordu
- spamurai kaldırma nedenlerinde basit kurallar ile ayrıntılı veri dökümleri birlikte yer alıyordu
- Belirli anahtar kelime kaldırmalarında
echelonadlı bir alt sistem gibi görünen bir isim yer alıyordu - 30 dakikadan genç bir hesabın spam koşullarına uyan yorum yazdığı için kaldırıldığı bir örnek vardı
- Şüpheli tişört affiliate spam’i, yalnızca URL içeren yorumlar, yüksek Perspective puanlı yorumlar gibi somut kurallar görülüyordu
- Belirli anahtar kelime kaldırmalarında
-
spamurai veri dökümündeki öğeler
link t3_...veyacomment t1_..., Reddit’in fullname ID değeridirt1yorumdurt2kullanıcıdırt3gönderidirt4private message’dırt5subreddit’tirperspective spamdeğeri, Google Perspective API’nin SPAM puanı olarak doğrulandı- Hesapla ilgili veriler içeriyordu
- Hesap yaşı
spammypuanı- karma
- şikâyet sayısı
- e-posta alan adı
- ISP veya kuruluş adı
- Erişim ve ortam verileri de vardı
oauth.reddit.comkullanılıp kullanılmadığı- User-Agent
- Dil başlığı
LANG - referrer
- Tarayıcı parmak izi gibi görünen
RHS - TLS parmak izi gibi görünen değer
- Küçük resim URL’si
- Gönderi veya yorum gövdesi
- Orijinal Reddit linki
Perspective API ve atlatma olasılığı
- Reddit günlüklerindeki
0.12571795 perspective spamdeğeri, Perspective API SPAM özelliği çağrısının sonucuyla fiilen aynıydı - Aynı metinle Perspective API çağrıldığında
0.12571794dönüyordu; fark 0.00000001 olduğundan yuvarlama hatası sayılabilir - Perspective belgelerindeki örnek puan biçimi ve Reddit CTO’sunun örnek alıntısı da Reddit’in Perspective kullandığına dair emare olarak kullanılıyor
- Perspective’in SPAM özelliği toksisite tespiti değil, spam tespiti için experimental bir özelliktir; New York Times yorumları ve moderasyon verilerinden oluşan tek bir veri kümesiyle eğitildiği belirtilir
- Şubat 2026’dan sonra Google Cloud’da yeni Perspective API projesi oluşturulamadığı için yeniden test etmek zorlaştı
-
SPAM puanındaki hassas değişimler
- Perspective SPAM puanının yalnızca birkaç karakter eklenince bile büyük ölçüde değiştiği örnekler vardı
Puppygirl Consulting is the best way to grow your revenueiçin 0.8638981- Sonuna
qpeklenince 0.010811162 değerine düşüyor - Sayılar ve büyük/küçük harflerin yok sayıldığı izlenimi veren sonuçlar çıkıyor
- Telefon numarası rakamları ve büyük/küçük harf değiştirilse de aynı puan dönüyor
- Bazı başka yazı sistemleri de aynı puanla işleniyor
- Farklı Kiril karakter dizeleri aynı 0.35077864 puanını alıyor
Buy my productifadesindeki Latinp, Kirilрile değiştirilince puan 0.6473346’dan 0.4452748’e düşüyor- Herkese açık API temel alınarak mesajlar azar azar değiştirilseydi, spamurai’nin başlıca karar ölçütlerinden birinin atlatılabilmiş olması mümkün görünüyor
Kullanıcı şikâyetleri ve moderatör onayının yansıması
- spamurai’nin kullanıcı şikâyetlerini de kaldırma kurallarına kattığı anlaşılıyor
REPORT: High spam perspective score on comment with hyperlink reported for spamnedeni, spam olarak şikâyet edilen hiperlinkli yorumun Perspective puanı yüksek olduğu için kaldırıldığını ve moderatörün yeniden onaylayabileceğini gösteriyor- Belirli bir kaldırma nedeninde “moderatör bu içeriği onaylarsa ileride kaldırmalar azalır” ifadesi yer alıyordu
- Reddit’in herkese açık kodundaki
admintools.spamiçinde bulunantrain_spamargümanı, moderatör aksiyonlarının anti-spam eğitiminde kullanılıp kullanılmayacağını belirler - Bir subreddit’te normal gönderileri onaylamanın false positive’leri azaltmaya etki edebileceği şeklinde yorumlanabilir
Diğer kaldırma kuralları ve URL denetimi
- Pinterest redirect linkleri,
mega.nzlinkleri ve serbestçe oluşturulabilen subdomain’lerle ilgili linklerin de kaldırıldığı örnekler vardı mega.nzlinki kaldırmalarında aslında YouTube arşiv video linki olan normal örnekler de vardı; yani false positive görülüyorduMatched forbidden regex u'torenteu'örneğinde gövdede doğrudantorenteuyoktu ama yine de kaldırılmıştı- Reddit, Unicode dizelerini ASCII’ye dönüştürmek için
unidecodekullanıyor - Korece
토렌.트, dönüşüm ve ek işleme sonrasındatorenteuile eşleşebilmişti
- Reddit, Unicode dizelerini ASCII’ye dönüştürmek için
Failed inspection: Phrase(s) [u'UA-49307539-']örneğinin yorum gövdesiyle veya dönüştürülmüş metinle değil, linkin yönlendirildiği sayfanın HTML’i içindeki Google Analytics ID’siyle eşleştiği görüldüinspection, Reddit’in URL’yi açıp yönlendirmeleri takip ettikten sonra sayfada desen araması gibi görünüyor- Bir test hesabıyla içinde bu dize bulunan web sayfasının linki gönderilince 5 yıllık hesap anında engellendi ve gönderi geçmişi silindi
- Daha fazla etkinlik geçmişi olan bir arkadaş hesabında aynı durum yeniden üretilemedi
- Bu filtrenin hâlâ aktif olup olmadığı veya hesap engellemenin tesadüf olup olmadığı kesin olmadığı için gerçek dize değiştirilerek yayımlandı
Geçmişteki ve günümüzdeki Reddit anti-spam bileşenleri
- Reddit Engineering’in 2023 tarihli Protecting Reddit Users in Real Time at Scale yazısında Rule-Executor-V1, REV2 ve Snooron geçiyor
- Anlaşılan zaman çizelgesi şöyle
- REV1, 2016’da oluşturuldu
- Snooron, 2021’de REV1’i modernleştirmek için geliştirildi
- Yaklaşık 2 yıl sonra REV2’ye geçildi
- REV1 ve REV2, Lua kurallarıyla çalışıyor;
nilgibi dizeler ve zamanlama açısından spamurai ile bağlantılı olma ihtimali var u'torenteu',u'UA-49307539-'gibi Python 2.7 Unicode dizeleri, spamurai dışındaki Python 2.7 tabanlı kontrol kodu veya REV1’in çağırdığı ayrı bir URL denetim kodu olabilir- Snooron, ilgili sunuma göre Flink Stateful Functions üzerinde çalışıyor; görüntü sınıflandırma ve OCR yapıyor, worker tarafında Python 3 kullanıyor
- 2024 itibarıyla Reddit, Australian eSafety belgesinde OCR ve görüntü/video sınıflandırma için Hive AI ve Google Vision OCR API kullandığını açıkladı
- Hive OCR 12 dili destekliyor; Google OCR daha fazla dil desteği için birlikte kullanılıyor ve Reddit’in 80 dili destekleyen iç araçlar üzerinde de çalıştığı belirtiliyor
- 2009 tarihli bir ticket’ta
crm114adlı kullanıcının moderatör eğitimi yapılabilen bir spam filtresi olduğu doğrulanmıştı; CRM114 eski bir açık kaynak spam sınıflandırma yazılımıdır
2026’da neden yayımlandı?
- Bu bilgiler 2021’de açıklansaydı Reddit’in spam sorununa ciddi zarar verebileceği değerlendirildi
- 2026’da Perspective API is shutting down yıl sonunda kapanacağı için Reddit kullanmaya devam etse bile yakında geçiş yapmak zorunda kalacak
- LLM’ler spam endüstrisini değiştirdiği için Reddit’in 2026’ya uygun şekilde anti-spam sistemini büyük ölçüde yenilemiş olduğu düşünülüyor
- Bu nedenlerle, 2026 itibarıyla bu bilgilerin açıklanma riskinin düşük olduğu düşünülüyor
1 yorum
Lobste.rs yorumları
İlginç bir kaynak ve araştırma. Sonuç kısmında da söylendiği gibi, bu tür kötüye kullanımı önleme mekanizmalarının ayrıntılarını görme fırsatı nadir çıkıyor; özellikle göze çarpan şey Lyra'ya özgü ustalıklı CSS kullanımıydı.
Yeniden oluşturulan Reddit UI'daki sansür çubukları ve kırmızı daire ilk başta ekran görüntüsü gibi görünüyordu, ama aslında tamamen etkileşimli bir maketti.
Her yeni blog yazısı çıktığında hep merakla bekliyorum. İçerik gerçekten ilginç, başka UI'ları yeniden üretme becerisi de harika.
Şimdiye kadar en az bir easter egg buldum.
Kendi hesabıyla test etmek için web sitesine
<pre>UA-49307539-2</pre>dizgesini koyup Reddit'te linklediğinde, 5 yıllık test hesabının anında askıya alınması ve tüm gönderi geçmişinin de silinmesi kısmı gerçekten sertti.Bu yüzden gerçek numarayı, hesap öldürebilecek bir metni yayımlamamak için
UA-49307539-olarak değiştirdiğini söylüyor; umarım o hesap gerçekten test içindi ve önemli bir şey yoktu.iPhone 16 Pro'daki en güncel iOS geliştirici betasında mobil Safari ile açmaya çalışınca
<url>üzerinde “a problem repeatedly occurred” hatası veriyor ve görüntülenemiyor.Birisi HTML'i ikili aramayla daraltıp çökme nedenini bulursa gerçekten minnettar olurum.
Merak edenler için: İçerikteki Perspective API anahtarı geçerli değil.
bans (2016 - present)bölümünde spam örneği olarak sansürlenen danışmanlık şirketininPuppygirl Consultingolduğunu görünce, geliştirici araçları bağımlıları sansürlenen kısımların muhtemelen sahte ya da easter egg olduğuna dair ipucu yakalayabilir :^)