31

画面スクレイピングの合法性に関する私の質問に続いて、たとえそれが違法であっても、人々はまだ試みます。

画面のスクレイピングを防止する、または少なくともやる気をなくすために、どのような技術的メカニズムを採用できますか?

ああ、ニヤニヤして生活を困難にするためだけに、検索エンジンへのアクセスを維持するのは良いことかもしれません. 私はここで悪魔の擁護者を演じているかもしれませんが、深刻な根底にあるポイントがあります.

4

21 に答える 21

62

防ぐことはできません。

于 2008-12-28T23:04:14.640 に答える
22

これについてのブログ投稿をここに書きました: http://blog.screen-scraper.com/2009/08/17/further-thoughts-on-hindering-screen-scraping/

言い換えると:

インターネットに情報を投稿すれば、誰かがそれを手に入れることができますが、それは彼らがどれだけのリソースを投資したいかの問題です. 必要なリソースをより高くするためのいくつかの手段は次のとおりです。

チューリングテスト

Turning Test の最も一般的な実装は、人間が画像内のテキストを読み取ってフォームにフィードすることを確認しようとする古い CAPTCHA です。

非常に脆弱な CAPTCHA を実装しているサイトが多数見つかりました。一方、チューリング テストの非常に優れた実装がいくつかありますが、選択肢があれば対処しないことを選択しますが、洗練された OCR を使用すると、それらを克服できる場合があります。また、多くの掲示板スパマーは、これらを回避するための巧妙なトリックを持っています。

画像としてのデータ

データのどの部分が価値があるかを知っている場合があります。その場合、そのようなテキストを画像に置き換えることが合理的になります。チューリング テストと同様に、それを読み取ることができる OCR ソフトウェアがあり、画像を保存して後で誰かに読み取らせることができない理由はありません。

ただし、多くの場合、代替テキストなしでデータを画像としてリストすることは、米国障害者法 (ADA) に違反しており、会社の法務部門に数回電話するだけで解決できます。

コードの難読化

JavaScript 関数のようなものを使用して、HTML ソースのどこにもデータがなくてもページにデータを表示するのは良いトリックです。他の例としては、大量の余分なコメントをページに挿入したり、予測不可能な方法で物事を注文するインタラクティブなページを作成したりすることが含まれます (コードの配置に関係なく表示を同じにするために CSS を使用したと私が考える例です)。

CSS スプライト

最近、ページに数字と文字を含む 1 つの画像があり、必要な文字だけを表示するために CSS を使用している例に遭遇しました。これは事実上、前の 2 つの方法を組み合わせたものです。まず、そのマスター イメージを取得してそこにある文字を読み取る必要があります。次に、サイト内の CSS を読み取って、各タグが指している文字を特定する必要があります。

これは非常に巧妙ですが、まだテストしていませんが、これも ADA に違反すると思われます。

検索結果を制限する

取得したいデータのほとんどは、何らかの形式の背後にあります。いくつかは簡単で、空白のフォームを送信するとすべての結果が得られます。フォームにアスタリスクまたはパーセントを入力する必要があるものもあります。最も難しいのは、クエリごとに非常に多くの結果しか得られないものです。アルファベットの文字をフォームに送信するループを作成することもありますが、それが一般的すぎる場合は、2 文字または 3 文字のすべての組み合わせを送信するループを作成する必要があります。つまり、17,576 ページの要求です。

IPフィルタリング

勤勉な Web マスターは、特定の IP アドレスから大量のページ リクエストが送信されていることに気付き、そのドメインからのリクエストをブロックすることがあります。ただし、代替ドメインを介してリクエストを渡す方法は多数あるため、この方法は一般的にあまり効果的ではありません。

サイトいじり

スクレイピングは、常に HTML 内の特定のものをキーオフします。一部のサイトには、HTML を常に微調整するためのリソースがあり、スクレイピングが常に最新の状態にならないようになっています。したがって、絶えず変化する条件に合わせてスクレイプを継続的に更新することは、費用対効果が低くなります。

于 2009-08-27T17:11:43.477 に答える
20

したがって、1つのアプローチは、コード(rot13など)を難読化してから、document.write(unobfuscate(obfuscated_pa​​ge))のような処理を行うjavascriptをページに含めることです。しかし、これは検索エンジンを完全に吹き飛ばします(おそらく!)。

もちろん、これはあなたのデータを盗もうとする人を実際に止めるわけではありませんが、それを難し​​くします。

