私は答えを受け入れましたが、悲しいことに、私たちは元の最悪のシナリオに固執していると思います:CAPTCHA全員ががらくたの購入を試みます。簡単な説明:キャッシュ/ Webファームはヒットの追跡を不可能にし、回避策(キャッシュされていないWebビーコンの送信、統合テーブルへの書き込みなど)は、ボットよりもサイトの速度を低下させます。シスコなどの高価なハードウェアが高いレベルで役立つ可能性がありますが、CAPTCHAで全員を代替する場合、コストを正当化するのは困難です。後でより完全な説明を試み、将来の検索者のためにこれをクリーンアップします(ただし、コミュニティWikiであるため、他の人も試してみてください).
これは、woot.comでのバッグ販売に関するものです。私はWootの子会社であり、デザインを担当し、製品の説明、ポッドキャスト、ブログの投稿、フォーラムの管理を行うWoot Workshopの社長です。私はCSS/HTMLを使用しており、他の技術にほとんど精通していません。私は開発者と密接に協力し、ここでのすべての答え(および私たちが持っている他の多くのアイデア)について話しました。
ユーザビリティは私の仕事の大部分であり、サイトをエキサイティングで楽しいものにすることは、残りのほとんどです。そこで、以下の3つの目標が導き出されます。 CAPTCHAは使いやすさを損ない、ボットは私たちのがらくた売り上げから楽しさと興奮を奪います。
ボットは、Random Crapセールの2番目のスクリーンスクレイピング(および/またはRSSのスキャン)で、フロントページを何十回も非難しています。彼らがそれを見た瞬間、それはログインし、私が欲しいワンをクリックし、フォームに記入し、がらくたを買うプログラムの第二段階を引き起こします。
lc :このメソッドを使用するstackoverflowおよびその他のサイトでは、認証された(ログインした)ユーザーをほとんど常に処理しています。
Wootでは、匿名(ログに記録されていない)ユーザーがホームページを表示できます。言い換えれば、スラミングボットは認証されていない(およびIPアドレスを除いて本質的に追跡不可能である)ことがあります。
IPのスキャンに戻ります。a)クラウドネットワーキングとスパムボットゾンビのこの時代ではほとんど役に立ちません。b)1つのIPアドレスからのビジネスの数を考えると、あまりにも多くの罪のない人を捕まえます(非静的IP ISPおよびこれを追跡しようとする潜在的なパフォーマンスヒット)。
ああ、人々に私たちに電話をかけてもらうのは最悪のシナリオでしょう。電話してもらえますか?
BradC :Ned Batchelderのメソッドはかなりクールに見えますが、サイトのネットワーク用に構築されたボットを打ち負かすようにかなりしっかりと設計されています。私たちの問題は、ボットが私たちのサイトを打ち負かすために特別に構築されていることです。これらのメソッドの一部は、スクリプト作成者がボットを進化させてハニーポットを無視し、フォームIDの代わりに近くのラベル名をスクリーンスクレープし、javascript対応のブラウザーコントロールを使用するまで短時間動作する可能性があります。
lc again :「もちろん、誇大広告がマーケティングスキームの一部でない限り」はい、間違いなくそうです。アイテムが表示されたときの驚きと、それを手に入れることができたときの興奮は、おそらく実際に得られるがらくたと同じかそれ以上に重要です。先着/先着を排除するものはすべて、がらくたを「勝つ」というスリルに有害です。
novatrust :そして、私は、新しいボットの大君たちを歓迎します。実際にRSSフィードを提供して、サードパーティのアプリが製品情報を求めてサイトをスキャンできるようにしますが、メインサイトのHTMLより先ではありません。私が正しく解釈している場合、あなたのソリューションは、目標1を完全に犠牲にし、ボットがほとんどのくだらないものを購入するという事実を捨てることによって、目標2(パフォーマンスの問題)に役立ちます。あなたの最後のパラグラフの悲観論は私にとって正確だと思うので、私はあなたの反応を支持しました。ここに特効薬はないようです。
残りの応答は一般にIPトラッキングに依存しますが、これもまた、役に立たない(ボットネット/ゾンビ/クラウドネットワーキングを使用)と有害(同じIP宛先から来る多くの罪のない人を捕まえる)の両方のようです。
他のアプローチ/アイデアはありますか?私の開発者は、「CAPTCHAをやろう」と言い続けていますが、私たちのがらくたを欲しがっている実際の人間すべてにとって、邪魔にならない方法を望んでいます。
あなたは非常に高い知覚価値を持つ安価なものを販売しており、あなたは非常に限られた量を持っているとします。このアイテムをいつ販売するかは、誰にもわかりません。そして、何百万人もの人々があなたが売っているものを見るために定期的にやって来ます。
最終的には、スクリプターとボットがプログラムで[a]そのアイテムを販売するタイミングを把握しようとし、[b]それらが最初に購入したものであることを確認します。これには2つの理由があります。
一見明白な解決策は、ユーザーが注文する前にジャンプするためのフープを作成することですが、これには少なくとも3つの問題があります。
別の解決策は、頻繁にヒットするIPを監視したり、ファイアウォールからブロックしたり、その他の方法でIPが注文されないようにすることです。これは2.を解決し[b]を防ぐことができますが、IPのスキャンによるパフォーマンスヒットは膨大であり、スクリプト作成者が単独で引き起こしたよりも1のような問題を引き起こす可能性があります。さらに、クラウドネットワーキングとスパムボットゾンビの可能性があるため、IPチェックはほとんど役に立ちません。
注文フォームをしばらく(たとえば、0.5秒)強制的に読み込む3番目のアイデアは、高速注文の進行を遅くする可能性がありますが、やはり、スクリプターが最初の人であり、どんな速度でも有害ではありません実際のユーザー。
BOCを最も頻繁に購入したユーザーの記録が必要です。なぜそれらのアカウントなどを禁止しないのですか。確かに合法的なユーザーはこのプロセスで禁止されますが、あなたは製品を提供しているビジネスであり、ユーザーのグループなどによって乱用されている場合、あなたはそれらへのサービスを拒否する権利があります。 Paypalや銀行口座など、ユーザーに関する多くの情報があるため、これらのアカウントを禁止して、ボットユーザーに新しいアカウントの取得を強制することができます。確かに、私は常にBOCを購入するスクリプトを考え出すことも、ネットからダウンロードすることもできますが、それよりも良いモラルがあります。実際にBOCを正常に購入したことがないので、大量の利益を期待してBOCを受け取りたい合法的なユーザーの不満を知っています。おそらく、BOCを個別のアイテムとして時々提供する代わりに、毎日ランダムなユーザーに提供することができます。アイテムを受け取ると、小さなメモと、BOCも受け取ったという追加のアイテムを受け取ります。そして、誰かがBOCを取得できる唯一の方法は、実際の人間だけが望んでいたものを合法的に購入した場合です。コーヒーメーカーなどを購入し、正当な購入に加えて42インチのテレビなどを受け取ることほど良いことはありません。スクリプトキディの大部分は、BOCを取得するためにサイトに興味を持たなくなると思います。また、10ドル以上の購入を約束する必要があります。
この回答が既に送信されている場合はご容赦ください。それらすべてを読んで理解しようとする答えはたくさんあります。
なぜ購入APIを変更するたまにできないのですか?それは人間のユーザーに対して完全に透過的であり、ほとんどのボット購入者を殺すのではないでしょうか?
実装の1つは、「I Want One」ボタンを押した後にユーザーが入力してページに送信する必要があるフィールドの名前を変更することです。あなたは実際に年に何回BOCを販売していますか?それほど頻繁ではありません。そのため、BOCが販売されるたびに、異なる購入APIをプログラミング、テスト、使用できる状態にすることは、大きなプログラミングの負担にはなりません。
古い、不正なAPIを使用しているボットがサーバーをダウンさせないようにしてください。毎回別のサーバーでBOC購入APIをホストすることもできます。そうすることで、ボットは、私たち人間のBOC購入者が実際に使用していないサーバーをダウンさせることができます。
この目的のためにCloudflareを使用します。これは私のサイトには影響しませんが、CAPTCHAで悪意のあるユーザーを自動的にブロックし、より多くの機能を提供します。
私の理解が正しければ、あなたの最大の問題は、自動購入そのものではなく、画面のスクレイピングにあります。
もしそうなら、あなたの最も効果的なステップは、ページをランダムにエンコードすることで画面スクレイピングを無効にし、同じ(種類)に見えるようにしますが、コードレベルでは常に異なります。 (16進コード、Javaエンコーディング、画像を使用し、周囲のコード構造を変更...)
それは彼らにスクレイピングコードを絶えず書き直すことを強制し、したがって彼らがあなたの「がらくた」を自動的に購入することをずっと高価にします。彼らが管理できる場合。彼らはおそらく、彼らがそれから何も得られず、それを落とすことができないことに気付くまで、しばらくの間あなたのウェブサイトをヒットし続けるでしょう。
ボットから地獄を混乱させることのマイナス面は、検索エンジンのクローラーから地獄を混乱させることです。
シスコのCAPTCHAプログラムの費用を支払うために、今日は十分な準備をしてください!私たちは皆、コンサートのチケットなどを購入することに慣れています。今日行われている方法は、いくつかの動揺と宝くじやスイープに関する質問を提起しています。試してみる前にチェックインしたと思いますが、BOCを購入するのは本当に楽しい方法ではありません。
BOCを最初に入手するか、または目の前にあっても優れた製品を入手することで、人々をWootに引き寄せます。ランダムなBOCが出現するのを待っている間、ぶらぶらして必要のないものを大量に購入する理由がない場合、売り上げは落ちます。 CAPTCHAは、これらの人々を打ち負かし、Wootの興奮を維持する唯一の方法かもしれません。
私は前回BOCを注文した最初の1人であり、最初の注文は100万回の発送でダンプされ、2番目は注文が通過しましたが、後でアカウントから削除されました。私は動揺していた。 Wootを去り、他の日に過去に行ったようにアイテムを購入していません。今日、この方法でもう一度試してみました。将来的には、楽しいもののためのCAPTCHAがなくてはならないでしょう。
Wootのようになろうとしているサイトはたくさんあります。もちろん、彼らはあなたのレベルまでではありません。製品が欲しいからではなく、製品の説明を読んでいるのに気づきますが、笑いさえするためにチェックインします。誰かがより公平なプログラムに参加して、あなたのビジネスの大部分を奪うのを見るのは嫌です。
ただ私の意見。私は看護師なので、ボットとコンピューターについてはほとんど何も知りません。しかし、私の投票はより高いレベルにアップグレードすることです...それは:)ロリ
全員をキャプチャするために、ボットであると思われるIPからのCAPTCHAだけ、またはサイトを攻撃するユーザーだけを必要とするGoogleソリューションを使用してみませんか? CAPTCHAを購入するときに誰かに尋ねるのは、サイトをハンマーで打っていればそれほど悪くはないでしょう。F5を繰り返し押し続けるのとほぼ同じです。アラームボットの動作を停止するために、ハンマーで打つとき、たとえば100回(おそらくもっと小さい?)ボッティングを防ぐために何らかのキャプチャが必要ですが、実際のユーザーがボットのように振る舞うという事実も考慮する必要があります。
BOCを提供するたびにBOCの名前と画像を変更するだけではどうですか? BOCの最新の繰り返しを見るのは、人を惹きつける楽しみの一部になるでしょう。
Woot.comの長年(4年)ユーザーであり、ガレージのスペースを占有している他の多くのアイテムの中で、数袋のがらくたの購入者として、このソリューションはWootテーマ全体の一部であるように思われます。
キャプチャを使用しますが、ユーモラスな静脈です。 1,000,000ドルのプロモーションと同じように、自分を個人として識別することでゲームを作ります。これは、過去に、BOCの「売り出し」を妥当な時間遅らせましたが、私のような人々は、クーポンコードを入力するためのかなりシンプルだがユーモラスなパズルを理解しようと急いでいます。
また、人々はサーバーエラーについて絶え間なく文句を言いますが、戻ってくるのを止めません。私の意見では、BOCのスリルの一部は、それを手に入れようとしている他の人々が何億人もいるという事実です。サーバーがエラーまたはファンキーなページをスローした場合、1500個の製品の1つを取得しようとしている人が多すぎるグループのどこかにいることを示しています。
パズルを作成するのと同じくらい創造性を発揮し、それが十分に独創的である場合、他の人にチャンスを与えるのに十分なほどボットを遅らせます。コードとしてキャプチャされたランダムなWordを組み込み、「I Want One」と購入ページの間に暫定ページを配置します。これには人間特有の何らかのやり取りが必要で、何が起こるかがわかるまでボットを停止しました。
•退屈なものを実装しておらず、キャプチャが読みにくい場合があります。•プロセスをより楽しくしました。•実際の安全な購入サーバーの負荷を減らしました。•ユーザーに必要なトレーニングを行います。 BOCを取得するために何かを「実行」する•暫定ページでボットを停止し、ほとんどの人が少なくとも面白いパズルを試してみる機会を得るまで、購入を遅らせます。
•ランダムであることがBOCの本質であるため、ランダムで変化するパズル/タスクはBOCのピッチ全体に単純に収まります。
試してみると、暫定ページの背後にあるテクノロジーがより高度になり、購入ページで使用するためにランダムな情報をキャプチャーできます。以来
ボットやwootalyzer以外のスクリプトを購入せずに購入できましたが、これは許容できる援助だと思います。5/ 31/05以降7 BOCです。私が手に入れられなかった最高のものは、プリーズプリーズミーBOCでした。 B&Dバッテリーも楽しいものでしたが、ボットを困らせることはなく、通常のユーザーをイライラさせたに違いないと思います。
技術の問題に対する最善の解決策は、技術の追加ではない場合があります。
フォームの名前とIDをランダム化または暗号化し、フォームフィールドの順序をランダム化し、フォームラベルにランダムなキャプチャイメージをラベル付けすると、スクリプト攻撃がさらに難しくなります:-D
血まみれのページ全体をCAPTCHAにしてください!
セサミストリートのようなソルタ...これらのうち8つはここに属さない...
9つのアイテム、9つのHTMLフォーム、9つのボタンを画面に配置します。
(9はその日の数字です...レイアウトの見栄えを良くしたい任意の数字を選択してください。12。おそらく、読み込み中のブラウザーの解像度に合わせてカスタマイズしてください...)
そして、一人一人のためにそれらをスクランブル。
BOCを「見る」必要があることを確認してください。もちろん、他の8人も「見る」だけで、購入するアイテムではないことを知る必要があります。
ページのソースの裏側のすべてを参照するために、狂った数字だけを使用していることを確認してください。それで、BOTはBOC時間を確認します...しかし、処理のために送信するために適切なHTMLフォームを選択するのは無理があります。
Pubsubhubbubを使用してRSSフィードを公開した場合、Woot-offで次のものを見るためにWebページに何度もアクセスする必要はなく、Googleに表示されるのを待つだけです。リーダー。
(一般的な問題ではなく)特定の問題に対する潜在的な解決策は、「がらくた」を見たい場合にサインインすることをユーザーに要求することです。ログインしているユーザーにのみがらくたの賞品を表示します。他のすべてのアイテムは、以前と同じように、ログインしていないユーザーに表示されたままにすることができます。その後、忠実なユーザーにはがらくたが最優先されます。
おそらく実際のユーザーががらくたを見つける可能性を高めるためにこれが行われているという通知で、これをユーザーに通知する必要があることは明らかです。
特定の問題が1つの特定の種類のアイテムのボット収集である場合、制限の最も少ない代替策を採用し、その特定の攻撃に対してのみ防御します。このオプションは、あなたが心配しているcaptchyasとユーザビリティヒットを防ぎます。
ボットがログインしてスパムを開始した場合、強制的にログアウトしてアカウントをロックできます。
彼らがバッグを手に入れるためにそこにいるだけなら、彼らはかなり早く去り、あなたのページは大ヒットをとることはありません。高度な技術的ソリューションを忘れてください。
2つのこと:
サーバー層ソリューション:mod_evasive(Apacheを使用する場合)
http://www.zdziarski.com/projects/mod_evasive/
フロントレイヤーソリューション:リバースキャプチャ、またはその他の非侵入型キャプチャ
最大値以上を検出した場合にIPアドレスをブラックリストに登録する単純なIPファイアウォールルールを作成します。 1秒あたりに着信するリクエストの数。
事前の注意事項:
私はスクリプトに精通していません。ここで他のコメントの多くを読んでいません。
今朝、Wootの説明からこれを見つけました。 wootサイトの適度なユーザー(およびBOCの2回の手動購入者)からのコメントが役立つと思いました。
Wootはユニークな位置にあります両方商業サイトであり、忠実なユーザーがいる目的地であり、そのバランスの繊細さを理解しています。しかし個人的には、Crap-CAPCHA(「CRAPCHA」-どういうわけか私はそのギャグを最初に作成したことを疑う)がユーザーに与える「ユーザーへの負の影響」について懸念を感じています。ユーザーとして、私は自分が人間であることを証明できてうれしいです。そして、私はWootがプロセスを楽しく面白くして、全体的な体験に統合することを信頼しています。
これは「軍拡競争」につながるのでしょうか?私は知らないが、それは助けることができるだけです。たとえば、購入する重要な情報が製品イメージに含まれているか、製品の説明に含まれている場合(毎回異なる方法で)、C-Wordの検出時に購入ページを開くことがスクリプトの最善策です。実際、これは問題ないと思います:オンラインである必要があり、先着順がまだ適用されます-Wootalyzerと同様のツールは増加します---睡眠中に購入を自動化するのではなく、awarenessまたは仕事。
これを理解して頑張ってください、そして良い仕事を続けてください。
JGM
あなたはこの道をハードにしています。今日ボットサイトでサイトからBOCを勝ち取ったので、たぶん自分を蹴りますが、サイトのメインページのキャプチャにRANDOM CRAPテキストを入れるだけです。ボットはすべて「RANDOM CRAP」というテキストを探します。そのため、基本的にはそれらを最初にトリガーすることは避けます。彼らの目で見ている人は誰でもそれが「Random Crap」と言うのを見るでしょう。
RSAキーを各ユーザーに販売するのはどうですか?).
私は答えにBoCを期待しています;)
フロントページを画像にマップされたグラフィックだけにしてください(ラベル、タグなどのない1つの画像すべて)。ほぼすべてのデバイスで人間が読み取りおよび理解することは簡単ですが、ボットが尋問することは不可能です。本質的に、フロントページ全体をキャプチャにします。
ボットの世話をする魔法の銀の弾丸はおそらくないでしょうが、これらの提案の組み合わせはそれらを阻止し、より管理しやすい数に減らすのに役立つかもしれません。
これらの提案について説明が必要な場合はお知らせください。
私はおそらく問題を完全に理解していないかもしれませんが、この考えは私に起こりました。 AJAXを使用して、一定の間隔で動的コンテンツを描画および更新し、更新を使用してページ全体のロードを意図的に遅くします。
たとえば、最初にアクセスしたときにページ全体が15秒かかるようにし、その後5秒などの設定時間後にAJAXを使用して動的コンテンツを自動的に更新します。完全なページの再読み込みを行うことは大きな不利益です。ページには新しい情報(広告を含む)が定期的に表示される場合がありますが、リロードを使用したページ全体の再描画はかなり遅くなります。
スクリプトキディがAJAXクエリを把握して自動化することは可能ですが、同じIPからのリクエストをレート制限することも非常に簡単です。標準的な人間のユーザーがブラウザからこれらのリクエストを開始する一般的な方法はないため、同じIPからAJAX URLへの高速リクエストが何らかの形式の自動化によって開始されることは明らかです。システム。
サーバー上のiptables(Linuxベースの場合)を介してIPアドレスごとに同時接続制限を使用するか、専用の「ルーター」を使用する
2つのソリューション、1つのハイテク、1つのローテク。
最初のハイテク:ボットは最初の数ミリ秒でそれらの多くを取得するため、BOC製品は数秒で売り切れます。そのため、ボットを打ち負かすのではなく、スキャン対象のもの、つまりがらくたの袋を販売します。もちろん価値のないがらくた:曲がったペーパークリップとロージーオドネルの汚された写真。その後、一度に数秒間、サーバーにランダムな遅延を組み込みます。販売が継続すると、販売された製品の実際の価値は増加しますが、販売価格は増加しません。そうすれば、最初のバイヤー(最初の数ミリ秒のボット)は支払った金額(茶色のタマネギケーキ?)よりもはるかに少ない価値を手に入れ、次のバイヤー(遅いボットまたはより速い人間)は目立たないが購入価格の価値を手に入れます(そして、最後の買い手(ほとんどすべての人間)は、購入価格(シャンパンを破る?)よりも価値のあるものを手に入れるでしょう。その薄型テレビは、最後に購入したBOCにある可能性があります。
あまりにも長い間待っている人は見逃しますが、同時にあまりにも速く買う人はだまされます。秘Theは、ある程度の時間待つことですが、あまり長くしません。運が関係していますが、それはそうあるべきです。
ローテクの解決策は、BOCの名前を、人間には解釈できるがボットにはできないものに変更することです。排泄物の皮?臭いの入った袋?各種商品に隣接するトポロジ的に平坦な表面?同じ名前を2回使用したり、わずかに異なる写真を使用したり、実際に販売されているものを製品の説明で説明したりしないでください。
かなり単純な解決策は、フォームのレンダリングと応答の取得の時間差を追跡することです。通常、ボットの応答時間は非常に短いミリ秒であり、ユーザーはそれを行うことができません。または数時間の極端に長い応答時間。
これを行うDjangoスニペットと、より詳細な説明があります。