Saya memiliki situs web musik yang cukup besar dengan basis data artis besar. Saya telah memperhatikan situs musik lain menggores data situs kami (saya memasukkan nama-nama Artis dummy di sana-sini dan kemudian melakukan pencarian google untuk mereka).
Bagaimana saya bisa mencegah goresan layar? Apakah itu mungkin?
Jawaban:
Catatan: Karena versi lengkap dari jawaban ini melebihi batas panjang Stack Overflow, Anda harus menuju ke GitHub untuk membaca versi yang diperluas, dengan lebih banyak tips dan detail.
Untuk mencegah pengikisan (juga dikenal sebagai Webscraping , Screenscraping , penambangan data Web , pemanenan Web , atau ekstraksi data Web ), membantu mengetahui cara kerja pengikis ini, dan, dengan ekstensi, apa yang mencegah mereka bekerja dengan baik.
Ada berbagai jenis scraper, dan masing-masing bekerja secara berbeda:
Laba-laba, seperti bot Google atau mesin fotokopi situs web seperti HTtrack , yang secara rekursif mengikuti tautan ke halaman lain untuk mendapatkan data. Ini kadang-kadang digunakan untuk goresan bertarget untuk mendapatkan data tertentu, sering kali dikombinasikan dengan parser HTML untuk mengekstrak data yang diinginkan dari setiap halaman.
Skrip Shell: Terkadang, alat Unix umum digunakan untuk mengikis: Wget atau Curl untuk mengunduh halaman, dan Grep (Regex) untuk mengekstrak data.
Pengurai HTML, seperti yang berbasis pada Jsoup, Scrapy , dan lainnya. Mirip dengan yang berbasis shell-script regex, ini bekerja dengan mengekstraksi data dari halaman berdasarkan pola dalam HTML, biasanya mengabaikan yang lainnya.
Misalnya: Jika situs web Anda memiliki fitur pencarian, scraper tersebut dapat mengirimkan permintaan untuk pencarian, dan kemudian mendapatkan semua tautan hasil dan judulnya dari halaman hasil HTML, untuk secara khusus hanya mendapatkan tautan hasil pencarian dan judulnya . Ini adalah yang paling umum.
Screenscrapers, berdasarkan mis. Selenium atau PhantomJS , yang membuka situs web Anda di browser nyata, menjalankan JavaScript, AJAX, dan sebagainya, dan kemudian mendapatkan teks yang diinginkan dari halaman web, biasanya dengan:
Mendapatkan HTML dari browser setelah halaman Anda dimuat dan JavaScript telah berjalan, dan kemudian menggunakan parser HTML untuk mengekstrak data yang diinginkan. Ini adalah yang paling umum, dan begitu banyak metode untuk memecahkan parser / pencakar HTML juga berfungsi di sini.
Mengambil tangkapan layar dari halaman yang diberikan, dan kemudian menggunakan OCR untuk mengekstrak teks yang diinginkan dari tangkapan layar. Ini jarang terjadi, dan hanya pencakar khusus yang benar-benar menginginkan data Anda yang akan mengaturnya.
Layanan pembuatan web seperti ScrapingHub atau Kimono . Bahkan, ada orang yang tugasnya mencari tahu cara mengikis situs Anda dan mengeluarkan konten untuk digunakan orang lain.
Tidak mengherankan, layanan mengikis profesional adalah yang paling sulit untuk dihindarkan, tetapi jika Anda membuatnya sulit dan menghabiskan waktu untuk mencari cara untuk mengikis situs Anda, ini (dan orang-orang yang membayar mereka untuk melakukannya) mungkin tidak akan repot untuk mengikis situs web Anda.
Menyematkan situs web Anda di laman situs lain dengan bingkai , dan menyematkan situs Anda di aplikasi seluler.
Meskipun tidak menggores secara teknis, aplikasi seluler (Android dan iOS) dapat menyematkan situs web, dan menyuntikkan CSS dan JavaScript khusus, sehingga sepenuhnya mengubah tampilan halaman Anda.
Copy-paste manusia: Orang-orang akan menyalin dan menempel konten Anda untuk menggunakannya di tempat lain.
Ada banyak tumpang tindih antara berbagai jenis pengikis ini, dan banyak pengikis akan berperilaku sama, bahkan jika mereka menggunakan teknologi dan metode yang berbeda.
Tip-tip ini sebagian besar ide saya sendiri, berbagai kesulitan yang saya temui saat menulis pencakar, serta potongan-potongan informasi dan ide-ide dari sekitar jalinan.
Cara berhenti mengikis
Anda tidak dapat sepenuhnya mencegahnya , karena apa pun yang Anda lakukan, pengikis yang tekun masih bisa mencari cara untuk mengikis. Namun, Anda dapat menghentikan banyak pengikisan dengan melakukan beberapa hal:
Monitor log & pola lalu lintas Anda; batasi akses jika Anda melihat aktivitas yang tidak biasa:
Periksa log Anda secara teratur, dan jika ada aktivitas yang tidak biasa yang mengindikasikan akses otomatis (pencakar), seperti banyak tindakan serupa dari alamat IP yang sama, Anda dapat memblokir atau membatasi akses.
Secara khusus, beberapa ide:
Pembatasan nilai:
Hanya izinkan pengguna (dan pencakar) untuk melakukan sejumlah tindakan dalam waktu tertentu - misalnya, hanya izinkan beberapa pencarian per detik dari alamat IP atau pengguna tertentu. Ini akan memperlambat pencakar, dan membuatnya tidak efektif. Anda juga dapat menampilkan captcha jika tindakan diselesaikan terlalu cepat atau lebih cepat daripada yang dilakukan pengguna sungguhan.
Mendeteksi aktivitas yang tidak biasa:
Jika Anda melihat aktivitas yang tidak biasa, seperti banyak permintaan serupa dari alamat IP tertentu, seseorang yang melihat jumlah halaman berlebihan atau melakukan pencarian dalam jumlah yang tidak biasa, Anda dapat mencegah akses, atau menunjukkan captcha untuk permintaan berikutnya.
Jangan hanya memantau & batas nilai berdasarkan alamat IP - gunakan indikator lain juga:
Jika Anda memblokir atau menilai batas, jangan hanya melakukannya berdasarkan alamat per-IP; Anda dapat menggunakan indikator dan metode lain untuk mengidentifikasi pengguna atau pencakar tertentu. Beberapa indikator yang dapat membantu Anda mengidentifikasi pengguna / pencakar tertentu meliputi:
Seberapa cepat pengguna mengisi formulir, dan di mana pada tombol mereka mengklik;
Anda dapat mengumpulkan banyak informasi dengan JavaScript, seperti ukuran / resolusi layar, zona waktu, font yang dipasang, dll; Anda dapat menggunakan ini untuk mengidentifikasi pengguna.
Tajuk HTTP dan pesanannya, terutama Agen-Pengguna.
Sebagai contoh, jika Anda mendapatkan banyak permintaan dari satu alamat IP, semua menggunakan Agen Pengguna yang sama, ukuran layar (ditentukan dengan JavaScript), dan pengguna (scraper dalam hal ini) selalu mengklik tombol dengan cara yang sama dan pada interval reguler, itu mungkin scraper layar; dan Anda dapat sementara memblokir permintaan serupa (mis. memblokir semua permintaan dengan agen pengguna dan ukuran layar yang berasal dari alamat IP tertentu), dan dengan cara ini Anda tidak akan merepotkan pengguna nyata pada alamat IP itu, misalnya. dalam hal koneksi internet bersama.
Anda juga dapat mengambil ini lebih jauh, karena Anda dapat mengidentifikasi permintaan serupa, bahkan jika mereka berasal dari alamat IP yang berbeda, menunjukkan pengikisan terdistribusi (pengeruk yang menggunakan botnet atau jaringan proxy). Jika Anda mendapatkan banyak permintaan yang identik, tetapi datang dari berbagai alamat IP, Anda dapat memblokir. Sekali lagi, berhati-hatilah untuk tidak secara tidak sengaja memblokir pengguna nyata.
Ini bisa efektif terhadap pembuat layar yang menjalankan JavaScript, karena Anda bisa mendapatkan banyak informasi dari mereka.
Pertanyaan terkait tentang Security Stack Exchange:
Bagaimana cara mengidentifikasi pengguna secara unik dengan alamat IP eksternal yang sama? untuk lebih jelasnya, dan
Mengapa orang menggunakan larangan alamat IP ketika alamat IP sering berubah? untuk info tentang batasan metode ini.
Alih-alih memblokir akses sementara, gunakan Captcha:
Cara sederhana untuk menerapkan pembatasan tingkat adalah dengan memblokir sementara akses untuk waktu tertentu, namun menggunakan Captcha mungkin lebih baik, lihat bagian tentang Captcha lebih jauh ke bawah.
Membutuhkan pendaftaran & masuk
Wajibkan pembuatan akun untuk melihat konten Anda, jika ini layak untuk situs Anda. Ini adalah pencegah yang baik untuk pencakar, tetapi juga pencegah yang baik untuk pengguna nyata.
Untuk menghindari skrip membuat banyak akun, Anda harus:
Membutuhkan alamat email untuk pendaftaran, dan memverifikasi alamat email itu dengan mengirimkan tautan yang harus dibuka untuk mengaktifkan akun. Izinkan hanya satu akun per alamat email.
Membutuhkan captcha yang harus diselesaikan selama pendaftaran / pembuatan akun.
Membutuhkan pembuatan akun untuk melihat konten akan membuat pengguna dan mesin pencari menjauh; jika Anda memerlukan pembuatan akun untuk melihat artikel, pengguna akan pergi ke tempat lain.
Memblokir akses dari cloud hosting dan alamat IP layanan gesekan
Terkadang, pencakar akan dijalankan dari layanan hosting web, seperti Amazon Web Services atau GAE, atau VPSes. Batasi akses ke situs web Anda (atau tunjukkan captcha) untuk permintaan yang berasal dari alamat IP yang digunakan oleh layanan hosting awan tersebut.
Demikian pula, Anda juga dapat membatasi akses dari alamat IP yang digunakan oleh penyedia proxy atau VPN, karena pencakar dapat menggunakan server proxy tersebut untuk menghindari banyak permintaan yang terdeteksi.
Berhati-hatilah dengan memblokir akses dari server proxy dan VPN, Anda akan berdampak negatif pada pengguna nyata.
Jadikan pesan kesalahan Anda tidak jelas jika Anda memblokir
Jika Anda benar-benar memblokir / membatasi akses, Anda harus memastikan bahwa Anda tidak memberi tahu scraper apa yang menyebabkannya, sehingga memberi mereka petunjuk tentang cara memperbaiki scraper mereka. Jadi ide yang buruk adalah menampilkan halaman kesalahan dengan teks seperti:
Terlalu banyak permintaan dari alamat IP Anda, silakan coba lagi nanti.
Kesalahan, tajuk Agen Pengguna tidak ada!
Alih-alih, tampilkan pesan kesalahan yang tidak memberi tahu scraper apa penyebabnya. Sesuatu seperti ini jauh lebih baik:
[email protected]
, jika masalahnya masih ada.Ini juga jauh lebih ramah pengguna untuk pengguna nyata, jika mereka pernah melihat halaman kesalahan seperti itu. Anda juga harus mempertimbangkan menampilkan captcha untuk permintaan berikutnya alih-alih blok keras, jika pengguna sebenarnya melihat pesan kesalahan, sehingga Anda tidak memblokir dan dengan demikian menyebabkan pengguna yang sah menghubungi Anda.
Gunakan Captcha jika Anda curiga situs web Anda sedang diakses oleh pengeruk.
Captcha ("Tes Otomatis Sepenuhnya untuk Memberitahu Komputer dan Manusia terpisah") sangat efektif untuk menghentikan para pencakar. Sayangnya, mereka juga sangat efektif untuk mengganggu pengguna.
Dengan demikian, mereka berguna ketika Anda mencurigai adanya pengikis yang mungkin, dan ingin menghentikan pengikisan, tanpa juga memblokir akses jika itu bukan pengeruk, tetapi pengguna sungguhan. Anda mungkin ingin mempertimbangkan untuk menampilkan captcha sebelum mengizinkan akses ke konten jika Anda mencurigai adanya pengikis.
Hal-hal yang perlu diperhatikan saat menggunakan Captcha:
Jangan roll sendiri, gunakan sesuatu seperti reCaptcha Google : Ini jauh lebih mudah daripada menerapkan captcha sendiri, itu lebih ramah pengguna daripada beberapa solusi teks kabur dan bengkok Anda mungkin datang dengan diri Anda sendiri (pengguna sering hanya perlu mencentang kotak ), dan itu juga jauh lebih sulit untuk diselesaikan oleh seorang scripter daripada gambar sederhana yang disajikan dari situs Anda
Jangan menyertakan solusi untuk captcha di markup HTML: Saya sebenarnya telah melihat satu situs web yang memiliki solusi untuk captcha di halaman itu sendiri , (meskipun cukup tersembunyi) sehingga membuatnya tidak berguna. Jangan lakukan hal seperti ini. Sekali lagi, gunakan layanan seperti reCaptcha, dan Anda tidak akan memiliki masalah seperti ini (jika Anda menggunakannya dengan benar).
Captcha dapat dipecahkan secara massal: Ada layanan penyelesaian captcha di mana sebenarnya, dibayar rendah, manusia memecahkan captcha dalam jumlah besar. Sekali lagi, menggunakan reCaptcha adalah ide yang bagus di sini, karena mereka memiliki perlindungan (seperti waktu yang relatif singkat bagi pengguna untuk menyelesaikan captcha). Layanan semacam ini tidak mungkin digunakan kecuali data Anda benar-benar berharga.
Sajikan konten teks Anda sebagai gambar
Anda dapat merender teks ke sisi server gambar, dan menyajikannya untuk ditampilkan, yang akan menghalangi pencakar sederhana mengekstraksi teks.
Namun, ini buruk untuk pembaca layar, mesin pencari, kinerja, dan hampir semua hal lainnya. Ini juga ilegal di beberapa tempat (karena aksesibilitas, misalnya Undang-Undang Amerika dengan Disabilitas), dan juga mudah untuk menghindari beberapa OCR, jadi jangan lakukan itu.
Anda dapat melakukan sesuatu yang mirip dengan sprite CSS, tetapi itu mengalami masalah yang sama.
Jangan memaparkan dataset lengkap Anda:
Jika memungkinkan, jangan berikan cara untuk skrip / bot untuk mendapatkan semua dataset Anda. Sebagai contoh: Anda memiliki situs berita, dengan banyak artikel individual. Anda dapat membuat artikel-artikel itu hanya dapat diakses dengan mencarinya melalui pencarian di situs, dan, jika Anda tidak memiliki daftar semua artikel di situs dan URL mereka di mana saja, artikel-artikel itu hanya akan dapat diakses dengan menggunakan pencarian fitur. Ini berarti bahwa skrip yang ingin mendapatkan semua artikel dari situs Anda harus melakukan pencarian untuk semua frasa yang mungkin muncul dalam artikel Anda untuk menemukan semuanya, yang akan memakan waktu, sangat tidak efisien, dan mudah-mudahan akan membuat scraper menyerah.
Ini tidak akan efektif jika:
example.com/article.php?articleId=12345
. Ini (dan hal-hal serupa) yang akan memungkinkan pencakar untuk hanya mengulangi semuaarticleId
dan meminta semua artikel seperti itu.Jangan memaparkan API, titik akhir, dan hal-hal serupa Anda:
Pastikan Anda tidak memaparkan API apa pun, bahkan tanpa sengaja. Misalnya, jika Anda menggunakan AJAX atau permintaan jaringan dari dalam Adobe Flash atau Java Applets (God forbid!) Untuk memuat data Anda, sepele untuk melihat permintaan jaringan dari halaman dan mencari tahu ke mana permintaan itu akan pergi, dan kemudian merekayasa balik dan menggunakan titik akhir tersebut dalam program scraper. Pastikan Anda mengaburkan titik akhir Anda dan membuatnya sulit untuk digunakan orang lain, seperti yang dijelaskan.
Untuk mencegah parser dan pencakar HTML:
Karena parser HTML bekerja dengan mengekstraksi konten dari halaman berdasarkan pola yang dapat diidentifikasi dalam HTML, kami dapat dengan sengaja mengubah pola-pola itu di bawah untuk memecahkan pengikis ini, atau bahkan mengacaukannya. Sebagian besar tips ini juga berlaku untuk pencakar lain seperti laba-laba dan pembuat layar juga.
Ubah HTML Anda sesering mungkin
Scrapers yang memproses HTML secara langsung melakukannya dengan mengekstraksi konten dari bagian spesifik dan dapat diidentifikasi dari halaman HTML Anda. Misalnya: Jika semua halaman di situs web Anda memiliki
div
idarticle-content
, yang berisi teks artikel, maka sepele untuk menulis skrip untuk mengunjungi semua halaman artikel di situs Anda, dan mengekstrak teks konten dariarticle-content
div pada setiap halaman artikel, dan voila, scraper memiliki semua artikel dari situs Anda dalam format yang dapat digunakan kembali di tempat lain.Jika Anda sering mengubah HTML dan struktur halaman Anda, pencakar seperti itu tidak akan berfungsi lagi.
Anda dapat sering mengubah id dan kelas elemen dalam HTML Anda, bahkan mungkin secara otomatis. Jadi, jika Anda
div.article-content
menjadi sepertidiv.a4c36dda13eaf0
, dan berubah setiap minggu, scraper pada awalnya akan berfungsi dengan baik, tetapi akan rusak setelah seminggu. Pastikan untuk mengubah panjang id / kelas Anda juga, jika tidak scraper akan menggunakandiv.[any-14-characters]
untuk menemukan div yang diinginkan sebagai gantinya. Waspadalah terhadap lubang serupa lainnya juga ..Jika tidak ada cara untuk menemukan konten yang diinginkan dari markup, scraper akan melakukannya dari cara HTML terstruktur. Jadi, jika semua halaman artikel Anda sama dalam setiap
div
bagiandiv
yang muncul setelahh1
konten artikel, pencakar akan mendapatkan konten artikel berdasarkan itu. Sekali lagi, untuk memecahkan ini, Anda dapat menambah / menghapus markup tambahan ke HTML Anda, secara berkala dan acak, misalnya. menambahkandiv
s atau s ekstraspan
. Dengan pemrosesan HTML sisi server modern, ini seharusnya tidak terlalu sulit.Hal-hal yang harus diperhatikan:
Ini akan membosankan dan sulit untuk diterapkan, dipelihara, dan di-debug.
Anda akan menghalangi caching. Terutama jika Anda mengubah id atau kelas elemen HTML Anda, ini akan membutuhkan perubahan yang sesuai dalam file CSS dan JavaScript Anda, yang berarti bahwa setiap kali Anda mengubahnya, mereka harus diunduh ulang oleh browser. Ini akan menghasilkan waktu pemuatan halaman yang lebih lama untuk pengunjung yang berulang, dan peningkatan beban server. Jika Anda hanya mengubahnya seminggu sekali, itu tidak akan menjadi masalah besar.
Pengikis yang cerdik masih bisa mendapatkan konten Anda dengan menyimpulkan di mana konten yang sebenarnya, misalnya. dengan mengetahui bahwa satu blok teks besar pada halaman tersebut kemungkinan merupakan artikel yang sebenarnya. Ini memungkinkan untuk tetap menemukan & mengekstrak data yang diinginkan dari halaman. Boilerpipe melakukan ini.
Intinya, pastikan skrip tidak mudah menemukan konten yang sebenarnya diinginkan untuk setiap halaman yang serupa.
Lihat juga Cara mencegah perayap tergantung pada XPath dari mendapatkan konten halaman untuk detail tentang bagaimana ini dapat diimplementasikan dalam PHP.
Ubah HTML Anda berdasarkan lokasi pengguna
Ini agak mirip dengan tip sebelumnya. Jika Anda menyajikan HTML berbeda berdasarkan lokasi / negara pengguna Anda (ditentukan oleh alamat IP), ini dapat memecah pengikis yang dikirimkan ke pengguna. Misalnya, jika seseorang menulis aplikasi seluler yang mengikis data dari situs Anda, itu akan berfungsi dengan baik pada awalnya, tetapi rusak ketika itu sebenarnya didistribusikan kepada pengguna, karena pengguna tersebut mungkin berada di negara yang berbeda, dan dengan demikian mendapatkan HTML yang berbeda, yang mana scraper tertanam tidak dirancang untuk dikonsumsi.
Sering-seringlah mengubah HTML Anda, aktifkan sekrup dengan para pencakar dengan melakukannya!
Contoh: Anda memiliki fitur pencarian di situs web Anda, yang terletak di
example.com/search?query=somesearchquery
, yang mengembalikan HTML berikut:Seperti yang Anda duga ini mudah untuk dikikis: semua yang perlu dilakukan pengikis adalah menekan URL pencarian dengan kueri, dan ekstrak data yang diinginkan dari HTML yang dikembalikan. Selain mengubah HTML secara berkala seperti dijelaskan di atas, Anda juga dapat meninggalkan markup lama dengan id dan kelas lama, menyembunyikannya dengan CSS, dan mengisinya dengan data palsu, sehingga meracuni scraper. Begini cara halaman hasil pencarian dapat diubah:
Ini berarti bahwa pencakar yang ditulis untuk mengekstraksi data dari HTML berdasarkan kelas atau ID akan terus bekerja, tetapi mereka akan mendapatkan data palsu atau bahkan iklan, data yang tidak akan pernah dilihat pengguna nyata, karena mereka disembunyikan dengan CSS.
Persetan dengan scraper: Masukkan data honeypot palsu dan tidak terlihat ke halaman Anda
Menambahkan ke contoh sebelumnya, Anda dapat menambahkan item honeypot tidak terlihat ke HTML Anda untuk menangkap pencakar. Contoh yang dapat ditambahkan ke halaman hasil pencarian yang dijelaskan sebelumnya:
Pengikis yang ditulis untuk mendapatkan semua hasil pencarian akan mengambil ini, sama seperti yang lainnya, hasil pencarian nyata pada halaman, dan mengunjungi tautan, mencari konten yang diinginkan. Manusia sejati bahkan tidak akan pernah melihatnya di tempat pertama (karena disembunyikan dengan CSS), dan tidak akan mengunjungi tautan. Laba-laba asli dan diinginkan seperti Google tidak akan mengunjungi tautan karena Anda tidak diizinkan
/scrapertrap/
di robots.txt Anda.Anda dapat membuat Anda
scrapertrap.php
melakukan sesuatu seperti memblokir akses untuk alamat IP yang mengunjunginya atau memaksa captcha untuk semua permintaan selanjutnya dari IP itu.Jangan lupa untuk melarang honeypot Anda (
/scrapertrap/
) dalam file robots.txt Anda sehingga bot mesin pencari tidak jatuh ke dalamnya.Anda dapat / harus menggabungkan ini dengan tip sebelumnya untuk mengubah HTML Anda sesering mungkin.
Ubah ini juga sering, karena pencakar akhirnya akan belajar untuk menghindarinya. Ubah URL dan teks honeypot. Juga ingin mempertimbangkan untuk mengubah CSS sebaris yang digunakan untuk bersembunyi, dan menggunakan atribut ID dan CSS eksternal sebagai gantinya, karena pencakar akan belajar untuk menghindari apa pun yang memiliki
style
atribut dengan CSS yang digunakan untuk menyembunyikan konten. Coba juga hanya untuk mengaktifkannya kadang-kadang, jadi scraper bekerja pada awalnya, tetapi rusak setelah beberapa saat. Ini juga berlaku untuk tip sebelumnya.Orang jahat dapat mencegah akses bagi pengguna nyata dengan membagikan tautan ke honeypot Anda, atau bahkan menyematkan tautan itu di suatu tempat sebagai gambar (mis. Di forum). Ubah URL sesering mungkin, dan buat waktu larangan relatif singkat.
Sajikan data palsu dan tidak berguna jika Anda mendeteksi pengikis
Jika Anda mendeteksi apa yang jelas-jelas merupakan pengikis, Anda dapat menyajikan data palsu dan tidak berguna; ini akan merusak data yang diperoleh scraper dari situs web Anda. Anda juga harus membuat tidak mungkin untuk membedakan data palsu tersebut dari data nyata, sehingga pencakar tidak tahu bahwa mereka sedang kacau.
Sebagai contoh: Anda memiliki situs web berita; jika Anda mendeteksi scraper, alih-alih memblokir akses, sajikan artikel palsu, yang dibuat secara acak , dan ini akan meracuni data yang diperoleh scraper. Jika Anda membuat data palsu tidak dapat dibedakan dari yang asli, Anda akan mempersulit pencakar untuk mendapatkan apa yang mereka inginkan, yaitu data aktual dan nyata.
Jangan terima permintaan jika Agen Pengguna kosong / hilang
Seringkali, pengikis malas menulis tidak akan mengirim header Agen Pengguna dengan permintaan mereka, sedangkan semua browser serta spider mesin pencari akan.
Jika Anda mendapatkan permintaan di mana tajuk Agen Pengguna tidak ada, Anda dapat menampilkan captcha, atau cukup memblokir atau membatasi akses. (Atau sajikan data palsu seperti yang dijelaskan di atas, atau yang lainnya ..)
Itu sepele untuk spoof, tetapi sebagai tindakan terhadap pencakar yang ditulis dengan buruk, itu layak diterapkan.
Jangan terima permintaan jika Agen Pengguna adalah pengikis yang umum; daftar hitam yang digunakan oleh pencakar
Dalam beberapa kasus, pencakar akan menggunakan Agen Pengguna yang tidak menggunakan spider browser atau mesin pencari nyata, seperti:
Jika Anda menemukan bahwa string Agen Pengguna tertentu digunakan oleh pencakar di situs Anda, dan itu tidak digunakan oleh browser nyata atau spider yang sah, Anda juga dapat menambahkannya ke daftar hitam Anda.
Jika tidak meminta aset (CSS, gambar), itu bukan browser nyata.
Peramban asli akan (hampir selalu) meminta dan mengunduh aset seperti gambar dan CSS. Pengurai dan pencakar HTML tidak akan melakukannya karena mereka hanya tertarik pada halaman aktual dan kontennya.
Anda bisa mencatat permintaan ke aset Anda, dan jika Anda melihat banyak permintaan hanya untuk HTML, itu bisa berupa pengikis.
Waspadalah bahwa bot mesin pencari, perangkat seluler kuno, pembaca layar, dan perangkat yang tidak terkonfigurasi juga tidak dapat meminta aset.
Gunakan dan minta cookie; menggunakannya untuk melacak tindakan pengguna dan scraper.
Anda dapat meminta cookie diaktifkan untuk melihat situs web Anda. Ini akan mencegah penulis scraper yang tidak berpengalaman dan pemula, namun mudah bagi seorang scraper untuk mengirim cookie. Jika Anda benar-benar menggunakan dan meminta mereka, Anda dapat melacak tindakan pengguna dan scraper, dan dengan demikian menerapkan pembatasan-tingkat, pemblokiran, atau menampilkan captcha pada pengguna-per-pengguna dan bukan per-IP.
Misalnya: ketika pengguna melakukan pencarian, atur cookie pengidentifikasi unik. Ketika halaman hasil dilihat, verifikasi cookie itu. Jika pengguna membuka semua hasil pencarian (Anda bisa tahu dari cookie), maka itu mungkin scraper.
Menggunakan cookie mungkin tidak efektif, karena pencakar dapat mengirim cookie dengan permintaan mereka juga, dan membuangnya sesuai kebutuhan. Anda juga akan mencegah akses bagi pengguna nyata yang menonaktifkan cookie, jika situs Anda hanya berfungsi dengan cookie.
Perhatikan bahwa jika Anda menggunakan JavaScript untuk menetapkan dan mengambil cookie, Anda akan memblokir pencakar yang tidak menjalankan JavaScript, karena mereka tidak dapat mengambil dan mengirim cookie dengan permintaan mereka.
Gunakan JavaScript + Ajax untuk memuat konten Anda
Anda bisa menggunakan JavaScript + AJAX untuk memuat konten Anda setelah halaman itu sendiri memuat. Ini akan membuat konten tidak dapat diakses oleh parser HTML yang tidak menjalankan JavaScript. Ini sering merupakan pencegah yang efektif bagi pemula dan pemrogram berpengalaman menulis pencakar.
Hati-hati terhadap:
Menggunakan JavaScript untuk memuat konten yang sebenarnya akan menurunkan pengalaman dan kinerja pengguna
Mesin pencari juga tidak dapat menjalankan JavaScript, sehingga mencegah mereka mengindeks konten Anda. Ini mungkin bukan masalah untuk halaman hasil pencarian, tetapi mungkin untuk hal-hal lain, seperti halaman artikel.
Mengaburkan markup Anda, permintaan jaringan dari skrip, dan yang lainnya.
Jika Anda menggunakan Ajax dan JavaScript untuk memuat data Anda, hapus data yang ditransfer. Sebagai contoh, Anda bisa menyandikan data di server (dengan sesuatu yang sesederhana base64 atau lebih kompleks), lalu mendekode dan menampilkannya pada klien, setelah mengambil melalui Ajax. Ini berarti bahwa seseorang yang memeriksa lalu lintas jaringan tidak akan langsung melihat bagaimana halaman Anda bekerja dan memuat data, dan itu akan lebih sulit bagi seseorang untuk secara langsung meminta data permintaan dari titik akhir Anda, karena mereka harus merekayasa balik algoritma descrambling Anda.
Jika Anda menggunakan Ajax untuk memuat data, Anda harus membuatnya sulit untuk menggunakan titik akhir tanpa memuat halaman terlebih dahulu, misalnya dengan memerlukan beberapa kunci sesi sebagai parameter, yang dapat Anda tanam dalam JavaScript atau HTML Anda.
Anda juga dapat menyematkan data yang dikaburkan secara langsung di halaman HTML awal dan menggunakan JavaScript untuk menghapus dan menampilkannya, yang akan menghindari permintaan jaringan tambahan. Melakukan hal ini akan membuat jauh lebih sulit untuk mengekstraksi data menggunakan parser khusus HTML yang tidak menjalankan JavaScript, karena yang menulis scraper harus membalikkan JavaScript Anda (yang juga harus Anda hapuskan).
Anda mungkin ingin mengubah metode kebingungan Anda secara teratur, untuk memecahkan pencakar yang telah menemukan jawabannya.
Ada beberapa kelemahan untuk melakukan sesuatu seperti ini, meskipun:
Ini akan membosankan dan sulit untuk diterapkan, dipelihara, dan di-debug.
Ini tidak akan efektif terhadap pencakar dan pembuat layar yang benar-benar menjalankan JavaScript dan kemudian mengekstrak datanya. (Namun, parser HTML paling sederhana tidak menjalankan JavaScript)
Ini akan membuat situs Anda tidak berfungsi untuk pengguna nyata jika mereka menonaktifkan JavaScript.
Kinerja dan waktu pemuatan laman akan berkurang.
Non-Teknis:
Beri tahu orang-orang untuk tidak mengorek, dan beberapa orang akan menghormatinya
Temukan seorang pengacara
Jadikan data Anda tersedia, berikan API:
Anda dapat membuat data Anda dengan mudah tersedia dan memerlukan atribusi dan tautan kembali ke situs Anda. Mungkin mengenakan biaya $$$ untuk itu.
Lain-lain:
Ada juga layanan perlindungan goresan komersial, seperti anti-scraping oleh Cloudflare atau Distill Networks (Detail tentang cara kerjanya di sini ), yang melakukan hal-hal ini, dan lebih banyak untuk Anda.
Temukan keseimbangan antara kegunaan pengguna nyata dan anti-pengikis: Segala sesuatu yang Anda lakukan akan memengaruhi pengalaman pengguna secara negatif dalam satu atau lain cara, temukan kompromi.
Jangan lupa situs dan aplikasi seluler Anda. Jika Anda memiliki aplikasi seluler, itu juga bisa screenscraped, dan lalu lintas jaringan dapat diperiksa untuk menentukan titik akhir REST yang digunakannya.
Pengikis dapat mengikis pengikis lain: Jika ada satu situs web yang memiliki konten yang dikikis dari Anda, pengikis lain dapat mengikis dari situs web pengikis itu.
Bacaan lebih lanjut:
Artikel Wikipedia tentang pengikisan Web . Banyak detail tentang teknologi yang terlibat dan berbagai jenis scraper web.
Menghentikan skrip untuk membanting situs web Anda ratusan kali per detik . T & J pada masalah yang sangat mirip - bot memeriksa situs web dan membeli barang segera setelah mereka mulai dijual. Banyak info yang relevan, khususnya. pada Captcha dan pembatasan tingkat.
sumber
A real browser will (almost always) request and download assets such as images and CSS
juga berlaku untuk pembaca aksesibilitas? CAPTCHA rusak sehingga setidaknya layanan profesional mungkin tidak terhalang olehnya. Penggunaan cookie memerlukan pemberitahuan / persetujuan di UE.Find a balance between usability for real users and scraper-proofness
juga menyeimbangkan waktu pemrograman / kompleksitas vs manfaat finansial.Saya akan menganggap bahwa Anda telah mengatur
robots.txt
.Seperti yang disebutkan orang lain, pencakar dapat memalsukan hampir setiap aspek kegiatan mereka, dan mungkin sangat sulit untuk mengidentifikasi permintaan yang datang dari orang jahat.
Saya akan mempertimbangkan:
/jail.html
,.robots.txt
(sehingga laba-laba yang terhormat tidak akan pernah mengunjungi).display: none
)./jail.html
.Ini mungkin membantu Anda dengan cepat mengidentifikasi permintaan dari pencakar yang mengabaikan Anda
robots.txt
.Anda mungkin juga ingin membuat Anda
/jail.html
sebuah seluruh situs keseluruhan yang memiliki yang sama, markup yang tepat sebagai halaman normal, tetapi dengan data palsu (/jail/album/63ajdka
,/jail/track/3aads8
, dll). Dengan cara ini, pencakar buruk tidak akan diberi tahu "input yang tidak biasa" sampai Anda memiliki kesempatan untuk memblokir mereka sepenuhnya.sumber
Tuntut mereka.
Serius: Jika Anda punya uang, bicaralah dengan pengacara muda yang baik, baik, yang tahu jalan di Internet. Anda benar-benar dapat melakukan sesuatu di sini. Bergantung pada di mana situs tersebut berpusat, Anda dapat meminta pengacara untuk menulis gencatan & penghentian atau yang setara di negara Anda. Kamu mungkin setidaknya bisa menakuti bajingan.
Dokumentasikan penyisipan nilai dummy Anda. Masukkan nilai-nilai dummy yang jelas (tetapi tidak jelas) menunjukkan kepada Anda. Saya pikir ini adalah praktik umum dengan perusahaan buku telepon, dan di sini di Jerman, saya pikir ada beberapa contoh ketika peniru ditangkap melalui entri palsu yang mereka salin 1: 1.
Akan memalukan jika ini akan mendorong Anda untuk mengacaukan kode HTML Anda, menyeret ke bawah SEO, validitas dan hal-hal lain (meskipun sistem templating yang menggunakan struktur HTML yang sedikit berbeda pada setiap permintaan untuk halaman yang identik mungkin sudah banyak membantu melawan pencakar yang selalu mengandalkan struktur HTML dan nama kelas / ID untuk mengeluarkan konten.)
Kasus-kasus seperti inilah yang baik untuk undang-undang hak cipta. Merobek pekerjaan jujur orang lain untuk menghasilkan uang adalah sesuatu yang harus Anda lawan.
sumber
Sebenarnya tidak ada yang dapat Anda lakukan untuk mencegah hal ini sepenuhnya. Scrapers dapat memalsukan agen penggunanya, menggunakan beberapa alamat IP, dll. Dan muncul sebagai pengguna biasa. Satu-satunya hal yang dapat Anda lakukan adalah membuat teks tidak tersedia pada saat halaman dimuat - membuatnya dengan gambar, flash, atau memuatnya dengan JavaScript. Namun, dua yang pertama adalah ide yang buruk, dan yang terakhir akan menjadi masalah aksesibilitas jika JavaScript tidak diaktifkan untuk beberapa pengguna reguler Anda.
Jika mereka benar-benar membanting situs Anda dan menelusuri semua halaman Anda, Anda dapat melakukan semacam pembatasan tingkat.
Ada beberapa harapan. Scrapers mengandalkan data situs Anda dalam format yang konsisten. Jika Anda bisa mengacaknya, entah bagaimana itu bisa merusak scraper mereka. Hal-hal seperti mengubah ID atau nama kelas elemen halaman pada setiap beban, dll. Tapi itu banyak pekerjaan yang harus dilakukan dan saya tidak yakin apakah itu layak. Dan bahkan kemudian, mereka mungkin bisa mengatasinya dengan dedikasi yang cukup.
sumber
Berikan API XML untuk mengakses data Anda; dengan cara yang mudah digunakan. Jika orang-orang menginginkan data Anda, mereka akan mendapatkannya, Anda sebaiknya keluar semua.
Dengan cara ini Anda dapat memberikan subset fungsionalitas secara efektif, memastikan bahwa, paling tidak, pencakar tidak akan membuang permintaan HTTP dan sejumlah besar bandwidth.
Maka yang harus Anda lakukan adalah meyakinkan orang-orang yang ingin data Anda menggunakan API. ;)
sumber
Maaf, ini sangat sulit untuk dilakukan ...
Saya menyarankan agar Anda dengan sopan meminta mereka untuk tidak menggunakan konten Anda (jika konten Anda memiliki hak cipta).
Jika ya dan mereka tidak menghapusnya, maka Anda dapat mengambil tindakan selanjutnya dan mengirimkannya berhenti dan berhenti .
Secara umum, apa pun yang Anda lakukan untuk mencegah goresan mungkin akan berakhir dengan efek yang lebih negatif, misalnya aksesibilitas, bot / laba-laba, dll.
sumber
Oke, seperti yang dikatakan semua posting, jika Anda ingin membuatnya ramah mesin maka bot dapat mengikis dengan pasti.
Tetapi Anda masih bisa melakukan beberapa hal, dan mungkin efektif untuk 60-70% menggores bot.
Buat skrip checker seperti di bawah ini.
Jika alamat IP tertentu dikunjungi sangat cepat maka setelah beberapa kunjungan (5-10) masukkan alamat IP + informasi browser dalam file atau basis data.
Langkah selanjutnya
(Ini akan menjadi proses latar belakang dan berjalan sepanjang waktu atau dijadwalkan setelah beberapa menit.) Buat satu skrip lain yang akan terus memeriksa alamat IP yang mencurigakan itu.
Kasus 1. Jika Agen pengguna adalah mesin pencari yang dikenal seperti Google, Bing , Yahoo (Anda dapat menemukan informasi lebih lanjut tentang agen pengguna dengan googling). Maka Anda harus melihat http://www.iplists.com/ . Daftar ini dan cobalah untuk mencocokkan pola. Dan jika itu tampak seperti agen-pengguna palsu maka mintalah untuk mengisi CAPTCHA pada kunjungan berikutnya. (Anda perlu melakukan riset lebih banyak tentang bot alamat IP. Saya tahu ini dapat dicapai dan juga mencoba whois dari alamat IP. Ini dapat membantu.)
Kasus 2. Tidak ada agen pengguna bot pencarian: Cukup minta untuk mengisi CAPTCHA pada kunjungan berikutnya.
sumber
Jawaban telat - dan juga jawaban ini mungkin bukan jawaban yang ingin Anda dengar ...
Saya sendiri sudah menulis banyak (puluhan) pencakar data-mining khusus yang berbeda . (hanya karena saya suka filosofi "data terbuka").
Berikut ini sudah banyak saran dalam jawaban lain - sekarang saya akan memainkan peran advokat iblis dan akan memperluas dan / atau memperbaiki efektivitasnya.
Pertama:
Mencoba menggunakan beberapa hambatan teknis tidak sebanding dengan masalahnya, disebabkan:
HMTL polos - cara termudah adalah menguraikan halaman HTML biasa, dengan kelas struktur dan css yang terdefinisi dengan baik. Misalnya cukup memeriksa elemen dengan Firebug, dan menggunakan Xpaths yang tepat, dan / atau jalur CSS di scraper saya.
Anda dapat menghasilkan struktur HTML secara dinamis dan juga, Anda dapat menghasilkan secara dinamis nama-nama kelas CSS (dan CSS itu sendiri juga) (misalnya dengan menggunakan beberapa nama kelas acak) - tetapi
Anda tidak dapat mengubah struktur untuk setiap respons, karena pengguna reguler Anda akan membenci Anda. Juga, ini akan menyebabkan lebih banyak masalah bagi Anda (pemeliharaan) bukan untuk scraper. Jalur XPath atau CSS ditentukan oleh skrip goresan secara otomatis dari konten yang dikenal.
Ajax - sedikit lebih sulit pada awalnya, tetapi berkali-kali mempercepat proses pengikisan :) - mengapa?
Ketika menganalisis permintaan dan tanggapan, saya hanya mengatur server proxy saya sendiri (ditulis dalam perl) dan firefox saya menggunakannya. Tentu saja, karena itu adalah proxy saya sendiri - benar-benar tersembunyi - server target melihatnya sebagai browser biasa. (Jadi, tidak ada header X-Forwarded-for dan semacamnya). Berdasarkan log proksi, sebagian besar dimungkinkan untuk menentukan "logika" dari permintaan ajax, misalnya saya bisa melewatkan sebagian besar pengetikan html, dan cukup gunakan respons ajax yang terstruktur dengan baik (kebanyakan dalam format JSON).
Jadi, ajax tidak banyak membantu ...
Beberapa yang lebih rumit adalah halaman yang menggunakan banyak fungsi javascript .
Di sini dimungkinkan untuk menggunakan dua metode dasar:
Pengikisan seperti ini lambat (pengikisan dilakukan seperti pada peramban biasa), tetapi memang demikian
The User-Agent filtering berdasarkan tidak membantu sama sekali. Setiap penambang data yang serius akan mengaturnya ke orang yang benar di scraper-nya.
Membutuhkan Login - tidak membantu. Cara termudah untuk mengalahkannya (tanpa menganalisis dan / atau membuat skrip-protokol masuk) hanya masuk ke situs sebagai pengguna biasa, menggunakan Mozilla dan setelah hanya menjalankan scraper berbasis Mozrepl ...
Ingat, login yang diperlukan membantu untuk bot anonim, tetapi tidak membantu terhadap seseorang yang ingin mengorek data Anda. Dia hanya mendaftarkan dirinya ke situs Anda sebagai pengguna biasa.
Menggunakan bingkai juga tidak terlalu efektif. Ini digunakan oleh banyak layanan film langsung dan tidak terlalu sulit dikalahkan. Frame hanyalah salah satu halaman HTML / Javascript yang diperlukan untuk menganalisis ... Jika data sepadan dengan masalah - penambang data akan melakukan analisis yang diperlukan.
Pembatasan berbasis IP sama sekali tidak efektif - di sini ada terlalu banyak server proxy publik dan juga di sini adalah TOR ... :) Tidak memperlambat pengikisan (untuk seseorang yang benar - benar menginginkan data Anda).
Sangat sulit untuk mengikis data yang disembunyikan dalam gambar. (misalnya, hanya mengubah data menjadi gambar sisi server). Mempekerjakan "tesseract" (OCR) membantu berkali-kali - tetapi jujur - data harus sebanding dengan masalah pengikis. (yang berkali-kali tidak layak).
Di sisi lain, pengguna Anda akan membenci Anda karena ini. Saya sendiri, (bahkan ketika tidak mengikis) membenci situs web yang tidak memungkinkan menyalin konten halaman ke clipboard (karena informasinya ada di gambar, atau (yang konyol) mencoba menyambung ke klik kanan beberapa acara Javascript khusus.: )
Yang paling sulit adalah situs yang menggunakan java applet atau flash , dan applet menggunakan permintaan https aman sendiri secara internal . Tapi pikirkan dua kali - betapa bahagianya pengguna iPhone Anda ...;). Karena itu, saat ini sangat sedikit situs yang menggunakannya. Saya sendiri, memblokir semua konten flash di browser saya (dalam sesi browsing biasa) - dan tidak pernah menggunakan situs yang bergantung pada Flash.
Tonggak pencapaian Anda mungkin ..., jadi Anda dapat mencoba metode ini - ingat - Anda mungkin akan kehilangan sebagian pengguna Anda. Juga ingat, beberapa file SWF dapat didekompilasi. ;)
Captcha (yang bagus - seperti reCaptcha) sangat membantu - tetapi pengguna Anda akan membenci Anda ... - bayangkan saja, bagaimana pengguna Anda akan mencintai Anda ketika mereka perlu menyelesaikan beberapa captcha di semua halaman yang menampilkan informasi tentang artis musik.
Mungkin tidak perlu melanjutkan - Anda sudah masuk ke dalam gambar.
Sekarang apa yang harus Anda lakukan:
Ingat: Hampir tidak mungkin menyembunyikan data Anda, jika Anda di sisi lain ingin mempublikasikannya (dengan cara yang bersahabat) kepada pengguna biasa Anda.
Begitu,
Berpikir dua kali sebelum Anda akan mencoba menggunakan beberapa hambatan teknis.
Alih-alih mencoba memblokir penambang data, tambahkan saja upaya lebih kegunaan situs web Anda. Pengguna Anda akan mencintai Anda. Waktu (& energi) yang diinvestasikan ke dalam hambatan teknis biasanya tidak bernilai - lebih baik menghabiskan waktu untuk membuat situs web yang lebih baik ...
Juga, pencuri data tidak seperti pencuri normal.
Jika Anda membeli alarm rumah murah dan menambahkan peringatan "rumah ini terhubung ke polisi" - banyak pencuri bahkan tidak akan mencoba masuk. Karena satu langkah salah olehnya - dan dia masuk penjara ...
Jadi, Anda berinvestasi hanya beberapa dolar, tetapi pencuri berinvestasi dan mengambil risiko besar.
Tetapi pencuri data tidak memiliki risiko seperti itu. sebaliknya - jika Anda melakukan satu langkah yang salah (mis. jika Anda memperkenalkan beberapa BUG sebagai akibat dari hambatan teknis), Anda akan kehilangan pengguna Anda. Jika bot goresan tidak akan berfungsi untuk pertama kalinya, tidak ada yang terjadi - penambang data hanya akan mencoba pendekatan lain dan / atau akan men-debug skrip.
Dalam hal ini, Anda perlu berinvestasi lebih banyak - dan pengikis berinvestasi jauh lebih sedikit.
Coba pikirkan di mana Anda ingin menginvestasikan waktu & energi Anda ...
Ps: bahasa Inggris bukan bahasa ibu saya - jadi maafkan bahasa Inggris saya yang rusak ...
sumber
Dari perspektif teknologi: Hanya memodelkan apa yang dilakukan Google ketika Anda menekannya dengan terlalu banyak pertanyaan sekaligus. Itu harus menghentikan banyak hal.
Dari perspektif hukum: Kedengarannya seperti data yang Anda terbitkan bukan milik. Berarti Anda menerbitkan nama dan statistik dan informasi lain yang tidak dapat dilindungi hak cipta.
Jika ini masalahnya, para pencakar tidak melanggar hak cipta dengan mendistribusikan kembali informasi Anda tentang nama artis dll. Namun, mereka mungkin melanggar hak cipta ketika memuat situs Anda ke dalam memori karena situs Anda mengandung elemen yang dapat dilindungi hak cipta (seperti tata letak, dll.).
Saya sarankan membaca tentang Facebook v. Power.com dan melihat argumen yang digunakan Facebook untuk menghentikan pengikisan layar. Ada banyak cara hukum yang bisa Anda coba untuk menghentikan seseorang dari menggores situs web Anda. Mereka bisa jauh menjangkau dan imajinatif. Terkadang pengadilan membeli argumen. Terkadang tidak.
Tetapi, dengan asumsi Anda menerbitkan informasi domain publik yang tidak dapat dilindungi hak cipta seperti nama dan statistik dasar ... Anda harus membiarkannya menggunakan nama kebebasan berbicara dan data terbuka. Yaitu, tentang apa web itu.
sumber
Hal-hal yang mungkin bekerja melawan pencakar pemula:
Hal-hal yang akan membantu secara umum:
Hal-hal yang akan membantu tetapi akan membuat pengguna Anda membenci Anda:
sumber
Saya telah melakukan banyak pengikisan web dan merangkum beberapa teknik untuk menghentikan pengikis web di blog saya berdasarkan apa yang menurut saya menjengkelkan.
Ini adalah pertukaran antara pengguna dan pencakar Anda. Jika Anda membatasi IP, gunakan CAPTCHA, memerlukan login, dll, Anda membuat sulit bagi para pencakar. Tetapi ini juga dapat mengusir pengguna asli Anda.
sumber
Sayangnya, opsi terbaik Anda cukup manual: Cari pola lalu lintas yang Anda yakini mengindikasikan pengikisan dan pelarangan alamat IP mereka.
Karena Anda berbicara tentang situs publik maka membuat situs yang ramah mesin pencari juga akan membuat situs tersebut ramah terhadap pengikisan. Jika mesin pencari dapat merayapi dan mengikis situs Anda, maka pengikis jahat juga bisa. Ini garis yang bagus untuk berjalan.
sumber
Tentu itu mungkin. Untuk kesuksesan 100%, buat situs Anda offline.
Pada kenyataannya, Anda dapat melakukan beberapa hal yang membuat goresan sedikit lebih sulit. Google melakukan pengecekan browser untuk memastikan Anda bukan robot yang menggores hasil pencarian (walaupun ini, seperti kebanyakan hal lainnya, dapat dipalsukan).
Anda dapat melakukan hal-hal seperti memerlukan beberapa detik antara koneksi pertama ke situs Anda, dan klik berikutnya. Saya tidak yakin apa waktu yang ideal atau bagaimana tepatnya melakukannya, tapi itu ide lain.
Saya yakin ada beberapa orang lain yang memiliki pengalaman lebih banyak, tetapi saya harap ide-ide itu setidaknya sedikit membantu.
sumber
Ada beberapa hal yang dapat Anda lakukan untuk mencoba dan mencegah goresan layar. Beberapa tidak sangat efektif, sementara yang lain (CAPTCHA), tetapi menghambat kegunaan. Anda harus ingat juga bahwa hal itu dapat menghalangi pencakar situs yang sah, seperti indeks mesin pencari.
Namun, saya berasumsi bahwa jika Anda tidak ingin menghapusnya, itu berarti Anda juga tidak ingin mesin pencari mengindeksnya.
Berikut beberapa hal yang bisa Anda coba:
Jika saya harus melakukan ini, saya mungkin akan menggunakan kombinasi dari tiga yang terakhir, karena mereka meminimalkan ketidaknyamanan bagi pengguna yang sah. Namun, Anda harus menerima bahwa Anda tidak akan dapat memblokir semua orang dengan cara ini dan begitu seseorang mengetahui cara menyiasatinya, mereka akan dapat mengikisnya selamanya. Anda kemudian dapat mencoba untuk memblokir alamat IP mereka saat Anda menemukannya, saya kira.
sumber
Bukan jawaban yang mungkin Anda inginkan, tetapi mengapa menyembunyikan apa yang Anda coba publikasikan?
sumber
Metode Satu (Hanya Situs Kecil):
Sajikan data yang dienkripsi / disandikan.
Saya Scape web menggunakan python (urllib, permintaan, beautifulSoup dll ...) dan menemukan banyak situs web yang menyajikan data terenkripsi / disandikan yang tidak dapat didekripsi dalam bahasa pemrograman apa pun hanya karena metode enkripsi tidak ada.
Saya mencapai ini di situs web PHP dengan mengenkripsi dan meminimalkan output (PERINGATAN: ini bukan ide yang baik untuk situs besar) responsnya selalu campur aduk konten.
Contoh meminimalkan output dalam PHP ( Bagaimana cara meminimalkan output html halaman php? ):
Metode Dua:
Jika Anda tidak dapat menghentikan mereka mengacaukan melayani data palsu / tidak berguna sebagai tanggapan.
Metode Tiga:
blok agen pengguna menggores umum, Anda akan melihat ini di situs web besar / besar karena tidak mungkin untuk mengikisnya dengan "python3.4" seperti Anda User-Agent.
Metode Empat:
Pastikan semua header pengguna valid, saya kadang-kadang memberikan header sebanyak mungkin untuk membuat pengikis saya tampak seperti pengguna asli, beberapa di antaranya bahkan tidak benar atau valid seperti en-FU :).
Berikut adalah daftar beberapa tajuk yang biasa saya berikan.
sumber
Daripada bot daftar hitam, mungkin Anda harus daftar putih mereka. Jika Anda tidak ingin mematikan hasil pencarian Anda untuk beberapa mesin teratas, Anda dapat memasukkan string agen pengguna mereka ke daftar putih, yang umumnya dipublikasikan dengan baik. Bot yang kurang etis cenderung memalsukan string agen pengguna dari browser web populer. Beberapa mesin pencari teratas harus mengemudi lebih dari 95% dari lalu lintas Anda.
Mengidentifikasi bot sendiri harus cukup mudah, menggunakan teknik yang disarankan oleh poster lain.
sumber
Pendekatan cepat untuk ini adalah dengan mengatur jebakan / bot jebakan.
Buat halaman yang jika dibuka beberapa kali atau bahkan dibuka sama sekali, akan mengumpulkan informasi tertentu seperti IP dan yang lainnya (Anda juga dapat mempertimbangkan penyimpangan atau pola tetapi halaman ini tidak harus dibuka sama sekali).
Buat tautan ke ini di halaman Anda yang disembunyikan dengan tampilan CSS: tidak ada; atau kiri: -9999px; posisi: absolut; coba letakkan di tempat-tempat yang kecil kemungkinannya untuk diabaikan seperti di mana konten Anda berada di bawah dan bukan footer Anda karena kadang-kadang bot dapat memilih untuk melupakan bagian-bagian tertentu dari suatu halaman.
Di file robots.txt Anda, atur sejumlah besar aturan pelarangan ke halaman yang tidak Anda inginkan sebagai bot ramah (LOL, seperti mereka memiliki wajah-wajah bahagia!) Untuk mengumpulkan informasi dan menjadikan halaman ini sebagai salah satunya.
Sekarang, jika bot ramah melewatinya harus mengabaikan halaman itu. Benar tapi itu masih belum cukup baik. Buat beberapa halaman ini lebih banyak atau rutekan ulang suatu halaman untuk menerima nama yang berbeda. dan kemudian letakkan lebih banyak aturan pelarangan untuk laman perangkap ini di file robots.txt di samping laman yang ingin Anda abaikan.
Kumpulkan IP dari bot ini atau siapa pun yang masuk ke halaman ini, jangan melarang mereka tetapi buatlah fungsi untuk menampilkan teks noodled dalam konten Anda seperti nomor acak, pemberitahuan hak cipta, string teks tertentu, tampilkan gambar menakutkan, pada dasarnya apa pun untuk menghalangi Anda konten yang bagus. Anda juga dapat mengatur tautan yang mengarah ke halaman yang akan memakan waktu selamanya untuk memuat mis. di php Anda dapat menggunakan fungsi sleep (). Ini akan melawan perayap kembali jika memiliki semacam deteksi untuk mem-bypass halaman yang membutuhkan waktu terlalu lama untuk memuat karena beberapa bot yang ditulis dengan baik diatur untuk memproses jumlah tautan X pada satu waktu.
Jika Anda telah membuat string teks / kalimat tertentu mengapa tidak pergi ke mesin pencari favorit Anda dan mencari mereka, itu mungkin menunjukkan kepada Anda di mana konten Anda berakhir.
Pokoknya, jika Anda berpikir secara taktis dan kreatif ini bisa menjadi titik awal yang baik. Hal terbaik untuk dilakukan adalah mempelajari cara kerja bot.
Saya juga berpikir tentang mengamburkan beberapa ID atau cara atribut pada elemen halaman ditampilkan:
yang mengubah bentuknya setiap waktu karena beberapa bot mungkin diatur untuk mencari pola tertentu di halaman Anda atau elemen yang ditargetkan.
sumber
Anda tidak dapat menghentikan goresan layar normal. Baik atau buruk, itu adalah sifat web.
Anda dapat membuatnya sehingga tidak ada yang dapat mengakses hal-hal tertentu (termasuk file musik) kecuali mereka masuk sebagai pengguna terdaftar. Tidak terlalu sulit untuk dilakukan di Apache . Saya menganggap itu tidak akan terlalu sulit untuk dilakukan di IIS juga.
sumber
Salah satu caranya adalah dengan menyajikan konten sebagai atribut XML, string yang disandikan URL, teks yang telah diformat dengan JSON yang disandikan dengan HTML, atau data URI, kemudian mentransformasikannya menjadi HTML pada klien. Berikut adalah beberapa situs yang melakukan ini:
Skechers : XML
Toko Web Chrome : JSON
Berita Bing : URL data
Protopage : URL Encoded Strings
TiddlyWiki : Entitas HTML + JSON yang telah diformat sebelumnya
Amazon : Pemuatan Malas
XMLCalabash : XML namespace + tipe MIME Kustom + ekstensi File Kustom
Jika Anda melihat sumber pada salah satu di atas, Anda melihat bahwa memo hanya akan mengembalikan metadata dan navigasi.
sumber
Sebagian besar sudah dikatakan, tetapi apakah Anda sudah mempertimbangkan perlindungan CloudFlare? Maksud saya ini:
Perusahaan lain mungkin melakukan ini juga, CloudFlare adalah satu-satunya yang saya tahu.
Saya cukup yakin itu akan menyulitkan pekerjaan mereka. Saya juga pernah mendapat IP yang diblokir secara otomatis selama 4 bulan ketika saya mencoba untuk menghapus data dari situs yang dilindungi oleh CloudFlare karena batas tingkat (saya menggunakan loop permintaan AJAX sederhana).
sumber
Saya setuju dengan sebagian besar posting di atas, dan saya ingin menambahkan bahwa semakin mesin pencari situs Anda ramah, semakin bisa dikikis. Anda dapat mencoba melakukan beberapa hal yang sangat di luar sana yang membuat lebih sulit bagi pencakar, tetapi mungkin juga mempengaruhi kemampuan pencarian Anda ... Itu tergantung pada seberapa baik Anda ingin situs Anda untuk peringkat di mesin pencari tentu saja.
sumber
Menempatkan konten Anda di belakang captcha akan berarti robot akan kesulitan mengakses konten Anda. Namun, manusia akan merasa tidak nyaman sehingga mungkin tidak diinginkan.
sumber
Jika Anda ingin melihat contoh yang bagus, lihat http://www.bkstr.com/ . Mereka menggunakan algoritma aj / s untuk mengatur cookie, kemudian memuat kembali halaman sehingga dapat menggunakan cookie untuk memvalidasi bahwa permintaan sedang dijalankan dalam browser. Aplikasi desktop yang dibangun untuk mengikis pasti dapat melakukannya, tetapi itu akan menghentikan sebagian besar pengikisan jenis CURL.
sumber
Pengikis layar bekerja dengan memproses HTML. Dan jika mereka bertekad untuk mendapatkan data Anda, tidak banyak yang dapat Anda lakukan secara teknis karena bola mata manusia memproses apa pun. Secara hukum sudah ditunjukkan Anda mungkin memiliki beberapa jalan lain dan itu akan menjadi rekomendasi saya.
Namun, Anda dapat menyembunyikan bagian penting dari data Anda dengan menggunakan logika presentasi non-HTML
Ingatlah bahwa ini mungkin akan memengaruhi peringkat pencarian Anda.
sumber
Hasilkan HTML, CSS, dan JavaScript. Lebih mudah menulis generator daripada parser, sehingga Anda dapat menghasilkan setiap halaman yang dilayani secara berbeda. Anda tidak dapat lagi menggunakan cache atau konten statis.
sumber