Anonim

Bir müşteri için, yıllar boyunca doğru ve yavaş bir şekilde topladıkları geniş bir bilgi veritabanını görüntüledikleri bir web sitesi işletiyorum. Verilerini web'de çeşitli yerlerde buluyorlar. Büyük olasılıkla, site sayfalarını sayfa sayfadan geçiren ve ihtiyaç duydukları bilgileri kendi veritabanlarına çıkardıklarından daha büyük olasılıkla. Merak ediyorsanız, sitelerinde her kategorideki tek bir ekilmiş veri parçasından dolayı onların verileri olduğunu bilirler.

Geçtiğimiz birkaç gün bu konuda çok araştırma yaptım ve size mükemmel bir çözüm olmadığını söyleyebilirim. Bununla birlikte, bunu başarmayı biraz zorlaştırmak için yapacak birkaç şey buldum. Müşteri için uyguladığım şey bu.

Ajaxified sayfalandırılmış veri

Çok sayıda sayfalandırılmış veriye sahipseniz ve verilerinizi URL'nizin sonuna farklı bir sayı ekleyerek sayfalandırıyorsanız, yani http://www.domain.com/category/programming/2 - O zaman yapıyorsunuz Tarayıcının işi çok daha kolay. İlk sorun, kolayca tanımlanabilen bir düzende olduğundan, bu sayfalarda gevşek bir sıyırıcı ayarlamak pasta kadar kolaydır. İkinci sorun, kategorideki sonraki sayfaların URL’sinden bağımsız olarak, üzerinde durulması gereken bir sonraki ve önceki bağlantının olması muhtemeldir.

Sayfalandırılmış verileri sayfa yeniden yüklemeden javascript ile yükleyerek, bu, birçok kazıyıcı için işi önemli ölçüde karmaşık hale getirir. Google sadece son zamanlarda kendisi sayfada javascript ayrıştırmaya başladı. Bu gibi verileri yeniden yüklemek için çok az dezavantaj var. Google’ın endekslemesi için birkaç sayfa daha sağlarsınız, ancak teknik olarak sayfalandırılmış verilerin tümü yine de kanonikleştirme yoluyla kök kategori sayfasına yönelmelidir. Disk belleği veri sayfalarınızı Ajaxify.

Şablon çıktısını randomize et

Kazıyıcılar, özellikle verileriniz için genellikle biraz özelleştirilecektir. Başlık için belirli bir div kimliğine veya sınıfına, açıklamanız için her satırdaki 3. hücreye, vb. Kilitleneceklerdir. Çoğu kazıyıcı için aynı tablodan gelen çoğu veriyle çalışmak için kolayca tanımlanabilen bir kalıp vardır. aynı şablon tarafından görüntülenir. Div ID'lerinizi ve sınıf adlarınızı rastgele ayarlayın, 0 genişliğiyle rastgele boş tablo sütunları ekleyin. Verilerinizi bir sayfadaki tabloda, stilli divlerde ve başka bir şablonda kombinasyon halinde gösterin. Verilerinizi öngörülebilir bir şekilde sunarak, öngörülebilir ve doğru şekilde kazınabilir.

Bal küpü

Bu sadeliği oldukça temiz. Site kazımalarını engellemeyle ilgili birkaç sayfada bu yönteme rastladım.

  • Sunucunuzda gotcha.html adlı yeni bir dosya oluşturun.
  • Robots.txt dosyanıza aşağıdakileri ekleyin:
    Kullanıcı ajanı: *
    Disallow: /gotcha.html

    Bu, tüm robotlara ve örümceklere sitenizi gotcha.html dosyasını endekslemeyecek şekilde dizine eklediğini bildirir. Herhangi bir normal web tarayıcısı, robots.txt dosyanızın isteklerine saygı gösterir ve bu dosyaya erişemez. yani, Google ve Bing. Aslında bu adımı uygulamak isteyebilir ve bir sonraki adıma geçmeden önce 24 saat bekleyebilirsiniz. Bu, robots.txt dosyanızı güncellediğinizde zaten taramanın ortasında olduğundan dolayı, bir tarayıcının yanlışlıkla engellenmemesini sağlar.
  • Web sitenizde bir yere gotcha.html linkini yerleştirin. Nerede olduğu önemli değil. Ancak, altbilgide tavsiye ederim, bu bağlantının görünür olmadığından emin ol, CSS'de, display: none;
  • Şimdi, bu sayfayı ziyaret eden perp'in IP / genel bilgilerini girin ve engelleyin. Alternatif olarak, onlara yanlış ve çöp verileri sağlamak için bir komut dosyası bulabilirsin. Ya da belki sizden onlara güzel bir kişisel mesaj.

Normal web görüntüleyicileri bağlantıyı göremez, bu yüzden yanlışlıkla tıklanmaz. Saygın tarayıcılar (örneğin Google), robots.txt’inizin isteklerine saygı gösterir ve dosyayı ziyaret etmez. Bu nedenle, bu sayfada rastlaması gereken tek bilgisayar, kötü niyetli niyetli olanlar veya kaynak kodunuzu inceleyen ve rastgele tıklayan kişilerdir (ve bu olursa iyi olur).

Bunun her zaman işe yaramamasının birkaç nedeni vardır. Birincisi, çoğu sıyırıcı normal web tarayıcıları gibi çalışmaz ve yalnızca sitenizdeki her sayfadaki her bağlantıyı izleyerek verileri keşfetmez. Kazıyıcılar genellikle belirli sayfalara sabitlemek ve yalnızca belirli yapıları takip etmek için yapılmıştır. Örneğin, bir kategori sayfasında bir sıyırıcı başlatılabilir ve ardından yalnızca sümüklü harf / kelime içeren URL’leri ziyaret etmesi söylenebilir. İkincisi, birisi kazıyıcıyı diğerleriyle aynı ağda çalıştırıyorsa ve kullanılan paylaşılan bir IP varsa, tüm ağı yasaklamanız gerekir. Bunun bir sorun olması için gerçekten popüler bir web sitesine sahip olmanız gerekir.

Anında görüntülere veri yazın

Sayfayı stillendirmeyi biraz daha zorlaştırabileceğinden, uzun metin dizeleri olması gerekmeyen daha küçük bir veri alanı bulun. Bu verileri bir görüntünün içine aktarırken, neredeyse her programlama dilinde bir görüntüye dinamik olarak metin yazma yöntemleri (php, imagettftext) olduğu konusunda kendimi güvende hissediyorum. Sayılar çok daha önemsiz bir SEO avantajı sağladığından, bu muhtemelen sayısal değerlerle en etkilidir.

Alternatif

Bu, bu proje için bir seçenek değildi. Belirli bir sayfa görüntüleme görünümünden sonra bir giriş yapılması veya oturum açmadan sınırlı miktarda veri gösterilmesi gerekir. Örneğin, 10 sütununuz varsa, oturum açmamış kullanıcılara yalnızca 5 görüntülenir.

Bu hatayı yapma

Botun kullanıcı temsilcisine dayanan bir çözüm bulmaya çalışmayın. Bu bilgiler, ne yaptıklarını bilen bir kazıyıcı tarafından kolayca kandırılabilir. Örneğin google bot kolayca taklit edilebilir. Büyük olasılıkla Google’ı yasaklamak istemiyorsunuz.

Site kazınmasını önleme