web-dev-qa-db-ja.com

サイトがコピーされないようにする

HTTrack Website Copier または同様のプログラムからサイトを保護することはできますか?
ユーザーからのHTTPリクエストの最大数を設定しない場合。

31
h4ck3r

いいえ、それを行う方法はありません。接続パラメータの制限を設定しないと、それを比較的困難にする方法さえありません。正当なユーザーがWebサイトにアクセスできる場合は、そのコンテンツをコピーできます。また、ブラウザーで正常に実行できる場合は、スクリプトを作成できます。

ユーザーエージェントの制限、Cookieの検証、最大接続数、その他の多くの手法を設定できますが、Webサイトのコピーを決定した人を止めることはできません。

88
Adi

ユーザー名とパスワードを使用して、保護するサイトの一部を保護します。次に、ユーザー名とパスワードをNDA(または同様の)に署名するユーザーにのみ割り当てます。これは、ユーザーがサイトから情報を抽出またはコピーしないことを示します。

もう1つのトリックは、すべてのコンテンツをAJAXからロードして... AJAX変化するパス(〜/ todays-dateなど)からデータURLをロードし、それをJavaScriptと同期させることです。次に、コンテンツがダウンロードされたとしても、データは24時間以内に古くなります。

それでも、熟練した攻撃者がオフラインコピーを取得することを妨げるものは何もありません。それを難し​​くするだけで、価値がなくなります。

33

@Adnanが 彼の回答 ですでに指摘したように、特定の人物がWebサイトのスナップショットをコピーするのを止める方法はありません。ここではWordsnapshotsを使用しましたが、これはそのようなコンテンツスクレイパー(または収穫者)は本当にコピーしています。彼らはあなたのウェブサイトのコンテンツが実際に生成されてエンドユーザーに表示されるバックエンドにアクセスできない(または少なくともすべきではない)ので、彼らができる最善はその出力をコピーすることです、そのようなもので生成できるもの@ makerofthings7が his answer で指摘したように、時間を変更したり、目的の受信者(DRMスキーム、透かしなど)に従って調整したりする方法。

これで、すでに答えられていることについてこれくらいです。しかし、この脅威について、言及された回答ではまだ十分にカバーされていないと感じていることが1つあります。つまり、そのようなコンテンツのスクレイピングのほとんどは日和見的で自動化されたWebクローラーによって行われ、標的型攻撃は非常にまれです。まあ、少なくとも数では-私と一緒に耐えてください。

