平和的なボットネット

最新の検索エンジンは、膨大な量の情報を独立して整理できるため、あらゆるトピックに関する資料をすばやく見つけることができます。 ただし、オンラインストアで商品を検索したり、人材派遣会社のデータベースの空きスペースを検索したり、一般的にインターネット上のカタログ情報を検索したりする場合、ほとんどの場合、そのような要求を満たすため、検索エンジンの独立性について話すことはできませんソースサイトがディレクトリを特別な形式でアップロード( データフィード )する必要があります。



セマンティックマークアップのないディレクトリからファクトを自動的に抽出するのは困難な作業ですが、任意の非構造化テキストからファクトを抽出するよりもはるかに簡単です。



技術



形式化された形式でデータを表示する必要のない本格的なカタログ指向の検索エンジンを作成できる技術を開発しました。やや珍しい検索ロボットの助けを借りて、任意の言語で構成されたランダムに構造化されたWebディレクトリから情報を独立して抽出できます。 ロボットの珍しい機能は、Webページを分析し、Webプロキシを介してフレーム(iframe)にロードするJavaScriptプログラムであることです。 このような一見物議を醸す決定には多くの利点があります。



JavaScriptロボットは、一般ユーザーが見ているのと同じ方法でサイトを「見ます」。 これにより、JavaScriptからコンテンツが部分的または完全に生成されているため、通常のロボットにはアクセスできないサイトでも処理できます。 さらに、さまざまなイベントをエミュレートする機能(たとえば、ボタンを押す)により、JavaScriptロボットは動的サイトを表示するだけでなく、動的サイトをナビゲートできます。



Webページを分析するとき、従来の検索エンジンは、デザイン(デザイン)にあまり注意を払うことなく、主にコンテンツに焦点を合わせます。 ディレクトリ指向の検索エンジンロボットは、このコンテンツからいくつかの事実のみを抽出して、さらに選択的にする必要があります。 カタログページの分析、より正確にはユーザーのページの見方を考慮したカタログページの分析により、JavaScriptロボットはより良い仕事をすることができます。



検索ロボットの「軍隊」の仕事のために、かなりの計算リソースが必要です。 特別なソフトウェアとハ​​ードウェアを必要とする従来のクローラーとは異なり、JavaScriptロボットを使用すると、検索エンジンサイトに直接埋め込むことができます。これにより、エンドユーザーのブラウザーの処理能力をサイトで使用しながら使用できます。 ボットネットとピアツーピアネットワークの間に何かがあることがわかります。サイトはユーザーに情報を提供します-ユーザーはコンピューティングパワーでサイトを支援します。



どのように機能しますか?



テクノロジーを作成するとき、次のルールに沿って導かれました:マシンが長いが許容できる時間内に解決できる問題があり、人が同じ問題をはるかに速く解決できる場合、タスクは最初にマシンに与えられます、人間の時間は貴重であり、第二に、当社の技術により、エンドユーザーの膨大な計算能力を無料で使用できます。



ほとんどの場合、新しいディレクトリを検索エンジンに接続するには、ディレクトリの最初のページのURLを指定するだけです。 これが存在しない場合は、「最も近い」URLを指定する必要があります。 システムはこれをWebプロキシを介してフレームにロードし、ユーザーのアクションを注意深く監視します。ユーザーは、ディレクトリの先頭に最短で移動する方法を示すだけで十分です。 サイトで通常とは異なるナビゲーションシステムを使用している場合は、デモンストレーションも必要になる場合があります。 つまり、接続システムは、一般ユーザーがカタログの最初のページに到達するのが難しいほど複雑です。



新しいサイトはそれぞれ調査の対象となり、その間にロボットはその構造的特徴を明らかにします。 これにより、将来、必要なデータをより適切に認識できるようになり、サイトの設計の変更を監視して適切に対応することも可能になります。 この段階は完全に自動化されており、人間の介入は不要です。



調査を完了すると、ロボットは情報の抽出に進みます。その際、以前に接続されたディレクトリを操作するためのトレーニングの結果として取得されたデータに依存します。 このデータが十分ではなく、ロボットがすべての必要な事実を個別に識別および抽出できない場合、システムはロボットに新しいディレクトリを操作するようにトレーニングする機会を提供します:問題ページはWebプロキシを介して開かれ、ユーザーは指定するだけで十分ですシステムは事実を明らかにしていません。



私たちの技術には、常に人間の関与が必要と思われるかもしれません。 これはそうではありません。最悪のシナリオを説明しました。 接続された新しいカタログごとに、システムはよりスマートになり、人の参加はますます少なくなります。



安全性



ディレクトリサイトの潜在的に危険なページをエンドユーザーのブラウザーにダウンロードすると、ユーザーのコンピューターがマルウェアに「感染」する可能性があります。 この問題の深刻さを認識しています。 現時点では、クローラーはInternet Explorerファミリーのブラウザーでは無効になっています(モバイルプラットフォームでも、その他の理由で)。 Google Safe Browsing APIを使用して、ダウンロード可能なリソースの検証を追加する作業も行っています 。 また、ロボットはすべてのページをウェブプロキシ経由でのみ開くため、後者は明らかにコンテンツを分析する機能を備えています。 現在、この機能を使用してエンドユーザーのセキュリティを最大限に高めるためのさまざまなオプションを検討しています。



一方、ユーザーが作業結果を偽造してサーバーに誤った情報を送信しようとすることを妨げるものは何もありません。 偽造を排除するために、各タスクは、異なるコンピューターで実行されている複数のロボットから同じ結果が得られた場合にのみ完了すると見なされます。



100回聞くよりも1回見る方が良い



テクノロジーの実際の動作を実証するために、 Maperty検索エンジンを作成しました。これは、賃貸用に提供されるプロパティのマップです。 現在、Mapertyは実験用の単なる実験台であり、技術の動作を実証する目的にも役立ちます。ユーザーが地図を操作している間、検索ロボットが不動産業者から新しいオファーをダウンロードして処理します。



現在、カードは空ですが、モスクワ、サンクトペテルブルク、キエフ、ベラルーシ、エストニア、ポーランド、アイルランドで約1万件の申し出が処理中です。 habr効果の助けを借りて、問題が数時間で解決されることを願っていますが、システムアーキテクチャは、データがすぐにカードに届かないようになっていますが、部分的には、一日の終わりに近づくにつれて徐々にサイズが大きくなります。



www.maperty.ruで興味のある方は大歓迎です 。 ロボットはChrome、Firefox、Safari、Operaでのみアクティブになり、1つの文を解析するのに約1分かかります。小さな実験に参加したい場合は、空白のマップが表示されているときにブラウザーウィンドウを閉じないでください。



使用された内容(方法および場所)



Java用Google App Engine(ロボット用サーバー、Maperty用サーバー);

Google Web Toolkit(ロボット、Mapertyインターフェース);

Google Maps API(Maperty Interface)

Google Geocoding API(ロボットの地図上の座標への住所の変換);

Google Language API(ロボットを助けます);

Google Safe Browsing API(Webプロキシ、動作中);

Yahoo! Finance API(Mapertyで通貨を変換するために使用)。



All Articles