Saya telah menerima jawaban, tetapi sayangnya, saya percaya kita terjebak dengan skenario kasus terburuk kami yang asli: CAPTCHA semua orang yang mencoba membeli omong kosong . Penjelasan singkat: caching / web farms tidak memungkinkan untuk melacak hits, dan solusi apa pun (mengirim suar web tanpa cache, menulis ke tabel terpadu, dll.) Memperlambat situs lebih buruk daripada bot. Mungkin ada beberapa perangkat keras mahal dari Cisco atau sejenisnya yang dapat membantu pada tingkat tinggi, tetapi sulit untuk membenarkan biaya jika CAPTCHA semua orang adalah alternatif. Saya akan mencoba penjelasan yang lebih lengkap nanti, serta membersihkan ini untuk pencari masa depan (meskipun yang lain boleh mencoba, karena itu adalah wiki komunitas).
Situasi
Ini tentang penjualan tas sampah di woot.com. Saya adalah presiden dari Woot Workshop, anak perusahaan dari Woot yang melakukan desain, menulis deskripsi produk, podcast, posting blog, dan memoderasi forum. Saya bekerja dengan CSS / HTML dan saya hampir tidak terbiasa dengan teknologi lain. Saya bekerja sama dengan para pengembang dan telah membicarakan semua jawaban di sini (dan banyak ide lain yang kami miliki).
Kegunaan adalah bagian besar dari pekerjaan saya, dan membuat situs ini menarik dan menyenangkan adalah sebagian besar sisanya. Di situlah tiga tujuan di bawah ini berasal. CAPTCHA merusak kegunaan, dan bot mencuri kesenangan dan kegembiraan dari penjualan sampah kami.
Bot membanting halaman depan kami puluhan kali menggores layar kedua (dan / atau memindai RSS kami) untuk penjualan Random Crap. Saat mereka melihat itu, itu memicu tahap kedua dari program yang masuk, klik Saya ingin Satu, mengisi formulir, dan membeli omong kosong.
Evaluasi
lc : Pada stackoverflow dan situs lain yang menggunakan metode ini, mereka hampir selalu berurusan dengan pengguna yang terotentikasi (masuk), karena tugas yang dicoba mengharuskannya.
Pada Woot, pengguna anonim (non-log) dapat melihat halaman rumah kami. Dengan kata lain, bot slamming dapat tidak diautentikasi (dan pada dasarnya tidak dapat dilacak kecuali dengan alamat IP).
Jadi kita kembali ke pemindaian untuk IP, yang a) cukup tidak berguna di era cloud networking dan spambot zombie dan b) menangkap terlalu banyak orang tak berdosa mengingat jumlah bisnis yang berasal dari satu alamat IP (belum lagi masalah dengan ISP IP non-statis dan hit kinerja potensial untuk mencoba melacak ini).
Oh, dan meminta orang-orang menghubungi kami akan menjadi skenario yang paling buruk. Bisakah kami meminta mereka menghubungi Anda?
BradC : Metode Ned Batchelder terlihat sangat keren, tetapi mereka cukup kuat dirancang untuk mengalahkan bot yang dibangun untuk jaringan situs. Masalah kami adalah bot dibangun khusus untuk mengalahkan situs kami. Beberapa metode ini mungkin dapat bekerja untuk waktu yang singkat sampai skrip mengembangkan bot mereka untuk mengabaikan honeypot, screen-scrape untuk nama label terdekat, bukan id formulir, dan menggunakan kontrol browser yang mampu javascript.
lc lagi : "Kecuali, tentu saja, hype adalah bagian dari skema pemasaran Anda." Ya, tentu saja. Kejutan ketika barang itu muncul, serta kegembiraan jika Anda berhasil mendapatkannya mungkin sama atau lebih penting daripada omong kosong yang akhirnya Anda dapatkan. Apa pun yang menghilangkan first-come / first-serve merugikan sensasi 'memenangkan' omong kosong.
Novatrust : Dan aku, untuk satu, selamat datang tuan tuan baru kami. Kami benar-benar menawarkan Umpan RSS untuk memungkinkan aplikasi pihak ketiga memindai situs kami untuk info produk, tetapi tidak di depan HTML situs utama. Jika saya menafsirkannya dengan benar, solusi Anda memang membantu sasaran 2 (masalah kinerja) dengan sepenuhnya mengorbankan tujuan 1, dan hanya mengundurkan diri dari kenyataan bahwa bot akan membeli sebagian besar omong kosong. Saya memilih tanggapan Anda, karena pesimisme paragraf terakhir Anda terasa akurat bagi saya. Sepertinya tidak ada peluru perak di sini.
Sisa tanggapan umumnya bergantung pada pelacakan IP, yang, sekali lagi, tampaknya tidak berguna (dengan botnet / zombie / jaringan cloud) dan merugikan (menangkap banyak orang tak berdosa yang datang dari tujuan IP yang sama).
Ada pendekatan / ide lain? Pengembang saya terus mengatakan "mari kita lakukan CAPTCHA" tapi saya berharap ada metode yang kurang mengganggu untuk semua manusia yang sebenarnya ingin beberapa omong kosong kami.
Pertanyaan asli
Katakanlah Anda menjual sesuatu yang murah yang memiliki nilai persepsi yang sangat tinggi, dan Anda memiliki jumlah yang sangat terbatas. Tidak ada yang tahu persis kapan Anda akan menjual barang ini. Dan lebih dari satu juta orang secara teratur datang untuk melihat apa yang Anda jual.
Anda berakhir dengan skrip dan bot yang berupaya mencari [a] secara terprogram saat Anda menjual barang tersebut, dan [b] pastikan mereka termasuk orang pertama yang membelinya. Ini menyebalkan karena dua alasan:
- Situs Anda dibanting oleh bukan manusia, memperlambat segalanya untuk semua orang.
- Para penulis akhirnya 'memenangkan' produk, menyebabkan pelanggan tetap merasa dicurangi.
Solusi yang tampaknya jelas adalah membuat beberapa rintangan bagi pengguna Anda untuk melompati sebelum melakukan pemesanan, tetapi setidaknya ada tiga masalah dengan ini:
- Pengalaman pengguna menyebalkan bagi manusia, karena mereka harus menguraikan CAPTCHA, memilih kucing, atau memecahkan masalah matematika.
- Jika manfaat yang dirasakan cukup tinggi, dan kerumunan cukup besar, beberapa kelompok akan menemukan jalan mereka sendiri, yang mengarah ke perlombaan senjata. (Ini terutama benar, yang lebih sederhana adalah tweak; bentuk 'komentar' tersembunyi, mengatur ulang elemen bentuk, salah memberi label, teks tersembunyi 'gotcha' semua akan berfungsi satu kali dan kemudian perlu diubah untuk melawan penargetan bentuk khusus ini .)
- Bahkan jika para skrip tidak dapat 'menyelesaikan' tweak Anda, itu tidak mencegah mereka membanting halaman depan Anda, dan kemudian membunyikan alarm untuk si skrip untuk mengisi pesanan, secara manual. Mengingat mereka mendapatkan keuntungan dari penyelesaian [a], mereka kemungkinan masih akan menang [b] karena mereka akan menjadi manusia pertama yang mencapai halaman pesanan. Selain itu, 1. masih terjadi, menyebabkan kesalahan server dan penurunan kinerja untuk semua orang.
Solusi lain adalah mengawasi IP yang sering terkena, memblokirnya dari firewall, atau mencegah mereka memesan. Ini bisa menyelesaikan 2. dan mencegah [b] tetapi performa yang dihasilkan dari pemindaian untuk IP sangat besar dan kemungkinan akan menyebabkan lebih banyak masalah seperti 1. daripada yang disebabkan oleh skrip sendiri. Selain itu, kemungkinan jaringan cloud dan spambot zombie membuat pemeriksaan IP tidak berguna.
Gagasan ketiga, memaksa formulir pesanan dimuat untuk beberapa waktu (katakanlah, setengah detik) akan berpotensi memperlambat kemajuan pesanan cepat, tetapi sekali lagi, para penulis naskah akan tetap menjadi orang pertama di, dengan kecepatan apa pun yang tidak merugikan pengguna sebenarnya.
Tujuan
- Jual item ke manusia yang bukan scripting.
- Biarkan situs berjalan pada kecepatan yang tidak diperlambat oleh bot.
- Jangan ganggu para pengguna 'normal' dengan tugas yang harus diselesaikan untuk membuktikan bahwa mereka manusia.
sumber
Jawaban:
Bagaimana dengan mengimplementasikan sesuatu seperti SO dengan CAPTCHA?
Jika Anda menggunakan situs secara normal, Anda mungkin tidak akan pernah melihatnya. Jika Anda terlalu sering memuat ulang halaman yang sama, memposting komentar berturut-turut terlalu cepat, atau sesuatu yang memicu alarm, buat mereka membuktikan bahwa mereka adalah manusia. Dalam kasus Anda, ini mungkin akan memuat ulang secara konstan dari halaman yang sama, mengikuti setiap tautan pada halaman dengan cepat, atau mengisi formulir pemesanan yang terlalu cepat untuk menjadi manusia.
Jika mereka gagal memeriksa x kali berturut-turut (katakanlah, 2 atau 3), berikan batas waktu IP itu atau ukuran lainnya. Kemudian di akhir waktu tunggu, buang mereka kembali ke cek.
Karena Anda memiliki pengguna yang tidak terdaftar mengakses situs ini, Anda hanya memiliki IP untuk melanjutkan. Anda dapat mengeluarkan sesi untuk setiap browser dan melacaknya jika Anda mau. Dan, tentu saja, beri tanda cek pada manusia jika terlalu banyak sesi dibuat (kembali) secara berurutan (seandainya bot terus menghapus cookie).
Sejauh menangkap terlalu banyak orang tak berdosa, Anda dapat memasang sangkalan pada halaman cek manusia: "Halaman ini juga dapat muncul jika terlalu banyak pengguna anonim melihat situs kami dari lokasi yang sama. Kami menganjurkan Anda untuk mendaftar atau masuk untuk menghindari ini." (Sesuaikan kata-kata dengan tepat.)
Selain itu, apa peluang X orang memuat halaman yang sama secara bersamaan dari satu IP? Jika tinggi, mungkin Anda memerlukan mekanisme pemicu yang berbeda untuk alarm bot Anda.
Sunting: Pilihan lain adalah jika mereka gagal berkali-kali, dan Anda yakin tentang permintaan produk, untuk memblokir mereka dan membuat mereka secara pribadi CALL Anda untuk menghapus blokir.
Memiliki panggilan orang memang tampak seperti ukuran bodoh, tapi itu memastikan ada manusia di suatu tempat di belakang komputer . Kuncinya adalah memiliki blok hanya di tempat untuk suatu kondisi yang hampir tidak pernah terjadi kecuali itu bot (misalnya gagal memeriksa beberapa kali berturut-turut). Maka MEMASUK interaksi manusia - untuk mengangkat telepon.
Menanggapi komentar mereka memanggil saya, jelas ada tradeoff di sini. Apakah Anda cukup khawatir tentang memastikan pengguna Anda manusia untuk menerima beberapa panggilan telepon ketika mereka mulai dijual? Jika saya begitu khawatir tentang produk yang sampai ke pengguna manusia, saya harus membuat keputusan ini, mungkin mengorbankan sedikit waktu saya dalam proses.
Karena sepertinya Anda bertekad untuk tidak membiarkan bot menguasai situs Anda, saya yakin telepon mungkin merupakan pilihan yang baik. Karena saya tidak mendapat untung dari produk Anda, saya tidak tertarik menerima panggilan ini. Namun, jika Anda berbagi sebagian dari keuntungan itu, saya mungkin tertarik. Karena ini adalah produk Anda, Anda harus memutuskan seberapa besar Anda peduli dan menerapkannya.
Cara lain untuk melepaskan blok tidak begitu efektif: batas waktu (tetapi mereka akan membanting situs Anda lagi setelah itu, bilas berulang), batas waktu yang lama (jika itu benar-benar manusia yang mencoba membeli produk Anda, mereka akan SOL dan dihukum karena gagal cek), email (mudah dilakukan oleh bot), faks (sama), atau surat siput (terlalu lama).
Anda bisa, tentu saja, alih-alih memiliki periode batas waktu meningkat per IP untuk setiap kali mereka mendapat batas waktu. Pastikan Anda tidak menghukum manusia sejati secara tidak sengaja.
sumber
Anda perlu mencari cara untuk membuat bot membeli barang-barang yang terlalu mahal: 12mm wingnut: $ 20. Lihat berapa banyak bot yang diambil sebelum penulis skrip memutuskan Anda mem-game-kannya.
Gunakan keuntungan untuk membeli lebih banyak server dan membayar bandwidth.
sumber
Solusi saya adalah membuat goresan layar menjadi tidak berharga dengan menunda sekitar 10 menit untuk 'bot dan skrip.
Begini cara saya melakukannya:
Anda tidak perlu mencatat setiap alamat IP pada setiap klik. Hanya lacak satu dari setiap 20 hit atau lebih. Pelaku berulang akan tetap muncul dalam pelacakan acak sesekali.
Simpan cache halaman Anda dari sekitar 10 menit sebelumnya.
Ketika pemukul berulang / bot menghantam situs Anda, beri mereka halaman cache lama 10 menit.
Mereka tidak akan segera tahu bahwa mereka mendapatkan situs lama. Mereka akan dapat mengikisnya, dan segalanya, tetapi mereka tidak akan memenangkan perlombaan lagi, karena "orang sungguhan" akan memiliki 10 menit lebih awal.
Manfaat:
Kekurangannya
Bagaimana menurut anda?
sumber
Lihatlah artikel ini oleh ned Batchelder di sini . Artikelnya adalah tentang menghentikan robot spam, tetapi teknik yang sama dapat dengan mudah diterapkan ke situs Anda.
Beberapa ide lain:
SUNTING: Agar sepenuhnya jelas, artikel Ned di atas menjelaskan metode untuk mencegah PEMBELIAN item secara otomatis dengan mencegah BOT dari melalui formulir untuk mengirimkan pesanan. Teknik-tekniknya tidak akan berguna untuk mencegah bot menggaruk layar beranda untuk menentukan kapan Bandoleer of Carrots muncul untuk dijual. Saya tidak yakin mencegah ITU benar-benar mungkin.
Berkenaan dengan komentar Anda tentang efektivitas strategi Ned: Ya, dia membahas honeypots, tapi saya tidak berpikir itu strategi terkuatnya. Pembahasannya tentang SPINNER adalah alasan asli saya menyebutkan artikelnya. Maaf saya tidak membuatnya lebih jelas dalam posting asli saya:
Inilah cara Anda dapat mengimplementasikannya di WOOT.com:
Ubah nilai "rahasia" yang digunakan sebagai bagian dari hash setiap kali item baru dijual. Ini berarti bahwa jika seseorang akan merancang BOT untuk membeli barang secara otomatis, itu hanya akan berfungsi sampai barang berikutnya dijual !!
Bahkan jika seseorang dapat dengan cepat membangun kembali bot mereka, semua pengguna aktual lainnya akan sudah membeli BOC, dan masalah Anda terpecahkan!
Strategi lain yang ia diskusikan adalah mengubah teknik honeypot dari waktu ke waktu (sekali lagi, ubah ketika item baru mulai dijual):
Saya kira ide keseluruhan saya adalah untuk MENGUBAH DESAIN FORMULIR ketika setiap item baru mulai dijual. Atau setidaknya, ubah ketika Dewan Komisaris baru mulai dijual.
Yang mana, beberapa kali / bulan?
Jika Anda menerima jawaban ini, apakah Anda akan memberi saya informasi kapan jawaban berikutnya akan jatuh tempo? :)
sumber
<form>
dan dikirim setelah pengiriman? Karena bot dapat dengan mudah mengikisnya juga.T: Bagaimana Anda menghentikan skrip membanting situs Anda ratusan kali per detik?
A: Tidak. Tidak ada cara untuk mencegah perilaku ini oleh agen eksternal.
Anda dapat menggunakan beragam teknologi untuk menganalisis permintaan yang masuk dan berusaha secara heuristik untuk menentukan siapa dan bukan manusia ... tetapi itu akan gagal. Akhirnya, jika tidak segera.
Satu-satunya solusi jangka panjang yang layak adalah mengubah gim agar situs tidak ramah bot, atau kurang menarik bagi para skrip.
Bagaimana kamu melakukannya? Nah, itu pertanyaan yang berbeda! ;-)
...
OK, beberapa opsi telah diberikan (dan ditolak) di atas. Saya tidak terlalu akrab dengan situs Anda, setelah melihatnya hanya sekali, tetapi karena orang dapat membaca teks dalam gambar dan bot tidak dapat dengan mudah melakukan ini, ubah pengumuman menjadi gambar. Bukan CAPTCHA , hanya gambar -
Jalankan uji coba waktu orang-orang nyata yang merespons hal ini, dan abaikan ('oops, terjadi kesalahan, maaf! Coba lagi') respons lebih cepat daripada (katakanlah) separuh dari waktu ini. Acara ini juga harus memicu peringatan kepada pengembang bahwa setidaknya satu bot telah menemukan kode / permainan, jadi inilah saatnya untuk mengubah kode / permainan.
Tetap mengubah permainan secara berkala, bahkan jika tidak ada bot yang memicunya, hanya membuang waktu para penulis. Akhirnya skrip harus bosan dengan permainan dan pergi ke tempat lain ... kami harap ;-)
Satu saran terakhir: ketika permintaan untuk halaman utama Anda masuk, masukkan ke dalam antrian dan tanggapi permintaan secara berurutan (Anda mungkin harus meretas / memperluas server web untuk melakukan ini, tetapi kemungkinan akan menjadi bermanfaat). Jika permintaan lain dari IP / agen yang sama masuk saat permintaan pertama dalam antrian, abaikan saja. Ini akan secara otomatis melepaskan beban dari bot.
EDIT: opsi lain, selain menggunakan gambar, adalah menggunakan javascript untuk mengisi teks beli / tidak-beli; bot jarang menafsirkan javascript, sehingga mereka tidak akan melihatnya
sumber
Saya tidak tahu bagaimana layaknya ini: ... terus menyerang.
Cari tahu data apa yang sedang dipindai oleh bot. Beri mereka data yang mereka cari saat Anda TIDAK menjual omong kosong. Lakukan ini dengan cara yang tidak akan mengganggu atau membingungkan pengguna manusia. Ketika bot memicu fase dua, mereka akan masuk dan mengisi formulir untuk membeli $ 100 roombas daripada BOC. Tentu saja, ini mengasumsikan bahwa bot tidak terlalu kuat.
Gagasan lainnya adalah menerapkan penurunan harga secara acak selama periode penjualan kantong sampah. Siapa yang akan membeli tas acak seharga $ 150 ketika Anda MENYATAKAN NEGARA bahwa itu hanya bernilai $ 20? Bot tidak ada tapi bersemangat. Tapi 9 menit kemudian $ 35 dolar ... lalu 17 menit kemudian $ 9. Atau terserah.
Tentu, raja zombie akan bisa bereaksi. Intinya adalah membuat kesalahan mereka menjadi sangat mahal bagi mereka (dan membuat mereka membayar Anda untuk melawan mereka).
Semua ini mengasumsikan Anda ingin mengencingi beberapa tuan bot, yang mungkin tidak 100% disarankan.
sumber
Jadi masalahnya adalah: bot menginginkan "tasnya" karena memiliki nilai persepsi tinggi dengan harga persepsi rendah. Anda kadang-kadang menawarkan barang ini dan bot mengintai, menunggu untuk melihat apakah itu tersedia dan kemudian mereka membeli barang.
Karena sepertinya pemilik bot mendapatkan untung (atau berpotensi menghasilkan untung), triknya adalah membuat ini tidak menguntungkan bagi mereka dengan mendorong mereka untuk membeli sampah.
Pertama, selalu menawarkan "tas 'omong kosong".
Kedua, pastikan omong kosong itu biasanya omong kosong.
Ketiga, putar omong kosong sesering mungkin.
Sederhana bukan?
Anda akan membutuhkan kata permanen "mengapa omong kosong kami terkadang omong kosong?" tautan di sebelah penawaran untuk menjelaskan kepada manusia apa yang terjadi.
Ketika bot melihat bahwa ada omong kosong dan omong kosong itu dibeli secara otomatis, penerima akan sangat kecewa bahwa mereka telah membayar $ 10 untuk tusuk gigi yang rusak. Dan kemudian kantong sampah kosong. Dan kemudian beberapa kotoran dari bagian bawah sepatu Anda.
Jika mereka membeli cukup dari omong kosong ini dalam waktu yang relatif singkat (dan Anda memiliki penolakan besar di semua tempat menjelaskan mengapa Anda melakukan ini), mereka akan kehilangan "tas 'uang tunai" pada Anda " tas 'o omong kosong ". Bahkan campur tangan manusia di pihak mereka (memeriksa untuk memastikan bahwa omong kosong itu bukan omong kosong) dapat gagal jika Anda cukup sering memutar omong kosong itu. Heck, mungkin bot akan memperhatikan dan tidak membeli apa pun yang sudah di rotasi untuk waktu yang terlalu singkat, tetapi itu berarti manusia akan membeli non-omong kosong.
Heck, pelanggan reguler Anda mungkin sangat geli sehingga Anda dapat mengubahnya menjadi kemenangan pemasaran yang besar. Mulai memposting berapa banyak "omong kosong" ikan mas yang dijual. Orang akan kembali hanya untuk melihat seberapa keras bot telah digigit.
Pembaruan: Saya berharap Anda mungkin mendapat beberapa panggilan di depan dengan orang-orang mengeluh. Saya tidak berpikir Anda bisa menghentikan itu sepenuhnya. Namun, jika ini membunuh bot, Anda selalu dapat menghentikannya dan memulai kembali nanti.
sumber
Anda mungkin tidak ingin mendengar ini, tetapi # 1 dan # 3 saling eksklusif.
Yah, tidak ada yang tahu kau juga bot. Tidak ada cara terprogram untuk mengetahui apakah ada manusia di ujung sambungan tanpa mengharuskan orang itu melakukan sesuatu. Mencegah skrip / bot melakukan hal-hal di web adalah alasan utama CAPTCHA ditemukan. Ini tidak seperti ini adalah beberapa masalah baru yang belum melihat banyak upaya yang dikeluarkan untuk itu. Jika ada cara yang lebih baik untuk melakukannya, yang tidak melibatkan kerumitan bagi pengguna nyata yang dilakukan CAPTCHA, semua orang sudah akan menggunakannya.
Saya pikir Anda perlu menghadapi kenyataan bahwa jika Anda ingin menjaga bot dari halaman pemesanan Anda, CAPTCHA yang baik adalah satu-satunya cara untuk melakukannya. Jika permintaan untuk omong kosong acak Anda cukup tinggi sehingga orang-orang bersedia melakukan sejauh ini untuk mendapatkannya, pengguna yang sah tidak akan ditunda oleh CAPTCHA.
sumber
Metode yang digunakan Woot untuk memerangi masalah ini adalah mengubah gim - secara harfiah. Ketika mereka menyajikan barang yang sangat diinginkan untuk dijual, mereka membuat pengguna memainkan video game untuk memesannya.
Tidak hanya itu berhasil memerangi bot (mereka dapat dengan mudah membuat perubahan kecil pada permainan untuk menghindari pemain otomatis, atau bahkan memberikan permainan baru untuk setiap penjualan) tetapi juga memberikan kesan kepada pengguna "memenangkan" item yang diinginkan sambil memperlambat proses pemesanan.
Itu masih menjual sangat cepat, tapi saya pikir solusinya baik - mengevaluasi kembali masalah dan mengubah parameter mengarah pada strategi yang sukses di mana solusi teknis yang ketat tidak ada.
Seluruh model bisnis Anda didasarkan pada "pertama datang, pertama dilayani". Anda tidak dapat melakukan apa yang dilakukan stasiun radio (mereka tidak lagi menjadikan penelepon pertama sebagai pemenang, mereka menjadikan penelepon ke-5 atau ke-20 atau ke-13 menjadi pemenang) - ini tidak cocok dengan fitur utama Anda.
Tidak, tidak ada cara untuk melakukan ini tanpa mengubah pengalaman pemesanan untuk pengguna nyata.
Katakanlah Anda menerapkan semua taktik ini. Jika saya memutuskan bahwa ini penting, saya hanya akan membuat 100 orang bekerja dengan saya, kami akan membangun perangkat lunak untuk bekerja pada 100 komputer kami yang terpisah, dan mengenai situs Anda 20 kali per detik (5 detik antara akses untuk setiap pengguna / cookie / akun / alamat IP).
Anda memiliki dua tahap:
Anda tidak dapat memasang captcha memblokir # 1 - itu akan kehilangan pelanggan nyata ("Apa? Saya harus memecahkan captcha setiap kali saya ingin melihat woot terbaru?!?").
Jadi grup kecil saya menonton, menghitung waktu bersama sehingga kami mendapat sekitar 20 cek per detik, dan siapa pun yang melihat perubahan akan memberi tahu semua yang lain (secara otomatis), yang akan memuat halaman depan sekali lagi, ikuti tautan pesanan, dan lakukan transaksi ( yang mungkin juga terjadi secara otomatis, kecuali jika Anda menerapkan captcha dan mengubahnya untuk setiap wootoff / boc).
Anda dapat menempatkan captcha di depan # 2, dan saat Anda enggan melakukannya, itu mungkin satu-satunya cara untuk memastikan bahwa meskipun bot menonton halaman depan, pengguna sungguhan mendapatkan produk.
Tetapi bahkan dengan captcha, band kecil saya yang berjumlah 100 tetap memiliki keunggulan penggerak pertama yang signifikan - dan tidak mungkin Anda dapat mengatakan bahwa kami bukan manusia. Jika Anda mulai menghitung waktu akses kami, kami hanya akan menambahkan beberapa jitter. Kami dapat secara acak memilih komputer mana yang akan disegarkan sehingga urutan akses berubah secara konstan - tetapi masih terlihat cukup seperti manusia.
Pertama, singkirkan bot sederhana
Anda perlu memiliki firewall adaptif yang akan mengawasi permintaan dan jika seseorang melakukan hal bodoh yang jelas - menyegarkan lebih dari satu kali per detik pada IP yang sama, maka gunakan taktik untuk memperlambatnya (paket drop, kirim kembali ditolak atau 500 kesalahan, dll. ).
Ini akan secara signifikan menurunkan traffic Anda dan mengubah taktik yang digunakan pengguna bot.
Kedua, buat server sangat cepat.
Anda benar-benar tidak ingin mendengar ini ... tapi ...
Saya pikir yang Anda butuhkan adalah solusi sepenuhnya khusus dari bawah ke atas.
Anda tidak perlu dipusingkan dengan tumpukan TCP / IP, tetapi Anda mungkin perlu mengembangkan server khusus yang sangat, sangat, sangat cepat yang dibuat khusus untuk mengkorelasikan koneksi pengguna dan bereaksi dengan tepat terhadap berbagai serangan.
Apache, lighthttpd, dll semuanya bagus untuk menjadi fleksibel, tetapi Anda menjalankan situs web tujuan tunggal, dan Anda benar-benar harus dapat melakukan lebih dari yang mampu dilakukan server saat ini (baik dalam menangani lalu lintas, dan dalam memerangi bot secara tepat ).
Dengan melayani laman web yang sebagian besar statis (diperbarui setiap 30 detik atau lebih) di server khusus, Anda seharusnya tidak hanya mampu menangani 10x jumlah permintaan dan lalu lintas (karena server tidak melakukan apa pun selain mendapatkan permintaan, dan membaca halaman dari memori ke buffer TCP / IP) tetapi itu juga akan memberi Anda akses ke metrik yang mungkin membantu Anda memperlambat bot. Misalnya, dengan menghubungkan alamat IP Anda hanya dapat memblokir lebih dari satu koneksi per detik per IP. Manusia tidak bisa lebih cepat dari itu, dan bahkan orang yang menggunakan alamat IP NATed yang sama hanya akan jarang diblokir. Anda ingin melakukan pemblokiran lambat - biarkan koneksi sendirian selama satu detik penuh sebelum secara resmi mengakhiri sesi. Ini dapat dimasukkan ke firewall untuk memberikan blok jangka panjang untuk pelanggar terutama mengerikan.
Tetapi kenyataannya adalah bahwa apa pun yang Anda lakukan, tidak ada cara untuk membedakan manusia dari bot ketika bot dibuat khusus oleh manusia untuk satu tujuan. Bot hanyalah proxy untuk manusia.
Kesimpulan
Pada akhirnya, Anda tidak dapat membedakan manusia dan komputer untuk menonton halaman depan. Anda dapat menghentikan bot pada langkah pemesanan, tetapi pengguna bot masih memiliki keunggulan penggerak pertama, dan Anda masih memiliki banyak beban untuk dikelola.
Anda dapat menambahkan blok untuk bot sederhana, yang akan menaikkan bilah dan lebih sedikit orang yang peduli dengannya. Itu mungkin cukup.
Tetapi tanpa mengubah model dasar Anda, Anda tidak beruntung. Yang terbaik yang dapat Anda lakukan adalah menangani kasus-kasus sederhana, membuat server jadi pengguna biasa yang cepat tidak menyadarinya, dan menjual begitu banyak item bahkan jika Anda memiliki beberapa juta bot, sebanyak mungkin pengguna biasa yang menginginkannya akan mendapatkannya .
Anda mungkin mempertimbangkan untuk menyiapkan honeypot dan menandai akun pengguna sebagai pengguna bot, tetapi itu akan memiliki reaksi negatif komunitas yang sangat besar.
Setiap kali saya memikirkan "baik, bagaimana dengan melakukan ini ..." Saya selalu bisa mengatasinya dengan strategi bot yang cocok.
Bahkan jika Anda menjadikan halaman depan sebagai captcha untuk sampai ke halaman pemesanan ("Tombol pemesanan item ini berwarna biru dengan kilauan merah muda, di suatu tempat di halaman ini") bot hanya akan membuka semua tautan di halaman, dan menggunakan mana pun yang datang kembali dengan halaman pemesanan. Itu bukan cara untuk memenangkan ini.
Buat server menjadi cepat, masukkan reCaptcha (satu-satunya yang saya temukan yang tidak bisa dibodohi dengan mudah, tetapi mungkin terlalu lambat untuk aplikasi Anda) di halaman pemesanan, dan pikirkan cara mengubah model sedikit sehingga pengguna reguler memiliki peluang yang sama baiknya dengan pengguna bot.
-Adam
sumber
Penafian: Jawaban ini sepenuhnya tidak terkait pemrograman. Namun, ia mencoba menyerang alasan skrip pada awalnya.
Gagasan lain adalah jika Anda benar-benar memiliki jumlah terbatas untuk dijual, mengapa Anda tidak mengubahnya dari metodologi yang pertama datang pertama dilayani? Kecuali, tentu saja, hype adalah bagian dari skema pemasaran Anda.
Ada banyak pilihan lain, dan saya yakin orang lain dapat memikirkan beberapa yang berbeda:
antrian pemesanan (sistem pra-pemesanan) - Beberapa skrip mungkin masih berakhir di depan antrian, tetapi mungkin lebih cepat untuk memasukkan info secara manual.
sistem undian (semua orang yang mencoba memesannya dimasukkan ke dalam sistem) - Dengan cara ini orang-orang dengan skrip memiliki peluang yang sama dengan yang tidak.
antrian prioritas terburu-buru - Jika benar-benar ada nilai yang dirasakan tinggi, orang mungkin bersedia membayar lebih. Terapkan antrian pemesanan, tetapi izinkan orang membayar lebih banyak untuk ditempatkan lebih tinggi dalam antrian.
lelang (kredit jatuh ke tangan David Schmitt untuk yang satu ini, komentar adalah milik saya) - Orang masih dapat menggunakan skrip untuk masuk pada menit terakhir, tetapi tidak hanya mengubah struktur penetapan harga, orang berharap untuk bertarung dengan orang lain . Anda juga dapat melakukan hal-hal untuk membatasi jumlah tawaran dalam periode waktu tertentu, membuat orang menelepon terlebih dahulu untuk mendapatkan kode otorisasi, dll.
sumber
Tidak peduli seberapa aman pemikiran Nazi tentang komunikasi mereka, sekutu akan sering memecah pesan mereka. Tidak peduli bagaimana Anda mencoba menghentikan bot dari menggunakan situs Anda, pemilik bot akan mencari jalan keluar. Maaf jika itu membuat Anda Nazi :-)
Saya pikir diperlukan pola pikir yang berbeda
Masuklah ke dalam pola pikir bahwa tidak masalah apakah klien situs Anda adalah manusia atau bot, keduanya hanya membayar pelanggan; tetapi yang satu memiliki keunggulan yang tidak adil dibanding yang lain. Beberapa pengguna tanpa banyak kehidupan sosial (pertapa) bisa sama menjengkelkan bagi pengguna lain sebagai bot.
Catat waktu Anda mempublikasikan penawaran dan waktu akun memilih untuk membelinya.
Variasikan waktu hari Anda mempublikasikan penawaran.
Seiring waktu gambar akan muncul.
01: Anda dapat melihat akun mana yang secara teratur membeli produk dalam beberapa detik dari mereka akan ditayangkan. Menyarankan mereka mungkin bot.
02: Anda juga dapat melihat jendela waktu yang digunakan untuk penawaran, jika jendelanya 1 jam maka beberapa pembeli awal adalah manusia. Manusia jarang akan menyegarkan selama 4 jam. Jika waktu yang berlalu cukup konsisten antara mempublikasikan / membeli terlepas dari durasi jendela maka itu adalah bot. Jika waktu publikasi / pembelian singkat untuk windows kecil dan lebih lama untuk windows besar, itu pertapa!
Sekarang, alih-alih menghentikan bot dari menggunakan situs Anda, Anda memiliki cukup informasi untuk memberi tahu Anda akun mana yang pasti digunakan oleh bot, dan akun mana yang kemungkinan akan digunakan oleh para pertapa. Apa yang Anda lakukan dengan informasi itu terserah Anda, tetapi Anda tentu dapat menggunakannya untuk membuat situs Anda lebih adil bagi orang-orang yang memiliki kehidupan.
Saya pikir melarang akun bot tidak ada gunanya, itu sama saja dengan menelepon Hitler dan mengatakan "Terima kasih atas posisi U-boat Anda!" Entah bagaimana Anda perlu menggunakan informasi dengan cara yang tidak disadari oleh pemilik akun. Mari kita lihat apakah saya dapat memimpikan sesuatu .....
Memproses pesanan dalam antrian:
Ketika pelanggan melakukan pemesanan, mereka segera mendapatkan email konfirmasi yang memberitahu mereka bahwa pesanan mereka ditempatkan dalam antrian dan akan diberitahukan ketika telah diproses. Saya mengalami hal semacam ini dengan pesanan / pengiriman di Amazon dan itu tidak mengganggu saya sama sekali, saya tidak keberatan mendapatkan email beberapa hari kemudian mengatakan bahwa pesanan saya telah dikirim selama saya segera mendapatkan email yang mengatakan kepada saya bahwa Amazon tahu saya menginginkan buku itu. Dalam kasus Anda itu akan menjadi email untuk
Pengguna berpikir mereka dalam antrian yang adil. Proses antrian Anda setiap 1 jam sehingga pengguna biasa juga mengalami antrian, agar tidak menimbulkan kecurigaan. Hanya proses pesanan dari akun bot dan pertapa setelah mereka berada dalam antrian untuk "rata-rata waktu pemesanan manusia + x jam". Secara efektif mengurangi bot untuk manusia.
sumber
Saya katakan mengekspos informasi harga menggunakan API. Ini adalah solusi yang tidak intuitif tetapi berhasil untuk memberi Anda kontrol atas situasi. Tambahkan beberapa batasan pada API untuk membuatnya sedikit kurang berfungsi dibandingkan situs web.
Anda dapat melakukan hal yang sama untuk memesan. Anda dapat bereksperimen dengan perubahan kecil pada fungsionalitas / kinerja API hingga Anda mendapatkan efek yang diinginkan.
Ada proxy dan botnet untuk mengalahkan cek IP. Ada skrip membaca captcha yang sangat bagus. Bahkan ada tim pekerja di India yang mengalahkan captcha dengan harga murah. Solusi apa pun yang Anda dapat dapat dikalahkan secara wajar. Bahkan solusi Ned Batchelder dapat dilewati dengan menggunakan kontrol WebBrowser atau browser lain yang disatukan dengan botnet atau daftar proxy.
sumber
Kami saat ini menggunakan penyeimbang beban BigIP generasi terbaru dari F5 untuk melakukan ini. BigIP memiliki fitur manajemen lalu lintas canggih yang dapat mengidentifikasi pengikis dan bot berdasarkan frekuensi dan pola penggunaan bahkan dari sekumpulan sumber di belakang satu IP. Ini kemudian dapat membatasi ini, menyajikan konten alternatif kepada mereka atau cukup menandainya dengan header atau cookie sehingga Anda dapat mengidentifikasi mereka dalam kode aplikasi Anda.
sumber
Pertama, saya rekap apa yang perlu kita lakukan di sini. Saya menyadari bahwa saya hanya memparafrasekan pertanyaan awal, tetapi penting bahwa kita mendapatkan ini 100% lurus, karena ada banyak saran bagus yang mendapatkan 2 atau 3 dari 4 benar, tetapi karena saya akan menunjukkan, Anda akan memerlukan pendekatan beragam untuk mencakup semua persyaratan.
Persyaratan 1: Menyingkirkan 'bot slamming':
'Membanting' halaman depan Anda dengan cepat merusak kinerja situs Anda dan merupakan inti masalahnya. 'Membanting' ini berasal dari bot IP-tunggal dan - seharusnya - dari botnet juga. Kami ingin menyingkirkan keduanya.
Persyaratan 2: Jangan main-main dengan pengalaman pengguna:
Kita dapat memperbaiki situasi bot dengan cukup efektif dengan menerapkan prosedur verifikasi yang buruk seperti menelpon operator manusia, menyelesaikan banyak CAPTCHA, atau serupa, tetapi itu akan seperti memaksa setiap penumpang pesawat yang tidak bersalah untuk melompat melalui lingkaran keamanan gila hanya untuk kesempatan tipis. menangkap teroris yang paling bodoh. Oh, tunggu - kami benar-benar melakukan itu. Tapi mari kita lihat apakah kita tidak bisa melakukannya di woot.com.
Persyaratan 3: Menghindari 'perlombaan senjata':
Seperti yang Anda sebutkan, Anda tidak ingin terjebak dalam perlombaan senjata spam. Jadi, Anda tidak dapat menggunakan tweak sederhana seperti bidang formulir tersembunyi atau campur aduk, pertanyaan matematika, dll., Karena pada dasarnya itu adalah langkah-langkah yang tidak jelas yang dapat secara otomatis terdeteksi dan dielakkan secara sepele.
Persyaratan 4: Menggagalkan bot 'alarm':
Ini mungkin yang paling sulit dari kebutuhan Anda. Sekalipun kami dapat membuat tantangan verifikasi manusia yang efektif, bot masih bisa memberi polling di halaman depan Anda dan memberi tahu penulis ketika ada tawaran baru. Kami ingin membuat bot itu tidak layak juga. Ini adalah versi yang lebih kuat dari persyaratan pertama, karena tidak hanya bot tidak dapat mengeluarkan permintaan atas permintaan pembakaran cepat yang merusak kinerja - mereka bahkan tidak dapat mengeluarkan permintaan berulang yang cukup untuk mengirim 'alarm' ke penulis pada waktunya untuk menang penawaran.
Oke, jadi mari kita lihat jika kita dapat memenuhi keempat persyaratan. Pertama, seperti yang saya sebutkan, tidak ada ukuran yang akan melakukan trik. Anda harus menggabungkan beberapa trik untuk mencapainya, dan Anda harus menelan dua gangguan:
Saya menyadari ini menjengkelkan, tetapi jika kita bisa membuat angka 'kecil' cukup kecil , saya harap Anda akan setuju positif lebih banyak daripada negatif.
Ukuran pertama: Pembatasan berbasis pengguna:
Ukuran kedua: Beberapa bentuk pelambatan IP, seperti yang disarankan oleh hampir semua orang:
Ukuran ketiga: Mengganti throttle dengan respons cache:
Ukuran keempat: reCAPTCHA:
Ukuran kelima: Umpan umpan:
Ukuran keenam: Botnet Throttling:
Oke ............ Sekarang saya menghabiskan sebagian besar malam saya memikirkan hal ini, mencoba berbagai pendekatan .... penundaan global .... token berbasis cookie .. melayani antri ... 'orang asing mencekik' ... Dan itu tidak berhasil. Tidak. Saya menyadari alasan utama mengapa Anda belum menerima jawaban apa pun adalah bahwa tidak ada yang mengusulkan cara untuk menggagalkan serangan zombie / net / botnet terdistribusi .... jadi saya benar-benar ingin memecahkannya. Saya yakin saya telah memecahkan masalah botnet untuk otentikasi di utas yang berbeda , jadi saya punya harapan besar untuk masalah Anda juga. Tetapi pendekatan saya tidak diterjemahkan untuk ini. Anda hanya memiliki IP untuk digunakan, dan botnet yang cukup besar tidak mengungkapkan dirinya dalam analisis apa pun berdasarkan alamat IP.
Jadi begitulah : Ukuran keenam saya tidak ada artinya. Tidak ada. Zip. Kecuali jika botnet kecil dan / atau cukup cepat untuk terperangkap dalam throttle IP biasa, saya tidak melihat tindakan yang efektif terhadap botnet yang tidak melibatkan verifikasi manusia secara eksplisit seperti CAPTHA. Maaf, tapi saya pikir menggabungkan lima langkah di atas adalah taruhan terbaik Anda. Dan Anda mungkin bisa melakukannya dengan baik hanya dengan trik caching 10 menit abelenky saja.
sumber
Bagaimana kalau memperkenalkan penundaan yang membutuhkan interaksi manusia, seperti semacam "game CAPTCHA". Misalnya, ini bisa berupa game Flash kecil di mana selama 30 detik mereka harus meledakkan bola kotak-kotak dan menghindari meledak bola padat (menghindari masalah buta warna!). Gim akan diberi seed nomor acak dan yang dikirimkan gim kembali ke server adalah koordinat dan stempel waktu dari poin yang diklik, bersama dengan seed yang digunakan.
Di server Anda mensimulasikan mekanisme permainan menggunakan seed itu untuk melihat apakah klik memang akan meledak. Jika mereka melakukannya, bukan hanya mereka manusia, tetapi mereka membutuhkan waktu 30 detik untuk membuktikan diri mereka sendiri. Beri mereka id sesi.
Anda membiarkan id sesi itu melakukan apa yang diinginkannya, tetapi jika membuat terlalu banyak permintaan, mereka tidak dapat melanjutkan tanpa bermain lagi.
sumber
Ada beberapa solusi lain / lebih baik sudah diposting, tetapi untuk kelengkapan, saya pikir saya akan menyebutkan ini:
Jika masalah utama Anda adalah penurunan kinerja, dan Anda sedang melihat memalu yang sebenarnya , maka Anda sebenarnya berurusan dengan serangan DoS, dan Anda mungkin harus mencoba menanganinya. Salah satu pendekatan yang umum adalah dengan hanya menjatuhkan paket dari IP di firewall setelah sejumlah koneksi per detik / menit / dll. Sebagai contoh, firewall Linux standar, iptables, memiliki fungsi pencocokan operasi standar 'hashlimit', yang dapat digunakan untuk mengkorelasikan permintaan koneksi per unit waktu ke alamat IP.
Meskipun, pertanyaan ini mungkin akan lebih cocok untuk SO-turunan berikutnya yang disebutkan pada SO-podcast terakhir, itu belum diluncurkan, jadi saya kira tidak apa-apa untuk menjawab :)
EDIT:
Seperti yang ditunjukkan oleh novatrust, masih ada ISP yang sebenarnya TIDAK memberikan IP kepada pelanggan mereka, jadi secara efektif, skrip-pelanggan dari ISP semacam itu akan menonaktifkan semua-pelanggan dari ISP itu.
sumber
Tuliskan reverse-proxy pada server apache di depan aplikasi Anda yang mengimplementasikan Tarpit (Artikel Wikipedia) untuk menghukum bot. Itu hanya akan mengelola daftar alamat IP yang terhubung dalam beberapa detik terakhir. Anda mendeteksi ledakan permintaan dari satu alamat IP dan kemudian secara eksponensial menunda permintaan itu sebelum merespons.
Tentu saja, banyak manusia dapat datang dari alamat IP yang sama jika mereka berada di koneksi jaringan NAT'd tetapi tidak mungkin bahwa manusia akan keberatan waktu respons Anda pergi untuk 2mS ke 4mS (atau bahkan 400mS) sedangkan bot akan terhambat dengan meningkatnya penundaan cukup cepat.
sumber
sumber
Pertama-tama, menurut definisi, adalah mustahil untuk mendukung transaksi tanpa kewarganegaraan, yaitu benar-benar anonim, sementara juga dapat memisahkan bot dari pengguna yang sah.
Jika kita dapat menerima premis bahwa kita dapat membebankan biaya pada pengunjung woot-baru-memukul pada hit halaman pertamanya, saya pikir saya punya solusi yang mungkin. Karena kurang nama yang lebih baik, saya akan dengan bebas menyebut solusi ini "Kunjungan ke DMV."
Katakanlah ada dealer mobil yang menawarkan mobil baru yang berbeda setiap hari, dan bahwa pada beberapa hari, Anda dapat membeli mobil sport eksotis dengan harga masing-masing $ 5 (batas 3), ditambah biaya tujuan $ 5.
Tangkapannya adalah, dealer mengharuskan Anda untuk mengunjungi dealer dan menunjukkan SIM yang valid sebelum Anda diizinkan masuk melalui pintu untuk melihat mobil apa yang dijual. Selain itu, Anda harus telah mengatakan SIM yang berlaku untuk melakukan pembelian.
Jadi, pengunjung pertama kali (sebut saja dia Bob) ke dealer mobil ini ditolak masuk, dan dirujuk ke kantor DMV (yang berlokasi tepat di sebelah) untuk mendapatkan SIM.
Pengunjung lain dengan SIM yang valid diizinkan masuk, setelah menunjukkan SIM-nya. Seseorang yang mengganggu dirinya sendiri dengan berkeliaran sepanjang hari, mengganggu para penjual, mengambil brosur, dan mengosongkan kopi dan kue gratis akhirnya akan ditolak.
Sekarang, kembali ke Bob tanpa lisensi - yang harus dia lakukan adalah menahan kunjungan ke DMV sekali. Setelah itu, dia dapat mengunjungi dealer dan membeli mobil kapan saja dia suka, kecuali dia secara tidak sengaja meninggalkan dompetnya di rumah, atau lisensi miliknya hancur atau dicabut.
Lisensi pengemudi di dunia ini hampir tidak mungkin dipalsukan.
Kunjungan ke DMV melibatkan terlebih dahulu mendapatkan formulir aplikasi di antrian "Mulai Di Sini". Bob harus membawa aplikasi yang sudah selesai ke jendela # 1, di mana pegawai negeri sipil yang paling masam akan mengambil aplikasinya, memprosesnya, dan jika semuanya beres, cap aplikasi untuk jendela itu dan kirim dia ke jendela berikutnya. Maka, Bob pergi dari jendela ke jendela, menunggu setiap langkah dari aplikasinya untuk dilalui, sampai akhirnya ia sampai pada akhir dan menerima SIMnya.
Tidak ada gunanya mencoba "korsleting" DMV. Jika formulir tidak diisi dengan benar dalam rangkap tiga, atau jawaban yang salah diberikan di jendela apa pun, aplikasi dihancurkan, dan pelanggan yang malang dikirim kembali ke awal.
Menariknya, tidak peduli seberapa penuh atau kosong kantor itu, dibutuhkan jumlah waktu yang sama untuk dilayani di setiap jendela berturut-turut. Bahkan ketika Anda adalah satu-satunya orang dalam barisan, tampaknya personel suka membuat Anda menunggu sebentar di belakang garis kuning sebelum mengucapkan, "Selanjutnya!"
Namun, hal-hal yang tidak begitu mengerikan di DMV. Sementara semua proses menunggu dan pemrosesan untuk mendapatkan lisensi sedang berlangsung, Anda dapat menonton infomersial yang sangat menghibur dan informatif untuk dealer mobil saat Anda berada di lobi DMV. Faktanya, infomerical berjalan cukup lama untuk menutupi jumlah waktu yang Anda habiskan untuk mendapatkan lisensi.
Penjelasan yang sedikit lebih teknis:
Seperti yang saya katakan di bagian paling atas, menjadi perlu untuk memiliki beberapa status pada hubungan client-server yang memungkinkan Anda untuk memisahkan manusia dari bot. Anda ingin melakukannya dengan cara yang tidak terlalu menghukum pengunjung manusia anonim (tidak diautentikasi).
Pendekatan ini mungkin membutuhkan pemrosesan sisi klien AJAX-y. Pengunjung baru yang memukul sekali-sekali yang akan diserang diberi "Welcome New User!" halaman penuh teks dan gambar yang (dengan pembatasan sisi server yang tepat) membutuhkan waktu beberapa detik untuk memuat sepenuhnya. Sementara ini terjadi (dan pengunjung mungkin sibuk membaca halaman selamat datang), token pengenalnya perlahan-lahan sedang dikumpulkan.
Katakanlah, untuk diskusi, token (alias "SIM) terdiri dari 20 potongan. Untuk mendapatkan setiap potongan berturut-turut, kode sisi klien harus mengirimkan permintaan yang valid ke server. Server memasukkan penundaan yang disengaja (katakanlah 200 milidetik), sebelum mengirim potongan berikutnya bersama dengan 'stempel' yang diperlukan untuk membuat permintaan potongan berikutnya (yaitu, perangko perlu beralih dari satu jendela DMV ke yang berikutnya). Semua mengatakan, sekitar 4 detik harus berlalu untuk menyelesaikan bagian-tantangan-respons-bagian-tantangan-respons -...- bagian-tantangan-respons-penyelesaian
Pada akhir proses ini, pengunjung memiliki token yang memungkinkan dia untuk pergi ke halaman deskripsi produk dan, pada gilirannya, pergi ke halaman pembelian. Token adalah ID unik untuk setiap pengunjung, dan dapat digunakan untuk membatasi aktivitasnya.
Di sisi server, Anda hanya menerima tampilan halaman dari klien yang memiliki token yang valid. Atau, jika penting bahwa setiap orang akhirnya dapat melihat halaman, berikan penalti waktu untuk permintaan yang tidak memiliki token yang valid.
Sekarang, agar ini relatif ramah bagi pengunjung manusia yang sah, untuk membuat proses penerbitan token terjadi secara relatif non-intrusively di latar belakang. Oleh karena itu kebutuhan untuk halaman selamat datang dengan salinan dan gambar yang menghibur yang sengaja sedikit melambat.
Pendekatan ini memaksa throttle-down bot untuk menggunakan token yang ada, atau mengambil waktu setup minimum untuk mendapatkan token baru. Tentu saja, ini tidak banyak membantu melawan serangan canggih menggunakan jaringan pengunjung palsu.
sumber
Anda tidak dapat sepenuhnya mencegah bot, bahkan dengan captcha. Namun Anda dapat membuatnya sakit untuk menulis dan memelihara bot dan karena itu mengurangi jumlahnya. Terutama dengan memaksa mereka untuk memperbarui bot mereka setiap hari, Anda akan menyebabkan sebagian besar kehilangan minat.
Berikut adalah beberapa ide untuk membuatnya lebih sulit untuk menulis bot:
Harus menjalankan fungsi javascript. Javascript membuatnya jauh lebih sulit untuk menulis bot. Mungkin memerlukan captcha jika mereka tidak menjalankan javascript untuk tetap memungkinkan pengguna non-javascript yang sebenarnya (minimal).
Hitung waktu penekanan tombol saat mengetik ke dalam formulir (lagi melalui javascript). Jika tidak seperti manusia maka tolaklah. Sangat merepotkan untuk meniru mengetik manusia di bot.
Tulis kode Anda untuk memperbarui ID bidang Anda setiap hari dengan nilai acak baru. Ini akan memaksa mereka untuk memperbarui bot mereka setiap hari yang menyakitkan.
Tulis kode Anda untuk memesan ulang bidang Anda setiap hari (jelas dalam beberapa cara itu tidak acak bagi pengguna Anda). Jika mereka mengandalkan pesanan lapangan, ini akan membuat mereka tersandung dan sekali lagi memaksa pemeliharaan harian ke kode bot mereka.
Anda bisa melangkah lebih jauh dan menggunakan konten Flash. Flash benar-benar menyebalkan untuk menulis bot.
Umumnya jika Anda mulai mengambil pola pikir untuk tidak mencegahnya, tetapi membuatnya lebih berhasil, Anda mungkin dapat mencapai tujuan yang Anda cari.
sumber
Tetap tunda 5 menit pada semua pengumuman produk untuk pengguna yang tidak terdaftar. Pengguna biasa tidak akan benar-benar memperhatikan hal ini dan pengguna non-seksual akan terdaftar.
sumber
Saya tidak melihat beban besar yang Anda klaim dari memeriksa IP yang masuk. Sebaliknya, saya telah melakukan proyek untuk salah satu klien saya yang menganalisis log akses HTTP setiap lima menit (bisa jadi real-time, tetapi dia tidak ingin itu karena alasan yang saya tidak pernah mengerti sepenuhnya) dan membuat aturan firewall untuk memblokir koneksi dari alamat IP apa pun yang menghasilkan terlalu banyak permintaan kecuali alamat tersebut dapat dikonfirmasikan sebagai milik mesin pencari yang sah (google, yahoo, dll.).
Klien ini menjalankan layanan hosting web dan menjalankan aplikasi ini pada tiga server yang menangani total 800-900 domain. Aktivitas puncak berada dalam kisaran ribuan-hit-per-detik dan tidak pernah ada masalah kinerja - firewall sangat efisien dalam menjatuhkan paket dari alamat yang masuk daftar hitam.
Dan, ya, teknologi DDOS benar-benar ada yang akan mengalahkan skema ini, tapi dia tidak melihat itu terjadi di dunia nyata. Sebaliknya, dia mengatakan itu sangat mengurangi beban di server-nya.
sumber
Pendekatan saya akan fokus pada solusi non-teknologi (jika Anda memasuki perlombaan senjata Anda akan kehilangan, atau setidaknya menghabiskan banyak waktu dan uang untuk). Saya akan fokus pada bagian penagihan / pengiriman - Anda dapat menemukan bot dengan menemukan beberapa pengiriman ke alamat yang sama atau dengan beberapa biaya ke metode pembayaran tunggal. Anda bahkan dapat melakukan ini di seluruh item selama beberapa minggu, jadi jika pengguna mendapat item sebelumnya (dengan merespons sangat cepat) ia mungkin akan diberi semacam "cacat" kali ini.
Ini juga akan memiliki efek samping (menguntungkan, saya pikir, tetapi saya bisa salah pemasaran-bijaksana untuk kasus Anda) mungkin memperluas lingkaran orang-orang yang beruntung dan bisa membeli woot.
sumber
Sebagian besar solusi teknis murni telah ditawarkan. Karena itu saya akan menyarankan pandangan lain tentang masalahnya.
Seperti yang saya pahami, bot dipasang oleh orang - orang yang benar - benar mencoba membeli tas yang Anda jual. Masalahnya adalah -
Alih-alih mencoba menghindari bot, Anda dapat mengaktifkan pembeli tas potensial untuk berlangganan email, atau bahkan pembaruan SMS, agar diberitahukan ketika terjadi penjualan. Anda bahkan dapat memberi mereka satu atau dua menit awal (URL khusus tempat penjualan dimulai, dihasilkan secara acak, dan dikirim dengan surat / SMS).
Ketika pembeli ini pergi untuk membeli mereka ada di situs Anda, Anda dapat menunjukkan kepada mereka apa pun yang Anda inginkan di spanduk samping atau apa pun. Mereka yang menjalankan bot akan lebih suka mendaftar ke layanan notifikasi Anda.
Pelari bot mungkin masih menjalankan bot pada notifikasi Anda untuk menyelesaikan pembelian lebih cepat. Beberapa solusi untuk itu dapat menawarkan pembelian satu klik.
Ngomong-ngomong, Anda menyebutkan bahwa pengguna Anda tidak terdaftar, tetapi sepertinya mereka yang membeli tas ini bukan pembeli acak, tetapi orang yang menantikan penjualan ini. Dengan demikian, mereka mungkin bersedia mendaftar untuk mendapatkan keuntungan dalam mencoba "memenangkan" tas.
Intinya yang saya sarankan adalah mencoba dan melihat masalah sebagai masalah sosial, bukan masalah teknis.
Asaf
sumber
Memblokir waktu agen pengguna yang membuat begitu banyak permintaan per menit. Misalnya, jika Anda memiliki seseorang yang meminta halaman persis setiap 5 detik selama 10 menit, mereka mungkin bukan pengguna ... Tapi mungkin sulit untuk memperbaikinya.
Jika mereka memicu peringatan, arahkan kembali setiap permintaan ke halaman statis dengan sesedikit mungkin DB-IO dengan pesan yang memberi tahu mereka bahwa mereka akan diizinkan kembali dalam X menit.
Penting untuk menambahkan bahwa Anda mungkin hanya perlu menerapkan ini pada permintaan untuk halaman dan mengabaikan semua permintaan untuk media (js, gambar, dll).
sumber
Mencegah DoS akan mengalahkan # 2 dari tujuan @ davebug yang diuraikan di atas, "Menjaga situs pada kecepatan yang tidak diperlambat oleh bot" tetapi tidak perlu menyelesaikan # 1, "Jual item ke manusia yang bukan skrip"
Saya yakin seorang penulis naskah dapat menulis sesuatu untuk skate tepat di bawah batas berlebihan yang masih akan lebih cepat daripada manusia bisa melalui formulir pemesanan.
sumber
Baiklah jadi spammer bersaing orang biasa untuk memenangkan lelang "rawa omong kosong"? Mengapa tidak membuat pelelangan berikutnya menjadi "kantong sampah" literal? Spammer dapat membayar uang baik untuk tas penuh doggy do, dan kita semua menertawakan mereka.
sumber
Yang penting di sini adalah untuk mengubah sistem untuk menghapus beban dari server Anda, mencegah bot memenangkan kantong sampah TANPA membiarkan botlords tahu Anda bermain game mereka atau mereka akan merevisi strategi mereka. Saya tidak berpikir ada cara untuk melakukan ini tanpa proses di akhir Anda.
Jadi, Anda merekam hit di beranda Anda. Setiap kali seseorang mengklik halaman koneksi itu dibandingkan dengan hit terakhirnya, dan jika itu terlalu cepat maka dikirim versi halaman tanpa penawaran. Ini dapat dilakukan dengan semacam mekanisme penyeimbangan beban yang mengirimkan bot (klik yang terlalu cepat) ke server yang hanya melayani versi cache halaman beranda Anda; orang sungguhan dikirim ke server yang bagus. Ini mengambil beban dari server utama dan membuat bot berpikir bahwa mereka masih melayani halaman dengan benar.
Bahkan lebih baik lagi jika penawaran itu bisa ditolak. Maka Anda masih dapat membuat penawaran di server palsu tetapi ketika bot mengisi formulir mengatakan "Maaf, Anda tidak cukup cepat" :) Maka mereka pasti akan berpikir mereka masih dalam permainan.
sumber
Bagaimana Anda tahu ada skrip yang menempatkan pesanan?
Inti dari masalah Anda adalah bahwa Anda tidak dapat memisahkan skrip dari pengguna yang sah dan karena itu tidak dapat memblokir mereka, jadi bagaimana Anda tahu ada skrip sama sekali?
Jika Anda memiliki cara untuk menjawab pertanyaan ini, maka Anda memiliki serangkaian karakteristik yang dapat Anda gunakan untuk memfilter skrip.
sumber
Mari kita atasi masalahnya - Anda memiliki bot yang membeli barang-barang yang Anda inginkan dibeli oleh orang-orang nyata, bagaimana dengan membuat peluang nyata bahwa bot akan membeli barang-barang yang tidak Anda inginkan untuk dibeli oleh orang sungguhan.
Miliki kesempatan acak untuk beberapa html yang tidak ditampilkan yang oleh para penggaruk akan dianggap sebagai situasi nyata, tetapi orang-orang nyata tidak akan melihat (dan jangan lupa bahwa orang-orang nyata termasuk yang buta, jadi pertimbangkan juga pembaca layar dll), dan ini berjalan untuk membeli sesuatu yang terlalu mahal (atau tidak melakukan pembelian yang sebenarnya, tetapi mendapatkan perincian pembayaran bagi Anda untuk dimasukkan ke dalam daftar larangan).
Bahkan jika bot beralih ke 'waspada pengguna' daripada 'melakukan pembelian', jika Anda bisa mendapatkan cukup alarm palsu, Anda mungkin dapat membuatnya cukup tidak berharga bagi orang-orang (mungkin tidak semua orang, tetapi beberapa pengurangan dalam scamming adalah lebih baik daripada tidak sama sekali) untuk tidak repot.
sumber