これらの自動クローラーは、さまざまな [〜#〜] waf [〜#〜] sを使用することで、実際に非常に効果的にブラックリストに登録できます(脅威を特定するために honeypots を使用することもあるブラックリストドメイン(CBLまたはコミュニティ禁止リスト、DBLまたはドメインブロックリスト、- [〜#〜] dnsbl [〜#〜] sまたはDNSベースのブラックホールリスト、...)このような自動化されたコンテンツスクレイパーが動作している場所。これらのWAFは、次の3つの主要なアプローチに基づいて、コンテンツサービスWebアプリケーションへのアクセスを拒否または許可します。

  • 確定的ブラックリスト:これらは、コンテンツスクレイパーが行うWebリクエストの特性に基づく検出です。それらのいくつかは次のとおりです:リクエスト元のIPアドレス、逆引きDNS解決リモートホスト名、順方向確認済み逆引きDNSルックアップ( 私の質問のいずれかの説明を参照 )、ユーザーエージェント文字列、リクエストURL(Webアプリケーションは、リクエストが正当な検索エンジンクローラー/スパイダーなどのホワイトリストに登録されたアドレスからのものではないと判断した後、コンテンツスクレイパーが応答の1つでたどる可能性があるhoneytrap URLアドレスを非表示にすることができます)。 ..および自動化されたWebリクエストに関連するその他の指紋情報。

  • ヒューリスティックブラックリスト:これは、確定的アプローチで説明されている単一のWebリクエストのパラメーターに重みを付けることで脅威を特定する方法です(アンチスパムフィルターは、 ベイジアン確率 )の計算に基づく同様のアプローチ、または次のような複数のWeb要求を分析することによる:要求率、要求順序、不正な要求の数、...リクエストが実際の意図したユーザーからのものか、自動クローラーからのものかを判断するのに役立ちます。

  • 外部DNSBL/CBL/DBLs:外部DNSBL/CBL/DBLに依存することについてはすでに説明しました(例 Project Honey potSpamhaus[〜#〜] uceprotect [〜#〜] 、...)、これらのほとんどは、実際にスパマーを追跡し続けるよりもはるかに便利です。 spambot 感染したホスト、攻撃のタイプを維持(例フォーラムスパマークロールレートの乱用、 )IPアドレス、ホスト名、CIDR範囲などに加えて、それらが公開するブラックリストにも含まれます。一部のWAFにはこれらのデータベースに接続する機能が付属しているため、別のWebサーバーで同じ検出されたアクティビティが既にブラックリストに登録されている可能性がある同じアクターによって標的にされる手間が省けます。

さて、1つはっきりと言う必要があります-これらの方法はどれも防弾とは言えません!これにより、問題のあるWebリクエストの大部分が削除されます。これは、それ自体で価値があり、何らかの方法で保護をバイパスした違反者を検出することが困難な要求に集中できるようになります。

もちろん、自動クローラーとコンテンツスクレイパーの両方の検出(および独自の対策-検出回避手法)には、ここでは説明せず、可能な限りすべてのWAFとその機能をリストし、忍耐力のテストや制限に達したくない無数の手法があります。このQ&Aの目的。このような望ましくない訪問者を阻止するためにどのような手法を採用できるかについて詳しく知りたい場合は、 OWASP Stinger および OWASP AppSensor プロジェクトのドキュメントを一読することをお勧めします。


追加して編集:HTTrackの作者からの提案は HTTrack Website Copier FAQ:Network abuseを制限する方法-Abuse FAQ for webmasters ドキュメント、および攻撃者が難読化するように設定されている場合に、単一の確定的な検出方法が機能しない理由(事実の後で、または他のハニーネットの経験を通じて、問題のあるIPアドレスをブラックリストに登録しない場合)スパイダーのuser agent文字列を実際の正当なWebブラウザーの多くのユーザーエージェント文字列のいずれかに設定し、robots.txtディレクティブを軽視します HTTrack Users Guide =。それを読む手間を省くために、HTTrackには、ステルスモードで動作するシンプルな設定とコマンドラインフラグが含まれており、他の正当なユーザーと同じように、より簡単な検出手法で無害に見えます。

31
TildalWave

人間のユーザーが見るものすべてを記録できます。 @Adnanが指摘するように、これはかなり簡単で、自動化できます。

ただし、一部のサイトでは、大規模な丸呑みの阻止にまだある程度成功しています。たとえば、 Google Maps を考えてみましょう。多くの人が、スクリプトを使用して、広範囲の高解像度マップを復元しようとすることがあります。いくつかは成功しましたが、ほとんどはグーグルの防御によって捕らえられました。まるでそれが人間の制御下にあるかのように、サーバーの観点から動作する自動ダウンローダーを作るのが難しいことがたまたま起こります。人間にはあらゆる種類の待ち時間と使用パターンがあり、巧妙なシステム管理者はそれに気づき、確認することができます。

同様のトリックは、たとえば Stack Exchange で行われます。サイトへのアクセスを自動化しようとすると、すぐに [〜#〜] captcha [〜#〜] のページにリダイレクトされます。

結局のところ、この種のセキュリティは、防御側と攻撃側が同等の立場にあるため、あまり満足できるものではありません。したがって、これは高価です。思考と保守が必要です。ただし、一部のサイトではそれを行います。

攻撃者が自動化対策の安全対策を打ち破る一般的な方法は、実際の人間との丸呑みを「自動化」することです。一部の国では、非常に安い人間労働者を雇うことができます。

16
Tom Leek

@Adnanが言ったことを修飾します。一般にサイトのリーチングを防止する方法はありません時間の経過とともに、特定のツールは、ある程度のリクエストがあると確実に検出できる動作を示す可能性があります作られました。 URLにアクセスする順序は、深さ優先、幅優先、アルファベット順の昇順または降順、DOMでの表示順など、確定的である場合があります。リクエスト間の間隔は、エージェントが一部のJavaScriptコード(NoScriptなど)を正常に実行したかどうか、ブラウザパフォーマンスAPIのクライアントサポート、ページの複雑度に関連してリクエスト間で費やされた時間、および間に論理フローがあるかどうかの手掛かりになる可能性がありますリクエスト。ウェブサイトのリーチャーがこれを考慮に入れない限り、あなたはチャンスがあるかもしれません。良いリーチャーは既知のボットのふりをするので、ユーザーエージェントのチェックは効果的ではないはずです。そのため、Googleや他の検索エンジンも除外したくない場合を除き、検索エンジンが使用するIPの知識は役に立ちます。

6
Nick

まず第一に、あなたのサイトがコピーされるのを防ぐ唯一の方法は、実際にあなた以外の誰にも公開しないことです。

法的な手段で人々を説得しようとする1つの方法は私です。私は弁護士ではないので、どのような手順を踏めばよいかわかりません。オリジナルのコンテンツの場合、著作権などを制限することができます。

あなたのサイトがコピーされるのを恐れるなら、それは本当に本当に本当に素晴らしいウェブサイトでなければなりません。

4
jsedano

ユーザーがページをロードした場合、ユーザーはソースを表示してHTMLをコピーできます。

Webサイトのコピー機に特定のユーザーエージェントがある場合は、それをブロックできます。 詳細はスタック交換を参照してください。

もう1つの解決策は、Flash Webページを作成することです。とにかく手でコピーするのは難しいです。

それ以外の場合は、サーバー側のPHPスクリプトのみが取得できるアクセスが制限されたディレクトリにすべてを入れます。次に、ページが多くのインクルードで構築されている場合(1つはナビゲーションバー、1つはヘッダー、1つはJavaScript、1つはフッター、1つは本文のコンテンツ)、PHPファイルの別のディレクトリを作成し、インクルードで保護されたディレクトリを読み取り、次にこれらのAJAXファイルを動的にロードするPHP JavaScriptをレンダリングせずに何かをコピーするのは難しくなります(ソフトウェアまたはライブコードインスペクションツールを使用している個人が停止するかどうかはわかりませんが)。

または、ユーザーがリンク以外のDOMオブジェクト(「ここに入力」と表示されている行など)をクリックしない限り、保護されたPHPディレクトリインクルードが呼び出されないように、サイトに何らかの人間による検証を行うことができます。 )コンテンツの読み込みをトリガーします。

4
A L

免責事項:これは悪い答えです。次のことは容認しません。


最新のブラウザは、JavaScriptやその他の手段を通じて、一般的な(チューリング完全な)計算が可能です。基本的なHTML + CSSレンダリングエンジンでさえ、非常に精巧なソフトウェアであり、さまざまな方法でコンテンツを表示(または非表示)できます。それだけでは不十分な場合、最近のすべてのブラウザは、SVGやCanvasなどを介してグラフィックプリミティブを利用できるようにし、カスタムフォントをダウンロードしてテキストをレンダリングできます。

これらすべて、さらにいくつかを組み合わせると、サイトのソースコードと、ユーザーが読むことができる文字や単語を構成するピクセルとの間に、多数の実行レイヤーが存在することがわかります。

これらの実行レイヤーはすべて、難読化または悪用される可能性があります。

たとえば、グラフィック出力にほとんどまたはまったく似ていないマークアップを生成して、WebサイトのHTMLソースを調べることを無駄にすることができます。文字ごとに1つのHTMLタグを使用し、float:position:のクリエイティブな使用でそれらを並べ替え、複雑な生成されたCSSルールでそれらのいくつかを非表示にして、そこにないいくつかを追加することができます。 CSSで生成されたコンテンツ。

文字コードとグリフの間のカスタムマッピングを使用するフォントを作成できるので、コンテンツをコピーして貼り付けると、完全に不要なものになったり、言葉を誓うことさえできます。文字を2つ以上に分割し、Unicode結合文字を使用してそれらを元に戻すことができます。これらすべてを動的ジェネレーターで行うことができ、HTTPリクエストごとに難読化の新しいランダムな傑作を作成できます。

複雑なJavascriptアルゴリズムを作成するプログラムを記述できます。クライアントで実行すると、必要なパズルのピースが埋められるため、JavaScriptのサポートと適切な量のクライアントCPU時間がないと、マークアップだけでは役に立たなくなります。 50msの最新のCPU時間はほとんどの人に気付かれず、かなり邪悪なアルゴリズムを実行するのに十分です。

完全なCSSとJavascriptスタックを得るために、ヘッドレスブラウザーを使用して難読化された独自のWebサイトをこすり落とそうとすると、ボーナスポイントになります。次に、ヘッドレスブラウザと実際のブラウザを区別する方法(またはヒューリスティック)を見つけます。次に、生成されたJavaScriptコードにトラップを挿入して、ヘッドレスブラウザーのケースに該当する場合、アルゴリズムが無限ループになるか、ブラウザーがクラッシュするか、または冒とく的で発作を引き起こすフラッシュが画面に生成されるようにします。

これらは私の頭の上にあります。人々のコンピュータを使ってf ***を行うには(おそらく)無限の方法があります。

今すぐ良い男の子/女の子になって、あなたの青い錠剤を飲んでください:-)

4
Tobia

まず第一に、他の人が言ったように-あなたが見ることができるものは何でも、さまざまな方法を使用してコピーすることができます。それはあなたのウェブサイトがコピーされるのを防ぎたい理由に依存しますが、最も効果的な方法はおそらく誰もがそれがどこから来たのかわかるように透かしを追加することでしょう。おそらく、人々にあなたのウェブサイトをコピーしないように求める丁寧な通知でさえ、見逃すことはないでしょう。

ただし、元の質問とソフトウェアによるWebサイトのコピーを停止する方法に戻ると、CloudFlareにはWebアプリケーションファイアウォールがあると思います。 Acunetix Web脆弱性スキャナーがCloudFlareを使用するWebサイトをスキャンしないことは確かに知っています。これは無料のソリューションであり、ウェブサイトの高速化にも役立ちます。

しかし、今では間違いのないソリューションがあり、何でも回避できます。あなたができる最善のことは、あなたのウェブサイトを保護するためにどれほどひどく必要/したいかに応じて、ここで答えの組み合わせを使用することです。しかし、最善のアドバイスは、コピーしたくない場合は、他の人にコピーさせないことです。

4
Andy

でもAJAXは複製できます。私は重いAJAX GET/POSTパラメータを使用してサイトをかき集めました。ブラウザを本当にエミュレートする必要がある場合は、 Seleniumなどを使用できます。本当に必要な場合は、サイトをスクレイピングする方法をいつでも見つけることができます。Captchaは、おそらく最も対処するのが難しいことです。それでも、これらを支援するためのCaptchaスナイパーやその他のモジュールがあります。エリア。

3
PythonIsGreat

あなたはこれから解決策を得るかもしれないこのリンクを見てください:)

HTTrackを停止するには?

robots.txtを使用してWebサイトがリッピングされないようにしますか?

OR

最も簡単な方法は、ページを閲覧しているブラウザIDを特定することです。それがhtttrackの場合は、それをブロックします(サーバーを構成するか、urプログラミングスキルを使用して、それに応じて別のページをロードする必要があります)。

ありがとう。

3
Java D