1

テキストの抽出や Web ページのダウンロードについて話しているのではありません。しかし、Web サイト全体をダウンロードしている人を見かけます。たとえば、「example」というディレクトリがあり、Web サイトにリンクされていません。Web サイトの「すべて」のページをダウンロードするにはどうすればよいですか? どうすれば防御できますか?

たとえば、Apache には「ディレクトリ一覧」がありますが、既にインデックス ファイルがある場合、ルート下のディレクトリの一覧を取得するにはどうすればよいですか?

この質問は言語固有のものではありません。これを行うテクニックを説明するリンク、または詳細な回答があれば幸いです。

4

2 に答える 2

1

それでは、質問に 1 つずつお答えします。「隠し」(リンクされていない) ディレクトリがサイト上にあることをどうやって知ることができますか? そうではありませんが、HTTP 200 を返すか 404 を返すかに関係なく、最も一般的なディレクトリ名を確認できます... いくつかのスレッドを使用すると、1 分間に数千件も確認できます。そうは言っても、特定の Web サイトに関して行っているリクエストの量と、それが処理するトラフィックの量を常に考慮する必要があります。これは、小規模から中規模の Web サイトの場合、接続の問題や短い DoS が発生する可能性があるためです。コースは望ましくありません。また、検索エンジンを使用して、リンクされていないコンテンツを検索することもできます。検索エンジンによって誤って発見された可能性があります。別のサイトからのリンクがあった可能性もあります (たとえば、google site:targetsite.com にはすべての索引付けされたページ)。Web サイトのすべてのページをダウンロードする方法は既に回答されています。基本的には、ベース リンクに移動し、オンサイト コンテンツを指すリンク、画像、およびその他のコンテンツの html を解析し、それに従います。さらに、ディレクトリへのリンクを分解し、インデックスを確認します。また、共通のディレクトリとファイル名をブルートフォースします。

ユーザー エクスペリエンスを制限しない限り、ボットから効果的に保護することはできません。たとえば、1 分あたりのリクエスト数を制限できます。しかし、あなたが ajax サイトを持っている場合、通常のユーザーも大量のリクエストを生成するので、それは実際には方法ではありません。ユーザー エージェントをチェックし、「通常の」ブラウザのみをホワイト リストに登録できますが、ほとんどのスクレイピング スクリプトは自分自身を通常のブラウザとして識別するため、あまり役に立ちません。最後に、IP をブラックリストに登録できますが、これはあまり効果的ではありません。プロキシ、オニオン ルーティング、および IP を変更するその他の方法がたくさんあります。

a) サーバー構成で禁止されておらず、b) デフォルトのインデックス ファイル (Apache の index.html または index.php のデフォルト) がない場合にのみ、ディレクトリ リストを取得します。

実際には、スクレイパーを簡単にしないようにすることをお勧めします。そのため、Web サイトの検索機能が適切にサニタイズされていることなどを確認してください (空のクエリですべてのレコードが返されるわけではなく、LIKEmysql 構文を使用している場合は % 記号をフィルター処理します)。 ...)。もちろん、必要に応じて CAPTCHA を使用しますが、単純な「2 + 2 とは何か」や背景が無地の一般的なフォントの文字数文字ではなく、適切に実装する必要があります。

スクレイピングを防ぐもう 1 つの方法は、リファラー チェックを使用して Web サイトの特定の部分へのアクセスを許可することです。ただし、サーバー側で公開したくないウェブサイトの部分へのアクセスを禁止することをお勧めします (.htaccess例を使用)。

最後に、私の経験からすると、スクレイパーには基本的な js 解析機能しかないため、javascript で何らかのチェックを実装することで機能する可能性がありますが、ここでも、js がオフになっている (および noscript または同様のブラウザー プラグインを使用している) すべての Web 訪問者を除外することになります。古いブラウザで。

于 2013-09-29T14:48:58.807 に答える
0

サイトを完全に「ダウンロード」するには、URL をたどるだけでなく、コンテンツを保存する Web クローラーが必要です。アプリケーションは次のことができる必要があります。

  • 「ルート」URL を解析する
  • 同じドメイン内の他のページへのリンクをすべて特定する
  • これらの子ページに含まれるすべてのページにアクセスしてダウンロードします
  • ループを避けるために、どのリンクがすでに解析されているかを覚えておいてください

「Web クローラー」で検索すると、多くの例が表示されます。

これを回避するために採用できる対策はわかりません。ほとんどの場合、検索エンジンがサイトについて知る方法であるため、ボットに Web サイトをクロールさせたいと考えています。

トラフィックログを見て、(IPアドレスで)繰り返し犯罪者を特定すると、それらをブラックリストに登録してサーバーへのアクセスを防ぐことができると思います.

于 2013-09-28T14:38:04.700 に答える