クライアントがデータを取得すると、ほとんどゲームオーバーになるため、サーバー側で何かを確認する必要があります。

検索エンジンが基本的にスクリーンスクレイパーであることを考えると、物事は困難です。良いスクリーンスクレイパーと悪いスクリーンスクレイパーの違いを確認する必要があります。そしてもちろん、あなたには普通の人間のユーザーもいます。したがって、これは、サーバー上で、人間優れたスクリーンスクレーパー、または不良なスクリーンスクレーパーからの要求として効果的に分類する方法の問題に帰着します。

したがって、開始する場所は、ログファイルを調べて、リクエストを効果的に分類できるパターンがあるかどうかを確認し、パターンを決定する際に、これを知った上で、悪いスクリーンスクレーパーが何らかの方法があるかどうかを確認することです。分類では、それ自体が人間または優れたスクリーンスクレーパーのように見える可能性があります。

いくつかのアイデア:

  • IPアドレスによって適切なスクリーンスクレイパーを判別できる場合があります。
  • 同時接続の数、期間ごとの接続の総数、アクセスパターンなどによって、スクレーパーと人間を判断できる可能性があります。

明らかに、これらは理想的でも絶対確実でもありません。もう1つの戦術は、人間には邪魔にならないが、スクレーパーにとっては煩わしい対策を講じることができるかどうかを判断することです例として、リクエストの数を遅くする場合があります。(リクエストのタイムクリティカル度によって異なります。リアルタイムでスクレイピングしている場合、これはエンドユーザーに影響します)。

もう1つの側面は、これらのユーザーにより良いサービスを提供することです。彼らはデータを必要としているので、明らかに彼らはこすり取っています。便利な形式でデータを直接取得する簡単な方法を提供すると、画面をスクレイピングする代わりに、より簡単にデータを取得できるようになります。簡単な方法があれば、データへのアクセスを規制することができます。例:リクエスターに一意のキーを与えてから、キーごとのリクエスト数を制限してサーバーの過負荷を回避したり、1000リクエストごとに課金したりします。

もちろん、あなたを引き裂きたいと思う人はまだいます。そして、おそらく他の方法で意欲をそぐことができますが、彼らはおそらく非技術的であり始め、法的手段を説得する必要があります。

于 2008-12-29T13:05:53.910 に答える
11

画面のスクレイピングを防ぐのはかなり難しいですが、どうしてもしたい場合は、HTML を頻繁に変更したり、HTML タグ名を頻繁に変更したりできます。ほとんどのスクリーン スクレーパーは、タグ名との文字列比較、または特定の文字列を検索する正規表現などを使用して機能します。基になる HTML を変更する場合は、ソフトウェアを変更する必要があります。

于 2008-12-28T23:54:35.567 に答える
5

防ぐのは非常に難しいでしょう。問題は、Web ページはプログラム (ブラウザー) によって解析されることを意図しているため、非常に簡単にスクレイピングできることです。あなたができる最善のことは、警戒することです。サイトがスクレイピングされていることに気付いた場合は、問題のあるプログラムの IP をブロックしてください。

于 2008-12-28T23:07:24.133 に答える
4

それを防ぐのではなく、それを検出し、試みた人に報復します。

たとえば、ダウンロードできるようにサイトを開いたままにしますが、正気のユーザーがたどらないようなリンクをいくつか配布します。誰かがそのリンクをたどり、人間またはその他の疑わしい行動に対して速すぎるクリックをしている場合は、すぐに反応してユーザーの試みを止めてください。ログインシステムがある場合は、ユーザーをブロックし、容認できない行動について連絡してください。これにより、彼らが再試行しないようにする必要があります。ログイン システムがない場合は、実際のページではなく、同じ警告への偽のリンクを含む大きな警告を返します。

これは Safari Bookshelf のようなものに実際に当てはまります。ユーザーがコードの一部または章をコピーして同僚にメールで貼り付けるのは問題ありませんが、本の完全なダウンロードは受け入れられません。一部の人が自分の本をダウンロードしようとするとき、アカウントをブロックし、犯人が再び試みた場合に実際に問題が発生する可能性があることを示していることを、彼らが検出していると確信しています。

IT 以外の例えで言えば、空港のセキュリティが武器を機内に持ち込むことを困難にするだけである場合、テロリストはさまざまな方法でセキュリティをすり抜けようとします。しかし、試みるだけで深刻なトラブルに巻き込まれるという事実は、誰もそれをこっそりと見つける方法を見つけようとしないようにする. 捕まって処罰されるリスクが高すぎます。同じことをしてください。もし可能なら。

