Sitende gizli bahis ve casino linki var mı? Kendi siteni tara
Gizli link enjeksiyonu, hack'lerin en sessiz olanı. Site çökmüyor, anasayfa değişmiyor, ziyaretçi hiçbir şey görmüyor. Ama sayfanın kaynağında, bazen sadece Googlebot'a gösterilen bir bölümde, onlarca "deneme bonusu" ve "casino" linki duruyor. Siteniz, farkında olmadan bahis sitelerine link veren bir ağın parçası oluyor.
Bunu genellikle üç yoldan öğreniyorsunuz: Search Console'da bir güvenlik uyarısı, bir SEO denetiminde tuhaf dış linkler ya da biri "sitenizin kaynağında garip linkler var" diye yazdığında. Bu yazıda o linklerin nasıl saklandığını ve kendi sitenizde nasıl bulacağınızı anlatıyorum. Tüm kodlar sadece tespit amaçlı.
Gizli linkler nasıl görünür?
Enjekte edilen linklerin amacı, Google'ın linki görmesi ama site sahibinin ve ziyaretçinin görmemesi. Karşılaştığım kalıplar:
display:noneya davisibility:hiddenbir div. En kaba yöntem. Footer'ın hemen öncesinde, içinde onlarca link olan görünmez bir blok.- Ekran dışına itilmiş blok.
position:absolute; left:-9999pxgibi değerlerle sayfanın görünür alanının dışına taşınmış içerik. - Minik yazı.
font-size:1px, arka planla aynı renk ya daopacity:0. - Sadece Googlebot'a gösterilen linkler. PHP tarafında kullanıcı ajanı kontrol edilir, link bloğu yalnızca Googlebot'a basılır. Tarayıcıda kaynak kodu açtığınızda hiçbir şey göremezsiniz. Bu bir tür cloaking; nasıl çalıştığını cloaking tespiti yazısında ayrıca anlattım.
- Tema
functions.phpdosyası üzerinden footer'a eklenen kod.wp_footerkancasına bağlanmış, çoğu zaman base64 ya da benzeri bir kodlamayla gizlenmiş bir fonksiyon. - Veritabanında saklanan linkler. Bir metin bileşeninin (widget) içeriğinde,
wp_optionstablosunda tema ayarlarında ya da yazıların sonuna eklenmiş HTML olarak. Dosyaları temizleseniz bile burada kalır. - JavaScript ile eklenen linkler. Statik HTML'de yok, sayfa yüklendikten sonra bir script DOM'a ekliyor. Google sayfayı render ettiği için bunları da görebilir.
Hedef genellikle aynı: Google'ın Hidden text and links (gizli metin ve linkler) ve link spam politikalarını ihlal ederek bahis sitelerine güç aktarmak. Bedelini ise siz ödersiniz: güvenlik sorunu uyarısı, manuel işlem riski ve güven kaybı. Kamu kurumu ve üniversite siteleri özellikle hedefte; o tarafı gov ve edu sitelerindeki bahis spam'i yazısında ele aldım.
Adım 1: Googlebot gibi istek atmak
İlk test basit: aynı sayfayı normal tarayıcı, Googlebot ve Google'dan gelen ziyaretçi gibi isteyip farkı karşılaştırmak.
URL="https://www.ornek.com/"
GB="Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
TR="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124.0 Safari/537.36"
curl -s -A "$GB" "$URL" -o googlebot.html
curl -s -A "$TR" "$URL" -o normal.html
# Bazı enjeksiyonlar sadece Google'dan gelen ziyaretçiye tepki verir
curl -s -A "$TR" -e "https://www.google.com/" "$URL" -o google-ref.html
# Kumar terimleri ve çevresindeki metin
grep -oiE '.{0,80}(bahis|casino|deneme bonusu|slot|rulet|iddaa|poker).{0,80}' googlebot.html
# Sadece Googlebot'a gösterilen dış linkler
diff <(grep -oiE 'href="https?://[^"]+"' normal.html | sort -u) \
<(grep -oiE 'href="https?://[^"]+"' googlebot.html | sort -u)Buradaki sınır şu: iyi yazılmış bir enjeksiyon kullanıcı ajanına değil IP adresine bakar ve sizin curl isteğiniz gerçek Googlebot IP'sinden gelmediği için temiz sayfayı görürsünüz. Kesin cevap için Search Console'daki URL Denetimi (URL Inspection) aracında Canlı URL'yi test et (Test live URL) ile Google'ın gerçekten aldığı HTML'e bakın. Kaynağı hızlıca incelemek için /tools/source-analyzer da işe yarar.
Adım 2: Dosyalarda aramak
Sunucuya erişiminiz varsa, tema ve eklenti dosyalarında hem kumar terimlerini hem de tipik gizleme fonksiyonlarını arayın:
cd /var/www/html
# Kumar terimleri (düz metin olarak bırakılmışsa)
grep -rniE --include='*.php' 'bahis|casino|deneme.?bonus|iddaa' wp-content/themes wp-content/plugins wp-content/mu-plugins
# Kodlanmış içerik: meşru eklentilerde de geçer, tek tek gözden geçirin
grep -rnE --include='*.php' 'base64_decode|gzinflate|str_rot13|eval\s*\(' wp-content/themes wp-content/mu-plugins | head -50
# Kullanıcı ajanına göre davranan kod
grep -rniE --include='*.php' "HTTP_USER_AGENT.{0,80}(googlebot|bot)" wp-content | head -30
# Footer'a çıktı basan kancalar
grep -rnE "add_action\s*\(\s*['\"]wp_footer" wp-content/themes
# Son 30 günde değişen PHP dosyaları
find wp-content -name '*.php' -mtime -30 -printf '%TY-%Tm-%Td %p\n' | sort -r | head -40Kodlanmış içerik taraması yanlış pozitif verir; birçok meşru eklenti base64_decode kullanır. Benim kuralım, bir eşleşmeye bakıp ne yaptığını anlayamıyorsam dosyayı resmi kaynaktan gelen temiz kopyayla karşılaştırmak. WordPress çekirdeği ve wordpress.org eklentileri için bunu WP-CLI hızlıca yapar:
wp core verify-checksums
wp plugin verify-checksums --allAdım 3: Veritabanında aramak
Dosyalar temizse sıra veritabanında. WP-CLI kullanıyorsanız:
# Tablo önekini öğren (varsayılan wp_)
wp db prefix
# Tüm tablolarda arama
wp db search 'deneme bonusu' --all-tables
wp db search 'casino' --all-tables
# Şüpheli seçenekler: widget içerikleri, tema ayarları
wp db query "SELECT option_name, LENGTH(option_value) AS boyut FROM wp_options WHERE option_value REGEXP 'bahis|casino|deneme bonusu|iddaa' ;"
# Yazı ve sayfa içeriğinde gizli link
wp db query "SELECT ID, post_type, post_status, post_title FROM wp_posts WHERE post_content REGEXP 'bahis|casino|display: *none' AND post_status <> 'inherit';"WP-CLI yoksa aynı SELECT sorgularını phpMyAdmin'de ya da mysql istemcisinde çalıştırabilirsiniz. widget_text, widget_custom_html ve tema ayarlarını tutan theme_mods_... satırları özellikle dikkat edilmesi gereken yerler.
Adım 4: Tüm siteyi taramak
Search Console'un Bağlantılar (Links) raporu size gelen linkleri gösterir, sizin verdiğiniz dış linkleri değil. Siteden çıkan linkleri görmek için sayfaları kendiniz taramanız gerekiyor. Aşağıdaki betik site haritasındaki her URL'yi Googlebot kullanıcı ajanıyla çeker ve kumar terimi içeren ya da satır içi stille gizlenmiş dış linkleri listeler.
Çalıştırmak için python3 gizli_link_tara.py https://www.ornek.com/sitemap.xml > bulgular.tsv yeterli. Python 3.9 veya üstü gerekir. Betik sadece satır içi style ile gizlenmiş linkleri yakalar; bir CSS sınıfıyla gizlenen ya da JavaScript ile eklenen linkleri göremez. Onlar için render edilmiş DOM'a bakmak gerekiyor.
Adım 5: Render edilmiş sayfada kontrol
Tarayıcıda şüphelendiğiniz sayfayı açın, geliştirici araçlarının konsoluna şunu yapıştırın. Görünmeyen ya da ekran dışında kalan dış linkleri listeler:
const kok = h => h.replace(/^www\./, "");
console.table([...document.querySelectorAll('a[href^="http"]')]
.filter(a => kok(a.hostname) !== kok(location.hostname))
.filter(a => {
const r = a.getBoundingClientRect(), s = getComputedStyle(a);
return a.offsetParent === null || r.right < 0 || r.bottom < 0 ||
parseFloat(s.fontSize) < 3 || s.opacity === "0";
})
.map(a => ({ href: a.href, metin: a.textContent.trim().slice(0, 50) })));position: fixed öğeler de offsetParent değeri null döndürdüğü için listede çıkabilir; sonucu bir inceleme listesi olarak okuyun. Sadece Googlebot'a gösterilen JavaScript linkleri için yine URL Denetimi'ndeki Taranan sayfayı görüntüle (View crawled page) ekranındaki HTML en güvenilir kaynak.
Temizlik
Linki bulmak işin yarısı. Kodu silip geçerseniz, arka kapı onu birkaç gün içinde geri yazar. Sıralama şu:
- Dosyaların ve veritabanının hacklenmiş hâlinin yedeğini alın (geri yüklemek için değil, karşılaştırma için).
- Tüm parolaları değiştirin, WordPress salt anahtarlarını yenileyin, tanımadığınız yönetici hesaplarını silin.
- Çekirdeği ve eklentileri temiz kopyalarla değiştirin, veritabanındaki enjekte içeriği temizleyin.
- Arka kapıyı arayın: yüklemeler dizininde PHP dosyaları,
mu-pluginsiçinde tanımadığınız dosyalar, zamanlanmış görevler. - Search Console'da güvenlik sorunu ya da manuel işlem varsa, temizlikten sonra inceleme isteyin.
Ayrıntılı adımlar WordPress hack temizliği yazısında.
Önleme
- Otomatik güncellemeler açık, kullanılmayan tema ve eklentiler silinmiş
-
wp-config.phpiçindedefine('DISALLOW_FILE_EDIT', true);ile panelden dosya düzenleme kapalı - Tüm yönetici hesaplarında güçlü parola ve iki aşamalı doğrulama
- Yüklemeler dizininde PHP çalıştırılması engellenmiş
- Yukarıdaki Python betiği haftalık cron ile çalışıyor, çıktı boş değilse bildirim geliyor
- Search Console Güvenlik sorunları raporu için e-posta bildirimleri açık
Özetle: gizli linkler tarayıcıda görünmediği için aramanız gereken yer kaynak kodu, Googlebot'un gördüğü HTML ve veritabanı. Bu üçünü düzenli kontrol eden basit bir rutin, bir güvenlik uyarısını beklemekten çok daha ucuz.
Comments / questions
If you have a question about any topic or wish to contact me: Telegram or send an email to [email protected] Thanks!
Related pages
- Cloaking nasıl çalışır ve nasıl tespit edilir? (2026)
- Devlet ve üniversite sitelerinde bahis spam'i: ne yapmalı? (2026)
- Rakip black hat mi yapıyor? Site incelemek için kontrol listesi (2026)
- Black hat SEO 2026'da işe yarıyor mu? Spam politikaları haritası (2026)
- PBN'ler neden ölüyor? Ele veren izler ve satın alınan linkler (2026)