Bagaimana menjadi warga negara yang baik saat merayapi situs web?

83

Saya akan mengembangkan beberapa fungsionalitas yang akan merangkak berbagai situs web publik dan memproses / mengagregasi data pada mereka. Tidak ada yang menyeramkan seperti mencari alamat email - sebenarnya itu adalah sesuatu yang mungkin benar-benar mengarahkan lalu lintas tambahan ke situs mereka. Tapi saya ngelantur.

Selain menghormati robots.txt, apakah ada aturan atau pedoman, tertulis atau tidak tertulis, yang harus saya ikuti untuk (a) menghindari terlihat berbahaya dan berpotensi dilarang, dan (b) tidak menimbulkan masalah bagi pemilik situs / webmaster?

Beberapa contoh yang dapat saya pikirkan yang mungkin atau mungkin tidak penting:

  • Jumlah permintaan paralel
  • Waktu antar permintaan
  • Waktu antara seluruh penjelajahan
  • Menghindari tautan yang berpotensi merusak (tidak ingin menjadi Spider of Doom - tetapi siapa yang tahu apakah ini praktis)

Tapi itu benar-benar hanya meludah; adakah kebijaksanaan yang sudah teruji dan diuji di luar sana yang secara luas berlaku bagi siapa saja yang berniat untuk menulis atau menggunakan laba-laba?

Aaronaught
sumber
1
Sementara tanggapan di bawah ini memberikan jawaban yang bagus tentang bagaimana cara merayapi konten dengan hormat, harap diingat penggunaan yang dapat diterima dari konten tersebut setelah Anda menjelajahinya. Mempublikasikannya kembali, baik secara penuh atau sebagian, mungkin merupakan pelanggaran terhadap hak cipta pemilik.
Gavin Coates

Jawaban:

85

Selain mematuhi robots.txt, patuhi nofollowdan noindexdalam <meta>elemen serta tautan:

  • Ada banyak yang percaya robots.txt bukan cara yang tepat untuk memblokir pengindeksan dan karena sudut pandang itu, telah menginstruksikan banyak pemilik situs untuk mengandalkan <meta name="robots" content="noindex">tag untuk memberi tahu perayap web agar tidak mengindeks halaman.

  • Jika Anda mencoba membuat grafik koneksi antara situs web (mirip dengan PageRank), (dan <meta name="robots" content="nofollow">) seharusnya menunjukkan situs sumber tidak cukup mempercayai situs tujuan untuk memberikan dukungan yang tepat. Jadi, sementara Anda dapat mengindeks situs tujuan, Anda tidak harus menyimpan hubungan antara kedua situs.

SEO lebih merupakan seni daripada sains nyata, dan dipraktikkan oleh banyak orang yang tahu apa yang mereka lakukan, dan banyak orang yang membaca ringkasan eksekutif orang-orang yang tahu apa yang mereka lakukan. Anda akan mengalami masalah di mana Anda akan diblokir dari situs untuk melakukan hal-hal yang menurut situs lain dapat diterima karena beberapa aturan yang didengar seseorang atau dibaca dalam posting blog tentang SEOmoz yang mungkin atau mungkin tidak ditafsirkan dengan benar.

Karena elemen manusia itu, kecuali Anda adalah Google, Microsoft, atau Yahoo !, Anda dianggap jahat kecuali terbukti sebaliknya. Anda perlu lebih berhati-hati untuk bertindak seolah-olah Anda bukan ancaman bagi pemilik situs web, dan bertindak sesuai dengan bagaimana Anda menginginkan perayap yang berpotensi jahat (tapi mudah-mudahan tidak berbahaya) untuk bertindak:

  • berhenti merayapi situs setelah Anda mendeteksi bahwa Anda diblokir: 403 / 401d pada halaman yang Anda ketahui berfungsi, pelambatan, waktu habis, dll.
  • hindari perayapan lengkap dalam periode waktu yang relatif singkat: perayapan sebagian situs, dan kembali lagi nanti (beberapa hari kemudian) untuk merayapi bagian lain. Jangan membuat permintaan paralel.
  • hindari merayapi area yang berpotensi sensitif: URL dengan /admin/di dalamnya, misalnya.

Meskipun demikian, ini akan menjadi pertempuran yang berat kecuali jika Anda menggunakan teknik topi hitam seperti spoofing UA atau dengan sengaja menutupi pola perayapan Anda: banyak pemilik situs, untuk alasan yang sama di atas, akan memblokir perayap yang tidak dikenal saat melihat daripada mengambil kemungkinan ada seseorang yang tidak mencoba "meretas situs mereka". Bersiaplah untuk banyak kegagalan.

Satu hal yang dapat Anda lakukan untuk memerangi gambar negatif yang akan dimiliki perayap tak dikenal adalah membuatnya jelas dalam string agen pengguna Anda siapa Anda:

Aarobot Crawler 0.9 created by John Doe. See http://example.com/aarobot.html for more information.

