Bir e-ticaret sitesinin HTML'inde, sayfada hiç görünmeyen bir bağlantı durur: display: none ile gizlenmiş, metni boş, adresi /urun/ozel-teklif-7781. Sayfayı tarayıcıda gezen hiçbir insan bu bağlantıyı görmez ve tıklamaz. Sayfadaki bütün <a href> etiketlerini toplayıp sırayla ziyaret eden bir scraper ise onu bulur ve açar. O anda site, bu ziyaretin bir insandan gelmediğini kesin olarak bilir. Bu bağlantı bir honeypot tuzağıdır.
Bu yazıda honeypot kavramının güvenlik dünyasındaki anlamını ve web scraping'deki karşılığını, gizli bağlantı ve form tuzaklarının nasıl çalıştığını, bir tuzağa takılan scraper'a neler olduğunu ve scraper'ların neden bu tuzaklara düştüğünü anlatıyoruz. Yazının çerçevesi baştan net: amaç honeypot'ları "atlatmak" değil, sitenin ziyaret edilmesini istemediği yolları izlememektir. Kurallara uygun, kapsamı dar tutulmuş bir tarayıcı bu tuzaklardan zaten uzak durur; bunun nasıl yapılacağını bir Playwright örneğiyle gösteriyoruz.
Honeypot nedir?
"Honeypot" (bal küpü) terimi bilgi güvenliğinden gelir. Güvenlik ekiplerinin kullandığı honeypot, saldırganları çekmek için bilerek kurulmuş, gerçek bir işlevi olmayan bir sistemdir: korumasız görünen bir sunucu, sahte bir veritabanı ya da hiç kullanılmayan bir kullanıcı hesabı. Meşru bir kullanıcının bu sisteme erişmesi için hiçbir neden yoktur; bu yüzden ona yapılan her erişim şüphelidir ve saldırganın yöntemleri hakkında bilgi verir.
Web scraping'deki honeypot aynı fikrin web sayfası ölçeğindeki uygulamasıdır:
| Özellik | Güvenlik honeypot'u | Scraping honeypot'u |
|---|---|---|
| Neyi hedefler? | Ağa sızmaya çalışan saldırganları | Otomatik tarayıcıları ve form botlarını |
| Biçimi | Sahte sunucu, servis, hesap | Gizli bağlantı, gizli form alanı, tuzak sayfa |
| Tespit mantığı | Meşru kullanıcı bu sisteme erişmez | İnsan bu bağlantıyı görmez ve tıklamaz |
| Sonuç | Saldırganın izlenmesi, uyarı | IP veya oturumun işaretlenmesi, engelleme, sahte veri |
| Kim kurar? | Güvenlik ekipleri | Site sahipleri, bot yönetim servisleri |
Honeypot'lar, OWASP'ın web uygulamalarına yönelik otomatik tehditler projesinde sınıflandırılan scraping, hesap oluşturma ve spam gibi otomatik saldırılara karşı kullanılan savunma tekniklerinden biridir. Bu savunmaların güçlü yanı ucuz olmalarıdır: bir satır HTML, yüksek bir kesinlikle bot tespiti sağlar.
Gizli bağlantı tuzakları nasıl çalışır?
Gizli bağlantı tuzağının mantığı dört adımda işler:
- Site sayfaya bir bağlantı yerleştirir ve bu bağlantıyı insan ziyaretçiden gizler.
- Bağlantının adresi başka hiçbir yerde kullanılmaz. Genellikle robots.txt'de de kapatılır; böylece kurallara uyan arama motoru botları da oraya gitmez.
- Sayfadaki bütün bağlantıları toplayan bir scraper bu adresi de listesine ekler ve ziyaret eder.
- Site bu adrese gelen isteği kaydeder ve isteği yapan IP adresini, oturumu veya tarayıcı parmak izini bot olarak işaretler.
Bağlantıyı gizlemenin yaygın yolları:
display: none: Öğe sayfada hiç yer kaplamaz.visibility: hidden: Öğe yer kaplar ama görünmez.- Sıfır boyut: Genişlik ve yükseklik sıfır, metin yok.
opacity: 0: Tamamen saydam.- Ekran dışına konumlandırma:
position: absolute; left: -9999px. - Arka planla aynı renk: Beyaz zemin üzerinde beyaz metin.
- Başka bir öğenin arkasında kalma:
z-indexile üstü örtülmüş bağlantı.
Bu yöntemlerin bir kısmı ekran okuyucu kullanan ziyaretçileri de etkileyebileceği için dikkatli siteler tuzak bağlantılara aria-hidden="true" ve tabindex="-1" gibi öznitelikler de ekler; böylece klavye ve yardımcı teknoloji kullanıcıları da bağlantıya ulaşmaz.
Form honeypot'ları
Form honeypot'u, spam botlarına karşı en yaygın kullanılan tekniktir. İletişim, yorum veya kayıt formuna insanların göremediği bir alan eklenir:
<form action="/iletisim" method="post">
<input type="text" name="ad">
<input type="email" name="eposta">
<!-- İnsan bu alanı görmez; dolu gelirse gönderim reddedilir -->
<input type="text" name="website" class="gizli" tabindex="-1" autocomplete="off">
<button type="submit">Gönder</button>
</form>Formu dolduran bir insan website alanını görmez ve boş bırakır. Sayfadaki bütün alanları otomatik dolduran bir bot ise bu alana da bir değer yazar. Sunucu, alan dolu geldiğinde gönderimi sessizce reddeder ya da gönderen IP adresini işaretler.
Bazı formlar buna zaman kontrolünü de ekler: form sayfası açıldıktan sonra birkaç saniye içinde gönderilen başvurular, bir insanın o sürede formu okuyup dolduramayacağı varsayımıyla şüpheli sayılır.
Scraping açısından sonuç nettir: veri toplayan bir scraper'ın form doldurması için çoğu zaman bir neden yoktur. Formları otomatik gönderen bir betik, spam botlarıyla aynı davranışı sergiler.
Tuzak sayfalar ve labirentler
Honeypot yalnızca tek bir bağlantı değildir. Bazı savunmalar, botları sonu gelmeyen sayfalara çekerek hem onları tespit eder hem kaynaklarını tüketir:
- Sonsuz sayfa üreten yollar: Her ziyarette yeni bağlantılar üreten takvim, filtre veya arama sayfaları. Bilinçli bir tuzak olmasa bile derinlik sınırı olmayan bir tarayıcıyı sonsuz döngüye sokar.
- Yapay içerik labirentleri: Cloudflare, 2025'te duyurduğu AI Labyrinth özelliğinde, tarama yasağına uymayan botları yapay zeka ile üretilmiş, birbirine bağlı sayfalara yönlendirir. Duyuruya göre bu sayfalar aynı zamanda yeni nesil bir honeypot işlevi görür: hiçbir insan anlamsız içerikten oluşan bir labirentte dört bağlantı derinliğe inmez, bu yüzden oraya ulaşan ziyaretçinin bot olma olasılığı yüksektir.
- Sahte veri: Tespit edilen bota gerçek fiyatlar yerine değiştirilmiş değerler, var olmayan ürünler veya boş sonuçlar döndürülür. Scraper hata almaz ama topladığı veri güvenilmez hâle gelir.
Sahte veri en tehlikeli sonuçtur, çünkü fark edilmesi zordur. Bir scraper aylarca çalışıp yanlış fiyatlarla rapor üretebilir.
Bir honeypot'a takılınca ne olur?
Tuzak adresine yapılan istek, sitenin bot yönetim sistemine güçlü bir sinyal olarak işlenir. Sonrasında olabilecekler siteden siteye değişir:
- IP adresinin engellenmesi: Aynı adresten gelen bütün istekler
403almaya başlar. - Oturumun işaretlenmesi: Çerez veya oturum belirteci bot olarak etiketlenir; IP değişse bile oturum tanınır.
- Parmak izinin kaydedilmesi: Tarayıcı veya istemci özellikleri kaydedilir ve başka IP'lerden gelen aynı parmak izi de şüpheli sayılır. Parmak izinin nasıl oluştuğunu Tarayıcı Parmak İzi yazımızda anlattık.
- Doğrulama ekranları: Sonraki isteklerde doğrulama sayfası gösterilir.
- Sahte veri veya boş yanıt: Scraper çalışmaya devam eder ama yanlış veri toplar.
- Paylaşılan itibar listeleri: Bot yönetim servisleri, bir sitede tespit edilen kaynakları başka müşterilerinin sitelerinde de dikkate alabilir.
Bu sonuçların bir kısmı yalnızca scraper'ı değil, aynı IP adresini kullanan başka kullanıcıları da etkileyebilir. Bu, paylaşılan veya ortak kullanılan IP adreslerinde dikkat edilmesi gereken bir noktadır.
Scraper'ınız neden takılır?
Honeypot'lar belirli bir davranışı hedefler ve bu davranış çoğu zaman tasarım hatasından kaynaklanır:
- "Bütün bağlantıları izle" mantığı. Sayfadaki her
<a href>etiketini görünürlüğüne bakmadan kuyruğa eklemek. - Kapsamsız tarama. Yalnızca ürün sayfalarına ihtiyaç duyulduğu hâlde sitenin her yoluna girmek.
- robots.txt'yi okumamak. Tuzak adresleri çoğu zaman robots.txt'de kapatılmıştır; dosyaya uyan bir tarayıcı oraya hiç gitmez.
rel="nofollow"bağlantıları izlemek. Sitenin izlenmemesini açıkça işaretlediği bağlantılar.- Derinlik ve sayfa sınırı koymamak. Sonsuz sayfa üreten yollarda tarayıcının durmaması.
- Formları otomatik doldurmak. Gizli alanlar dahil bütün alanlara değer yazmak.
- Aynı adresi farklı parametrelerle tekrar tekrar ziyaret etmek. Filtre ve sıralama kombinasyonlarıyla üretilen binlerce adres.
Meşru bir tarayıcı honeypot'lardan nasıl uzak durur?
Aşağıdaki kurallar honeypot'ları "atlatmak" için değil, sitenin istemediği yolları izlememek için vardır. Bir tarayıcıyı bu şekilde tasarlamak, tuzaklardan kaçınmayı zaten bir yan etki olarak getirir.
- robots.txt'ye uyun. Taramadan önce sitenin dosyasını okuyun ve kapatılmış yolları kuyruğa eklemeyin. Nasıl okunacağını robots.txt Dosyası Nedir, Nasıl Okunur? yazımızda anlattık.
- Kapsamı adres desenleriyle daraltın. Yalnızca ürün verisine ihtiyacınız varsa yalnızca
/urun/ile başlayan adresleri izleyin. - Mümkünse bağlantı toplamak yerine site haritasını kullanın.
sitemap.xmlsitenin taranmasını istediği adresleri listeler. - Görünür bağlantıları izleyin. Tarayıcı kullanıyorsanız, kullanıcının göremeyeceği bağlantıları kuyruğa eklemeyin.
rel="nofollow"bağlantılarını atlayın.- Derinlik, sayfa sayısı ve tekrar sınırı koyun. Aynı yolun parametre varyasyonlarını normalleştirin.
- Veri toplamak için form göndermeyin. Form gönderimi gerçekten gerekiyorsa (örneğin kendi hesabınıza giriş), yalnızca bildiğiniz alanları doldurun.
- Hızınızı sınırlayın. Tuzaklar çoğunlukla hızlı ve geniş tarama yapan botları yakalar.
Tarayıcı otomasyonunda "görünür bağlantı" kontrolü şöyle yapılabilir:
from urllib.parse import urljoin, urlsplit
from playwright.sync_api import sync_playwright
def gorunur_baglantilar(sayfa, taban, izinli_onek="/urun/"):
adresler = set()
for link in sayfa.locator("a[href]").all():
href = link.get_attribute("href")
rel = (link.get_attribute("rel") or "").lower()
if not href or "nofollow" in rel or not link.is_visible():
continue
url = urljoin(taban, href)
parca = urlsplit(url)
if parca.netloc != urlsplit(taban).netloc or not parca.path.startswith(izinli_onek):
continue
adresler.add(url)
return sorted(adresler)
with sync_playwright() as p:
tarayici = p.chromium.launch()
sayfa = tarayici.new_page()
sayfa.goto("https://ornek.com/kampanyalar")
for adres in gorunur_baglantilar(sayfa, "https://ornek.com"):
print(adres) # kuyruğa eklemeden önce robots.txt kontrolü de yapın
tarayici.close()Bu fonksiyon dört filtre uygular: nofollow bağlantıları atlar, görünür olmayanları atlar, başka alan adlarına giden bağlantıları atlar ve yalnızca izin verilen adres önekiyle eşleşenleri alır.
Görünürlük kontrolünün sınırlarını bilmek gerekir. Playwright'ın is_visible() fonksiyonu, display: none, visibility: hidden ve boyutu sıfır olan öğeleri görünmez sayar. Ancak opacity: 0, ekran dışına konumlandırma veya arka planla aynı renk gibi yöntemlerle gizlenmiş öğeler bu kontrolden görünür olarak geçebilir. Bu yüzden görünürlük kontrolü tek başına bir güvence değildir; asıl koruma, robots.txt'ye uymak ve taramayı yalnızca ihtiyaç duyduğunuz adres desenleriyle sınırlamaktır. Tuzak bağlantıların neredeyse tamamı bu iki kuralın dışında kalır.
HTTP istemcisiyle çalışan, tarayıcı kullanmayan bir scraper görünürlüğü doğrudan ölçemez; onun için adres deseni, robots.txt ve site haritası kuralları daha da önemlidir.
Honeypot türleri
| Tür | Nasıl çalışır? | Kimi yakalar? | Meşru tarayıcı nasıl uzak durur? |
|---|---|---|---|
| CSS ile gizlenmiş bağlantı | İnsanın görmediği bağlantı, çoğu zaman robots.txt'de kapalı | Bütün bağlantıları izleyen botlar | robots.txt, adres deseni, görünürlük kontrolü |
| Gizli form alanı | Boş kalması gereken alan dolu gelirse reddedilir | Bütün alanları dolduran form botları | Veri toplarken form göndermemek |
| Zaman kontrolü | Çok hızlı gönderilen form şüpheli sayılır | Anında gönderen botlar | Form göndermemek |
| Sonsuz sayfa yolu | Her ziyarette yeni bağlantı üreten sayfalar | Derinlik sınırı olmayan tarayıcılar | Derinlik ve sayfa sınırı, parametre normalleştirme |
| Yapay içerik labirenti | Tarama yasağını çiğneyen botlara yapay sayfalar | robots.txt'ye uymayan botlar | robots.txt'ye uymak |
| Sahte veri | Tespit edilen bota değiştirilmiş içerik | İşaretlenmiş IP veya oturumlar | Hiç işaretlenmemek; veriyi örneklemle doğrulamak |
Kullanım senaryoları
- Geniş ölçekli tarayıcı: Site başına robots.txt önbelleği, adres deseni izin listesi, derinlik sınırı ve site haritası öncelikli keşif. Ölçekleme tarafı web crawler çözümü sayfamızda.
- Marka koruma taraması: Sahte ürün satan siteleri tespit etmek için yapılan taramalarda kapsam yalnızca ilgili ürün sayfalarıyla sınırlı tutulur; taranan sitenin kendi savunmalarına takılmadan kanıt toplamak için kurallara uygun davranış esastır. Kurgusu marka koruma çözümü sayfamızda.
- Site sahibi olarak bot tespiti: Kendi sitenizde form honeypot'u ve robots.txt'de kapalı bir tuzak bağlantısı, kötü niyetli otomasyonu erken tespit etmenin ucuz yollarıdır. Veri koruma tarafı veri güvenliği çözümü sayfamızda.
- Veri kalitesi kontrolü: Toplanan fiyatların bir kısmını düzenli olarak tarayıcıdan elle kontrol etmek, sahte veri beslenip beslenmediğini gösterir.
Sık yapılan hatalar
- Honeypot'u teknik bir engel gibi görüp aşmaya çalışmak. Tuzak, sitenin açık bir tercihinin göstergesidir; asıl sorun kapsamsız taramadır.
- Görünürlük kontrolüne tek başına güvenmek. Saydam veya ekran dışı öğeler kontrolden geçebilir.
- robots.txt'yi yalnızca başlangıçta bir kez okumak. Uzun süren taramalarda dosya değişebilir; site başına belirli aralıklarla yenileyin.
- Sahte veri olasılığını hesaba katmamak. Hata almamak, doğru veri aldığınız anlamına gelmez.
- Formları "her ihtimale karşı" göndermek. Veri toplama işinde form gönderimine neredeyse hiç gerek yoktur.
- Parametre varyasyonlarını ayrı adres saymak. Sonsuz kombinasyon üreten filtre sayfaları tarayıcıyı tuzağa çeker.
Hız, header ve IP tarafındaki diğer hataları Web Scraping'de Engellenmeden Veri Toplama Yöntemleri yazımızda topladık.
Karar rehberi
| Durumunuz | Öneri |
|---|---|
| Yalnızca belirli sayfa türlerinden veri gerekiyor | Adres deseni izin listesi, site haritası |
| Geniş tarama yapıyorsunuz | robots.txt, derinlik sınırı, parametre normalleştirme |
| Tarayıcı otomasyonu kullanıyorsunuz | Görünür ve nofollow olmayan bağlantılar + robots.txt |
| HTTP istemcisi kullanıyorsunuz | Adres deseni ve robots.txt (görünürlük ölçülemez) |
| Form doldurma gerekiyor | Yalnızca bilinen alanlar; veri toplama için form göndermeyin |
| Verinin doğruluğundan şüphelisiniz | Örneklem alıp tarayıcıdan elle doğrulayın |
| Kendi sitenizi korumak istiyorsunuz | Form honeypot'u + robots.txt'de kapalı tuzak bağlantısı |
Sık sorulan sorular
Honeypot kullanmak siteler için yasal mı?
Genel olarak evet; sitenin kendi sayfasına, ziyaretçilerin göremediği bir bağlantı veya alan eklemesi bir savunma tekniğidir. Ancak tuzak içeriklerin yanıltıcı olmaması, erişilebilirliği bozmaması ve kişisel veri toplarken ilgili mevzuata uyulması gerekir.
Scraper'ım bir honeypot'a takıldığını nasıl anlar?
Doğrudan anlamaz; tuzak adresi normal bir sayfa gibi yanıt verebilir. Belirtiler dolaylıdır: kısa süre sonra başlayan 403 yanıtları, doğrulama ekranları, aniden değişen veya tutarsız hâle gelen veriler. Tarama kayıtlarınızda robots.txt'de kapalı veya beklemediğiniz adreslere istek gönderilip gönderilmediğini kontrol edin.
IP değiştirmek honeypot sonrası engeli kaldırır mı?
Engelin yalnızca IP'ye bağlı olduğu durumlarda geçici sonuç verebilir, ama sorunun kaynağı olan tarama davranışını değiştirmez. Oturum veya parmak izi bazında işaretlemede hiç işe yaramaz. Doğru çözüm, tarayıcının kapsamını ve kurallara uyumunu düzeltmektir.
Arama motoru botları honeypot'lara neden takılmaz?
Meşru arama motoru botları robots.txt'ye uyar ve nofollow gibi işaretleri dikkate alır. Site sahipleri tuzak adresleri genellikle robots.txt'de kapattığı için bu botlar oraya hiç gitmez. Aynı mantık kurallara uyan her tarayıcı için geçerlidir.
Honeypot ile CAPTCHA arasındaki fark nedir?
CAPTCHA ziyaretçiden açıkça bir doğrulama ister ve insan kullanıcıyı da etkiler. Honeypot ise görünmezdir; insan kullanıcı hiçbir şey fark etmez, yalnızca belirli bir otomatik davranışı sergileyenler tuzağa düşer.
Kendi siteme honeypot eklemeli miyim?
İletişim ve yorum formlarında gizli alan tekniği, spam'i azaltmanın düşük maliyetli bir yoludur ve kullanıcı deneyimini etkilemez. Gizli bağlantı tuzakları eklerken tuzak adresi robots.txt'de kapatmayı unutmayın; aksi hâlde kurallara uyan arama motoru botlarını da yanlışlıkla işaretleyebilirsiniz.
Özetle
Honeypot, insan ziyaretçinin göremeyeceği ama bütün bağlantıları ve form alanlarını otomatik işleyen botların takılacağı biçimde kurulmuş bir tuzaktır: CSS ile gizlenmiş bağlantılar, boş kalması gereken form alanları, sonsuz sayfalar ve yapay içerik labirentleri. Tuzağa takılan scraper engellenir, doğrulama ekranlarıyla karşılaşır ya da fark etmeden sahte veri toplar. Honeypot'lardan korunmanın yolu onları aşmaya çalışmak değil, robots.txt'ye uyan, yalnızca gereken adres desenlerini izleyen, derinlik sınırı olan ve form göndermeyen bir tarayıcı tasarlamaktır. Kurallara uygun veri toplama işleriniz için proxy hizmetlerimize göz atabilirsiniz.




