Honeypot Tuzakları Nedir, Web Scraping'i Nasıl Etkiler?

Yayın tarihi:

11 dk okuma

Acar Diveroli
Yazar: Acar Diveroli
Bağlantı kartları dizili bir platformun ortasında bal peteği tuzağı ve bottan ona uzanan kesik bir kablo

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:

ÖzellikGüvenlik honeypot'uScraping honeypot'u
Neyi hedefler?Ağa sızmaya çalışan saldırganlarıOtomatik tarayıcıları ve form botlarını
BiçimiSahte sunucu, servis, hesapGizli 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 ekipleriSite 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:

  1. Site sayfaya bir bağlantı yerleştirir ve bu bağlantıyı insan ziyaretçiden gizler.
  2. 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.
  3. Sayfadaki bütün bağlantıları toplayan bir scraper bu adresi de listesine ekler ve ziyaret eder.
  4. 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-index ile ü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:

html
<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 403 almaya 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.

  1. 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.
  2. Kapsamı adres desenleriyle daraltın. Yalnızca ürün verisine ihtiyacınız varsa yalnızca /urun/ ile başlayan adresleri izleyin.
  3. Mümkünse bağlantı toplamak yerine site haritasını kullanın. sitemap.xml sitenin taranmasını istediği adresleri listeler.
  4. 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.
  5. rel="nofollow" bağlantılarını atlayın.
  6. Derinlik, sayfa sayısı ve tekrar sınırı koyun. Aynı yolun parametre varyasyonlarını normalleştirin.
  7. 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.
  8. 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:

python
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ürNası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 botlarrobots.txt, adres deseni, görünürlük kontrolü
Gizli form alanıBoş kalması gereken alan dolu gelirse reddedilirBütün alanları dolduran form botlarıVeri toplarken form göndermemek
Zaman kontrolüÇok hızlı gönderilen form şüpheli sayılırAnında gönderen botlarForm göndermemek
Sonsuz sayfa yoluHer ziyarette yeni bağlantı üreten sayfalarDerinlik sınırı olmayan tarayıcılarDerinlik ve sayfa sınırı, parametre normalleştirme
Yapay içerik labirentiTarama yasağını çiğneyen botlara yapay sayfalarrobots.txt'ye uymayan botlarrobots.txt'ye uymak
Sahte veriTespit edilen bota değiştirilmiş içerikİşaretlenmiş IP veya oturumlarHiç 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 gerekiyorAdres deseni izin listesi, site haritası
Geniş tarama yapıyorsunuzrobots.txt, derinlik sınırı, parametre normalleştirme
Tarayıcı otomasyonu kullanıyorsunuzGörünür ve nofollow olmayan bağlantılar + robots.txt
HTTP istemcisi kullanıyorsunuzAdres deseni ve robots.txt (görünürlük ölçülemez)
Form doldurma gerekiyorYalnı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 istiyorsunuzForm 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.

ChatGPT'ye sorClaude'a sor