于 2009-08-21T09:43:23.377 に答える
4

検索エンジンは、定義上、スクリーン スクレーパーです。そのため、スクリーン スクレイピングを困難にするために行うほとんどのことは、コンテンツのインデックス作成も困難にします。

正常に動作するロボットは、robots.txt ファイルを尊重します。また、既知の犯罪者の IP をブロックしたり、コンテンツが既知の正常なロボットに送信されていない場合に難読化 HTML タグを追加したりすることもできます。負け戦ですが。既知の犯罪者には訴訟ルートをお勧めします。

また、犯罪者の追跡を容易にするために、コンテンツ内の識別データを非表示にすることもできます。百科事典は、著作権侵害者の検出と訴追を支援するために、架空のエントリを追加することが知られています。

于 2008-12-28T23:48:16.093 に答える
3

ほとんどのスクリーン スクレイパーは XML ではなくテキストとして HTML から動作するため (ほとんどのページは有効な XML として解析されないため)、投資に対する最良の見返りは、おそらくランダムな改行と複数のスペースを追加することです。

ブラウザは空白を無視するため、ユーザーはそれに気付かない

  Price : 1
  Price :    2
  Price\n:\n3

異なっています。(これは、AWK を使用して政府のサイトをスクレイピングした経験から来ています)。

次のステップは、ランダムな要素の周りにタグを追加して DOM をめちゃくちゃにすることです。

于 2009-05-22T18:22:44.143 に答える
3

防ぐ?-- 不可能ですが、難しくすることはできます。

やる気をなくす?-- 可能ですが、答えは気に入らないでしょう: 関心のある関係者に一括データ エクスポートを提供します。

長い目で見れば、公開した場合、すべての競合他社が同じデータを持つことになるため、Web サイトを多様化する他の手段が必要です (たとえば、より頻繁に更新する、より高速に、またはより使いやすくするなど)。現在、Google でさえ、ユーザー レビューなどのスクレイピングされた情報を使用していますが、それについて何ができると思いますか? それらを訴えて、インデックスから追い出されますか?

于 2008-12-28T23:21:14.450 に答える
2

1 つの方法は、テキストと位置を取る関数を作成し、サーバー側でテキスト内のすべての文字の x、y 位置を生成し、文字を含むランダムな順序で div を生成することです。画面上の適切な場所にすべての div を配置する JavaScript を生成します。画面上では見栄えがしますが、コード ビハインドでは、javascript を介してスクレイピングする手間をかけない限り、テキストを取得する実際の順序はありません (リクエストごとに動的に変更できます)。

あまりにも多くの作業があり、多くの癖がある可能性があります。それは、テキストの量や、サイト上の UI の複雑さなどによって異なります。

于 2008-12-28T23:55:57.030 に答える
1

情報を公開する (公開する) ことを目的としているサイトを考えると、非常に少ないと思います。

  • もちろん、ログインの背後にデータを隠すことができますが、それは非常に状況に応じた解決策です.

  • リクエスト ヘッダーが (匿名または「ジャカルタ」ではなく) Web ブラウザーを示すコンテンツのみを提供するアプリを見てきましたが、これは簡単になりすましができ、本物の人間を失うことになります。

  • 次に、いくらかのスクラップを受け入れても、リクエストが同じ IP から非常に高いレートで送信された場合にコンテンツを提供しないことで、彼らの生活を乗り越えられないほど困難にする可能性があります。これは、完全にカバーされていないことに問題がありますが、さらに重要なことに、IP が多くのユニークな人間のユーザーをカバーできるという「AOL 問題」があります

最後の 2 つの手法はどちらも、避けられないパフォーマンスおよび/または金銭的支出であるトラフィック インターセプト テクノロジに大きく依存しています。

于 2008-12-28T23:07:54.960 に答える
1

ほとんどのサイトが検索エンジンの上位表示を望んでおり、検索エンジンがスクレイパー ボットであることを考えると、SEO に悪影響を与えずにできることはほとんどありません。

完全に ajax をロードしたサイトまたはフラッシュ ベースのサイトを作成すると、ボットが侵入しにくくなったり、すべてをログインの背後に隠したりして、さらに困難になりますが、これらのアプローチはどちらも検索ランキングに悪影響を及ぼし、おそらく迷惑をかけることになります。誰かが本当にそれを望んでいるなら、彼らは方法を見つけるでしょう。