Di mana http://example.com/aarobot.htmlmenjelaskan apa yang Anda coba capai dan mengapa Anda bukan ancaman. Halaman itu harus memiliki beberapa hal:

  • Informasi tentang cara menghubungi Anda secara langsung
  • Informasi tentang apa yang dikumpulkan perayap dan mengapa ia mengumpulkannya
  • Informasi tentang cara menyisih dan data yang dikumpulkan terhapus

Yang terakhir adalah kunci: penolakan yang baik adalah seperti Jaminan Uang Kembali ™ dan skor niat baik yang tidak masuk akal. Itu harus manusiawi: satu langkah sederhana (baik alamat email atau, idealnya, formulir) dan komprehensif (tidak boleh ada "gotcha": opt-out berarti Anda berhenti merangkak tanpa kecuali).


sumber
18
+1 besar untuk saran untuk meletakkan info yang jelas di Agen-Pengguna. Saya sudah memiliki tugas meneliti log server web untuk mencari tahu siapa yang merayap situs besar, dan tidak menyenangkan mencoba melacak siapa yang menjalankan semua laba-laba yang tidak dikenal.
Carson63000
4
Cukup umum untuk meletakkan URL dalam formulir (+http://example.com/aarobot.html). Saya tidak tahu apa tujuan dari +tanda itu di sini, tetapi saya sudah sering melihatnya. Web-Sniffer melakukannya, dan begitu juga banyak lainnya.
TRiG
Ini adalah informasi yang bagus, tetapi saya bingung tentang satu hal: Anda menyebutkan rel="noindex"seolah-olah itu adalah <a>atribut, tetapi halaman yang Anda tautkan untuk menggambarkannya sebagai bagian dari atribut <meta>tag content. Apakah keduanya, atau apakah ini salah ketik dalam jawabannya?
Aaronaught
1
"SEO lebih merupakan seni daripada sains nyata" - tidak benar. Jika Anda seorang programmer statistik, SEO kurang merupakan seni dan lebih merupakan keterampilan pengenalan matematis. Lulusan matematika yang ahli dalam pemrograman atau pemrogram yang ahli dalam Matematika sangat diminati di industri pembuatan data web.
שינתיא אבישגנת
32

Meskipun ini tidak menjawab semua pertanyaan Anda, saya yakin ini akan membantu Anda dan situs yang Anda jelajahi.

Mirip dengan teknik yang digunakan untuk brute force situs web tanpa menarik perhatian, jika Anda memiliki kumpulan situs yang cukup besar yang perlu Anda jelajahi, jangan merangkak halaman berikutnya di situs sampai Anda merangkak halaman berikutnya dari semua situs lain . Nah, server modern akan memungkinkan koneksi HTTP digunakan kembali , jadi Anda mungkin ingin melakukan lebih dari satu untuk meminimalkan overhead, tetapi idenya masih berlaku. Jangan merayapi satu situs hingga habis sampai Anda pindah ke yang berikutnya . Berbagi kasih.

Untuk Anda di akhir hari, Anda masih dapat merangkak seperti banyak halaman, tetapi rata-rata penggunaan bandwidth pada satu situs akan jauh lebih rendah.

Jika Anda ingin menghindari menjadi laba-laba malapetaka, tidak ada metode pasti. Jika seseorang ingin menempelkan kacang di hidungnya , mereka akan dan mungkin melakukannya dengan cara yang tidak pernah bisa Anda prediksi. Karena itu, jika Anda tidak keberatan melewatkan halaman yang valid sesekali, miliki daftar hitam kata-kata untuk tautan yang akan mencegah Anda untuk mengikutinya. Sebagai contoh:

  • Menghapus
  • Menghapus
  • Memperbarui
  • Sunting
  • Memodifikasi

Bukan bukti bodoh, tetapi kadang-kadang Anda tidak bisa mencegah orang dari harus belajar dengan cara yang sulit;)

Dan McGrath
sumber
3
Nasihat yang bagus tentang "berbagi cinta" - tidak menganggap itu sama sekali, meskipun tentu saja itu tampak jelas dalam retrospeksi.
Aaronaught
Jawaban Anda akan hampir sempurna jika Anda menyebut robots.txt;)
deadalnix
7
@deadalnix, tetapi robots.txtsudah disebutkan dalam pertanyaan, dan dapat dianggap telah diambil.
TRiG
20

