キャプチャ





先日、 DoctorDemonが面白いと思うバージョンのcaptchaを提供してくれました。 投稿へのコメントでは、Habrausersの見解は異なっていて、主な欠点はボットの選択の容易さでした。 私は興味を持って考えました-それを実装してみませんか?





熟考の過程で、迷惑なボットの生活を複雑にするために、毎回ランダムに「迷宮」を生成するという意志決定に至りました。



実装



気配りのある読者は、他のシンボルを放棄し、「ラビリンス」の構造をわずかに単純化して、セル全体を移動するだけにしておくことに気付くでしょう。 より美しくするために、パスは交差しません。 つまり ツリーの形の迷路を想像できます。その頂点は開始点であり、各頂点の子は、分岐「左」、「右」、「上」、「下」をたどった後の点です。



もちろん、これはすべてボットのタスクを簡素化しました-しかし、このおかげで迷路はよりフレンドリーに見えるようです。 迷路を生成するための時間が短縮され、通常の訪問者のために迷路を通過するプロセスが容易になります。

こちらで実際に試すことができます: http : //star.nn.ru/

次に、仕事の原則に移ります。



ボットのタスクが「enter 2 + 2」という質問に対する答えを見つけることとは異なるように、私はトリックを探さなければなりませんでした。 迷路を生成した後、それはセッション識別子とともにデータベースに保存されます。 熱心なユーザーがポイント「A」に移動する間、javascriptを使用した彼のすべての動きは非表示フォームフィールドに入力されます。 合格すると、送信が表示され、クリックすると、コメンテーターの名前、作成されたテキスト、およびパスがサーバーに送信されます。 すでにサーバー側では、同じ迷路がデータベースからロードされ、勤勉なスクリプトがユーザーのアクションを繰り返し、迷わないようにしますが、最終的にはポイント「A」になります。 すべてがそのように判明した場合-キャプチャが完了し、コメントが追加されます。 それ以外の場合、悪意のあるユーザーがいることは明らかであり、たとえばIPアドレスによって安全にブロックできます(まあ、これはしませんでした)。



ただし、選択のタスクが不溶になることはなく、さらに訓練されたキャプチャウォーカーの軍隊は保護を回避します。 これが最初のマイナスです。



2番目のマイナスはサーバーの負荷です。 まず、迷路を生成するまさにそのタスクにはリソースが必要です。 さらに、迷路を保存するときとロードするときに、データベースへの少なくとも2つのアクセスが必要です。 一般に、後で消去することが望ましいでしょう。 もちろん、ここでは、迷路をサーバーからクライアントに、またはその逆にドラッグできます。 数百の異なる迷路を生成し、生成せずにランダムにベースから出すこともできます。



さらに、「モバイル」ビジターと大量の追加データに問題があります。



PSこれは、コーヒーブレイク中に作成された欠陥がないわけではなく、単なる横向きのビューです。






All Articles