スクレイピングできないコンテンツを保持する唯一の保証された方法は、それを Web 上に公開しないことです。Web の性質上、公開すると公開されます。

于 2008-12-28T23:19:25.077 に答える
1

保護したい情報がそれほど多くない場合は、その場で画像に変換できます。次に、OCRを使用する必要があります。これにより、あなたのサイトではなく別のサイトを簡単にスクレイピングできます..

于 2008-12-28T23:59:23.297 に答える
0

サイトに来るクライアントのユーザー エージェントを確認できます。一部のサードパーティの画面スクレイピング プログラムには独自のユーザー エージェントがあるため、それをブロックできます。ただし、優れたスクリーン スクレイパーはユーザー エージェントを偽装しているため、検出できません。正当なユーザーをブロックしたくないので、誰かをブロックしようとする場合は注意してください:)

期待できる最善の方法は、ユーザー エージェントを変更するほど賢くないスクリーン スクレーパーを使用しているユーザーをブロックすることです。

于 2008-12-28T23:08:53.287 に答える
0

古い質問ですが、対話機能を追加すると、画面のスクレイピングがはるかに難しくなります。データが元の応答に含まれていない場合 (たとえば、ページの読み込み後に AJAX 要求を作成して div を設定した場合)、ほとんどのスクレーパーはそれを認識しません。

たとえば、機械化ライブラリを使用してスクレイピングを行います。Mechanize は Javascript を実行しません。最新のブラウザではありません。HTML を解析するだけで、リンクをたどったり、テキストを抽出したりできます。ブラウザー (Javascript の全範囲をサポートする) に行き詰まっています。

これは、高度にインタラクティブな Web アプリケーションの自動テストを非常に難しくしている問題と同じです。

于 2010-07-09T20:24:51.773 に答える
0

これを行う良い方法はないと思います。

CAPTCHA スタイルのフォントとレイアウトを使用してレンダリングされた画像にテキストを変換するメカニズムを介してすべてのコンテンツを実行できると思いますが、それは SEO を壊し、ユーザーを悩ませます。

于 2008-12-29T21:50:42.277 に答える
0

iText ライブラリを使用して、データベース情報から PDF を作成するのはどうですか? Flash と同様に、スクレイピングが不可能になることはありませんが、スクレイピングが少し難しくなる可能性があります。

ネルス

于 2010-01-15T18:55:55.973 に答える
0

サーバーからクライアントにコンテンツをプッシュする前に、\r\n、\n、\t をすべて削除し、すべてを 1 つのスペースだけに置き換えます。これで、HTML ページに 1 行の長い行ができました。Google がこれを行います。これにより、他の人があなたの html や JavaScript を読むのが難しくなります。
次に、空のタグを作成して、あちこちにランダムに挿入できます。効果はありません。
次に、すべての IP とそれらがサイトにアクセスする頻度をログに記録できます。毎回時間通りに来るものを見つけたら、ロボットとしてマークしてブロックします。
入ってきてもらいたい場合は、検索エンジンをそのままにしておくようにしてください。
これが役立つことを願っています

于 2009-07-12T04:06:48.967 に答える
0

プリント スクリーンを防止できるとは思いもしませんでした。彼らのビデオ バッファ テクノロジでは、プリント スクリーンを作成する方法はありません。クールです。本当にクールですが、使いにくいです...彼らは技術のライセンスも取得していると思います。チェックしてみてください。(私が間違っている場合は、ハッキングされる方法をここに投稿してください。)ここで見つけました:プリントスクリーンを防ぐにはどうすればよいですか

于 2010-08-25T11:54:53.737 に答える
0

いくつかの PDF ファイルを一度「スクリーン スクレイピング」しようとしましたが、実際には文字が PDF に半ランダムな順序で配置されていることがわかりました。PDF 形式では、テキストのブロックごとに場所を指定でき、非常に小さなブロック (単語よりも小さい) を使用していると思います。問題の PDF は、画面のスクレイピングを防止しようとしているのではなく、レンダリング エンジンで奇妙なことをしていたのではないかと思います。

そのようなことができるのだろうか。

于 2008-12-28T23:12:36.043 に答える
0

すべてをフラッシュすることもできますが、ほとんどの場合、私を含め、多くの正当なユーザーを悩ませます。株価やグラフなどの一部の情報に使用できます。

于 2008-12-28T23:13:17.727 に答える