Salah satu saran saya adalah mendengarkan apa yang dikatakan situs web yang Anda jelajahi, dan secara dinamis ubah penjelajahan Anda sebagai reaksi terhadap hal itu.

  • Apakah situsnya lambat? Perayapan lebih lambat sehingga Anda tidak melakukannya. Apakah ini cepat? Merayap sedikit lagi, kalau begitu!

  • Apakah situsnya salah? Merayapi lebih sedikit sehingga Anda tidak membuat stres situs yang sudah dipaksa. Gunakan waktu coba-coba yang meningkat secara eksponensial, sehingga Anda mencoba semakin sedikit semakin lama situs melakukan kesalahan. Tetapi ingat untuk mencoba kembali nanti, akhirnya, sehingga Anda dapat melihat apa pun yang Anda lewatkan karena, katakanlah, kesalahan selama seminggu di jalur URL tertentu.

  • Mendapat banyak 404-an? (ingat, 404 halaman mewah kami juga membutuhkan waktu di server!) Hindari merayapi URL lebih lanjut dengan jalur itu untuk saat ini karena mungkin semua yang ada hilang; jika file001.html- file005.htmltidak ada di sana, saya yakin Anda dolar untuk donat file999.htmljuga tidak! Atau mungkin mengecilkan persentase waktu Anda mengambil apa pun di jalur itu.

Saya pikir ini adalah di mana banyak crawler yang naif menjadi sangat salah, dengan memiliki satu strategi robot yang mereka keluarkan sama terlepas dari sinyal yang mereka dapatkan dari situs target.

Perayap cerdas reaktif ke situs target yang disentuhnya.

Jeff Atwood
sumber
19

Yang lain menyebutkan beberapa mantra, tetapi izinkan saya menambahkan beberapa.

Perhatikan jenis dan ukuran file. Jangan tarik binari besar ini.

Optimalkan untuk beberapa halaman "daftar direktori" server web yang khas. Secara khusus, mereka memungkinkan untuk mengurutkan untuk ukuran, tanggal, nama, izin, dan sebagainya. Jangan perlakukan setiap metode pengurutan sebagai root terpisah untuk perayapan.

Minta gzip (kompresi dengan cepat) kapan pun tersedia.

Batasi kedalaman atau deteksi rekursi (atau keduanya).

Batasi ukuran halaman. Beberapa halaman menerapkan tarpit untuk menggagalkan bot pengikis-email. Itu adalah halaman yang memuat dengan kecepatan siput dan panjang terabyte.

Jangan mengindeks 404 halaman. Mesin yang memiliki indeks terbesar melakukan hal ini, dan menerima kebencian yang layak diterima sebagai imbalan.

Ini mungkin sulit, tetapi cobalah untuk mendeteksi pertanian penyeimbang beban. Jika v329.host.com/pages/article.php?99999 mengembalikan sama dengan v132.host.com/pages/article.php?99999 jangan mengikis daftar lengkap server dari v001.host.com hingga v999. host.com

SF.
sumber
Kasus sudut penting!
M. Dudley
Saat ini, Anda sering dapat mendeteksi duplikat konten yang sengaja (misalnya, pertanian penyeimbang beban) dengan memeriksa tag kanonik.
Brian
4

Saya hanya akan menambahkan satu hal kecil.

Hak cipta & masalah hukum lainnya: Saya tahu Anda menulisnya adalah situs web publik, jadi mungkin tidak ada hak cipta apa pun, tetapi mungkin ada masalah hukum lainnya untuk menyimpan data.

Ini tentu saja akan tergantung pada data negara mana yang Anda simpan (dan di mana Anda menyimpannya). Contoh kasus masalah dengan Undang-Undang Patriot AS vs Petunjuk Perlindungan Data UE. Ringkasan eksekutif dari masalahnya adalah bahwa perusahaan-perusahaan AS harus memberikan data mereka misalnya. FBI jika ditanya, tanpa memberi tahu pengguna tentang hal itu, di mana Petunjuk Perlindungan Data menyatakan bahwa pengguna harus diberitahu tentang hal ini. Se http://www.itworld.com/government/179977/eu-upset-microsoft-warning-about-us-access-eu-cloud

Holger
sumber
2
"Saya tahu Anda menulis bahwa ini adalah situs web publik, jadi mungkin tidak ada hak cipta apa pun". Setiap situs web di internet adalah publik, dan setiap situs web adalah hak cipta, kecuali dinyatakan secara eksplisit.
Gavin Coates
3

Panggil webcrawler Anda baik itu atau laba-laba, terkait dengan nama Anda. Ini penting. Mesin analitik dan sejenisnya mencari mereka yang mengaitkan Anda sebagai ... laba-laba. ;)

Cara saya melihat yang dilakukan adalah melalui header permintaan User-Agent

jcolebrand
sumber
Saya pikir itu biasanya "bot" atau "robot" - Saya tahu bahwa Google adalah Googlebot.
Aaronaught
Poin bagus. Selama bisa dibedakan. Mungkin ada pos di SO meletakkan mereka.
jcolebrand
2
  • Pertahankan cookie, bila diperlukan, untuk mencegah situs web membuat sesi yang tidak perlu.
  • Terapkan perilaku parsing tautan, paling dekat dengan browser. Situs langsung kami melaporkan banyak '404', karena permintaan bot untuk file yang hilang.
Valera Kolupaev
sumber