Anonim

Saya menjalankan situs web untuk klien tempat mereka menampilkan basis data besar informasi yang telah mereka kumpulkan secara akurat dan perlahan selama bertahun-tahun. Mereka menemukan data mereka di web di berbagai tempat. Kemungkinan besar karena pengikis melalui halaman situs mereka demi halaman dan mengekstraksi informasi yang mereka butuhkan ke dalam database mereka sendiri. Dan jika Anda bertanya-tanya, mereka tahu itu data mereka karena sepotong data yang ditanam di setiap kategori di situs mereka.

Saya telah melakukan banyak penelitian tentang ini selama beberapa hari terakhir, dan saya dapat memberitahu Anda bahwa tidak ada solusi yang sempurna untuk semua. Saya telah menemukan beberapa hal yang harus dilakukan untuk menjadikan ini sedikit sulit bagi mereka. Inilah yang saya terapkan untuk klien.

Ajaxified data paginasi

Jika Anda memiliki banyak data paginasi, dan Anda membuat pagaging data hanya dengan menambahkan nomor yang berbeda di akhir URL Anda, yaitu http://www.domain.com/category/programming/2 - Kemudian Anda membuat pekerjaan crawler yang jauh lebih mudah. Masalah pertama adalah, itu dalam pola yang mudah diidentifikasi, sehingga pengaturan scraper longgar pada halaman ini semudah pie. Masalah kedua, terlepas dari URL halaman-halaman berikutnya dalam kategori ini, kemungkinan besar akan ada tautan berikutnya dan sebelumnya untuk mereka gunakan.

Dengan memuat data paginasi melalui javascript tanpa memuat ulang halaman, ini secara signifikan menyulitkan pekerjaan bagi banyak pencakar di luar sana. Google baru-baru ini sendiri mulai mem-parsing javascript di halaman. Ada sedikit kerugian untuk memuat ulang data seperti ini. Anda menyediakan beberapa halaman lebih sedikit untuk diindeks oleh Google, tetapi, secara teknis, data paginasi semua harus menunjuk ke halaman kategori root melalui kanonikisasi. Ajaxify halaman halaman data Anda.

Mengacak output template

Scrapers akan sering sedikit disesuaikan untuk data Anda secara khusus. Mereka akan menempel pada id id atau kelas tertentu untuk judul, sel ke-3 di setiap baris untuk deskripsi Anda, dll. Ada pola yang mudah diidentifikasi untuk sebagian besar pencakar untuk bekerja dengan sebagian besar data yang berasal dari tabel yang sama, ditampilkan oleh templat yang sama. Acak id id dan nama kelas Anda, masukkan kolom tabel kosong secara acak dengan lebar 0. Tampilkan data Anda dalam tabel di satu halaman, dalam divs gaya dan kombinasi pada template lain. Dengan menyajikan data Anda secara dapat diprediksi, data tersebut dapat dikikis secara terprediksi dan akurat.

Wadah madu

Ini cukup rapi dalam kesederhanaannya. Saya menemukan metode ini pada beberapa halaman tentang cara mencegah pengikisan situs.

  • Buat file baru di server Anda yang disebut gotcha.html.
  • Di file robots.txt Anda, tambahkan berikut ini:
    Agen pengguna: *
    Disallow: /gotcha.html

    Ini memberitahu semua robot dan spider di luar sana mengindeks situs Anda untuk tidak mengindeks file gotcha.html. Perayap web normal apa pun akan menghormati keinginan file robots.txt Anda dan tidak mengakses file itu. yaitu, Google dan Bing. Anda mungkin benar-benar ingin menerapkan langkah ini, dan tunggu 24 jam sebelum melanjutkan ke langkah berikutnya. Ini akan memastikan bahwa perayap tidak terhalang oleh Anda secara tidak sengaja karena faktanya perayapan sudah pertengahan ketika Anda memperbarui file robots.txt Anda.
  • Tempatkan tautan ke gotcha.html di suatu tempat di situs web Anda. Tidak masalah di mana. Saya akan merekomendasikan di footer, bagaimanapun, pastikan tautan ini tidak terlihat, di CSS, display: none;
  • Sekarang, login IP / informasi umum pelaku yang mengunjungi halaman ini dan memblokir mereka. Atau, Anda bisa membuat skrip untuk menyediakan data sampah yang salah. Atau mungkin pesan pribadi yang baik dari Anda kepada mereka.

Penampil web biasa tidak akan dapat melihat tautan, sehingga tidak akan diklik secara tidak sengaja. Perayap terkenal (Google misalnya), akan menghormati keinginan robots.txt Anda dan tidak mengunjungi file. Jadi, satu-satunya komputer yang harus tersandung di halaman ini adalah mereka yang memiliki niat jahat, atau seseorang melihat kode sumber Anda dan mengklik secara acak (dan oh well, jika itu terjadi).

Ada beberapa alasan mengapa ini tidak selalu berhasil. Pertama, banyak pencakar tidak berfungsi seperti perayap web biasa, dan tidak hanya menemukan data dengan mengikuti setiap tautan dari setiap halaman di situs Anda. Pencakar sering dibangun untuk memperbaiki pada halaman tertentu dan hanya mengikuti struktur tertentu. Sebagai contoh, pengikis mungkin dimulai pada halaman kategori, dan kemudian diberitahu hanya untuk mengunjungi URL dengan kata / data dalam siput. Kedua, jika seseorang menjalankan scraper mereka di jaringan yang sama dengan yang lain, dan ada IP bersama yang digunakan, Anda akan melarang seluruh jaringan. Anda harus memiliki situs web yang sangat populer untuk masalah ini.

Tulis data ke gambar dengan cepat

Temukan bidang data yang lebih kecil, tidak perlu untaian teks yang panjang karena ini dapat membuat penataan halaman menjadi sedikit lebih sulit. Keluaran data ini di dalam gambar, saya merasa cukup yakin ada metode di hampir setiap bahasa pemrograman untuk menulis teks ke gambar secara dinamis (dalam php, imagettftext). Ini mungkin paling efektif dengan nilai numerik karena angka memberikan keuntungan SEO yang jauh lebih tidak signifikan.

Alternatif

Ini bukan opsi untuk proyek ini. Memerlukan login setelah jumlah tampilan halaman tertentu, atau menampilkan data dalam jumlah terbatas tanpa login. Yaitu, jika Anda memiliki 10 kolom, hanya tampilkan 5 untuk pengguna yang tidak login.

Jangan membuat kesalahan ini

Jangan repot-repot mencoba membuat semacam solusi berdasarkan agen pengguna bot. Informasi ini dapat dengan mudah dipalsukan oleh pengikis yang tahu apa yang mereka lakukan. Bot google misalnya dapat dengan mudah ditiru. Anda kemungkinan besar tidak ingin mencekal Google.

Mencegah pengikisan situs