誰かが私のウェブサイトにある画像を自分のウェブサイトで直接呼び出しているかどうかを確認する方法はありますか?
私はウェブサイトを持っていて、誰も私の帯域幅を使用していないことを確認したいだけです。
誰かが私のウェブサイトにある画像を自分のウェブサイトで直接呼び出しているかどうかを確認する方法はありますか?
私はウェブサイトを持っていて、誰も私の帯域幅を使用していないことを確認したいだけです。
確かに、他の方法よりも少し信頼できる方法があります。
現在のリクエストにアクセスするためにユーザーがアクセスしたURLを表す文字列を含むことが最も多いという名前のHTTPヘッダーがあります。Referer
あなたはそれを「私はここから来た」 -ヘッダーとして見ることができます。
常に存在することが保証されている場合、人々があなたのバンドウィットをリーチするのを防ぐのは簡単なことですが、そうではないので、この値(時々存在しないかもしれません)だけに頼るのはほとんどギャンブルです。
ユーザーがWebサイトの真の訪問者であるかどうかを判断する別の方法は、Cookieを使用することです。Cookieを取得していないユーザーが特定のリソース(画像など)にアクセスしようとすると、「申し訳ありません。 、example.comの実際の訪問者のみがこの画像にアクセスできます」。
クライアントがCookieの実装と処理を強制されていることを示すものが何もないのは残念です。
これはおそらく最も安全なオプションですが、実装するのが最も困難です。
N時間のみ有効なリンクを使用すると、サイトを定期的にクロールし、リソース(画像など)へのアクセスに必要な現在のアクセストークンを返すある種のクローラーを実装する手間をかけずに、帯域幅をリーチすることができなくなります。 )。
ユーザーがサイトにアクセスすると、 N時間生成されたトークンが使用可能なすべてのリソースに適用され、訪問者に返送されるパスに追加されます。このトークンは必須であり、 N時間のみ有効です。
ユーザーが無効/存在しないトークンを使用して画像にアクセスしようとすると、 HTTPステータスコードとして(できれば、禁止されたリクエストであるため、後で)返送することができます404
。401
ただし、言及する価値のあるいくつかの癖があります:
* search-engine * sのクローラーは、N時間以内の特定の瞬間にサイト全体にアクセスしない可能性があります。サイトのコンテンツ全体にアクセスできることを確認してください。ヘッダーUser-Agentの値を使用してそれらを識別します。
トークンの寿命を妥当な時間より短くしようとしないでください。一部のユーザーは接続が遅く、トークンが5秒の場合はクールに聞こえるかもしれませんが、実際のユーザーには誤ってフラグが付けられる可能性があることに注意してください。
保護したい画像を含むページなど、外部のポイント(1つは検索エンジン)から人々が見つけられるはずのリソースにトークンを決して置かないでください。
これを誤って行うと、ほとんどの場合、サイトの評判が損なわれます。
リーチャーがリソースをホットリンクできないようにするために実装された方法によって、実際の訪問者に帯域幅リーチのフラグが立てられることは決してないことを覚えておいてください。制限を強化するのではなく、緩和したいと思うかもしれません。
私には、通常の訪問者が10人、リーチャーが2人いますが、通常のユーザーは5人だけです(実際の訪問者のうち5人に、あまり考えずに誤ってリーチャーとしてフラグを付けたため)。