もし直リンがあったら?アクセスログで直リンクの見つけ方と禁止方法 | なんかいろいろ備忘録

もし直リンがあったら?アクセスログで直リンクの見つけ方と禁止方法

サーバー

えっ?!僕のブログが2chに晒されたんだけど・・・

自身のブログのURLを検索したら出てきました。

といっても画像の直リンで、100未満で終了したスレなので爆発的にアクセスが来たわけではないです。

画像直リンだけど2chにうちのブログ貼ってあった。
100未満で終了したスレッドだから、数人しか来なかったようで少し複雑な気分。

— こたつねこ@弱小ブロガー (@coronblog) 2017年5月24日

でふと思った、僕の使ってるmixhostのサーバーにアクセス解析機能があることを。

スポンサーリンク

直リン(直リンク)とは

その前に、直リン(直リンク)について説明しておく。

フリー素材のサイトや趣味系サイトのリンクバナーなどに「直リンクは禁止です」のような文面を見たことはないだろうか。

直リン(直リンク)とは、外部サーバーにある画像を直接リンクさせて表示すること。

例えば、僕のブログに使ってる画像を『http:△△〇〇.net/』のサイトが直接僕のブログから画像をリンクして表示してること。

仮に、『http:△△〇〇.net/』が超人気サイトで1日数十万アクセスだったとする、そしたら僕のブログのサーバーにある画像を数十万ユーザーが読み込むわけだからサーバーの負荷につながる。

これが、僕のサイトの画像を『http:△△〇〇.net/』のサーバーに保存して表示させたとする、これだと僕のブログから読み込まれることはないから僕の使ってるサーバーの負担がなくなる。

※これはこれで画像の引用や著作権など別の問題が出てくるのだけど、ここでではその話は関係ないものとする。

スポンサーリンク

直リン(直リンク)の見つけ方

僕の使ってるmixhostでは直近1時間はサーバーのアクセスログで分かります。僕は、自身のブログのURLを検索したら2chが出てきたので、URLで検索でも分かるかと思います。

自分のサイトのURLを検索して、自分のサイトを除外する方法でも探せる。(てかこっちのほうが見つけやすい)

自分のサイトの画像に直リンクしているサイトを見つける方法
他のサイトへの画像の直リンクはなぜ嫌われるか?そして、自分のサイトの画像に直リンクしているサイトがあるかどうかを見つける方法。

こちらのサイトに載っていました。

mixhostのアクセログで直リンを見つける方法

一般的な、アクセス解析はWebビーコン型とよばれ、Googleアナリティクスやアクセス解析研究所などのJavaScriptのコードをサイト(ブログ)に埋め込んで解析を行う。

なので、Webビーコン型だと画像にコードを埋め込むことができないので直リンされてもアクセスが分からない。

mixhostのサーバー管理画面にあるアクセスログで直リンを見つける方法について説明する。ただ、mixhostのアクセスログも有能じゃないので直近1時間しか分からない。
(詳しく見るにはVPSや専用サーバーでApacheなどのログを見る必要がある)

mixhostのcPanelからメトリックにある『訪問者』を選択。

『表示』の虫眼鏡🔍をクリック。mixhostは独自ドメインを登録すると『coronblog.coron.mixh.jp』のようなアドレスが用意されてる。

直近1時間のアクセスが表示される。検索フォームで、jpgなどの拡張子で絞り込み(フィルタ)ができる。

赤枠が直リンク、『URLの参照』の参照元が僕のブログのURLでないのが分かる。緑枠は記事のページから画像を表示したときのアクセス。

記事を表示しただけでも画像を読み込むので参照元が記事のアドレスになっている。

記事には縮小したサムネイルが表示されるのそれを読み込んでいる。

ただ、この方法だと直リンで表示されたアクセスが分からない。そきで、次はサーバーログ型アクセス解析で直リンのアクセス数を見ていく。

mixhostアクセス解析で直リン(直リンク)のアクセスを見る

また、cPanelの管理画面から説明する。2chなどに貼られた直リンからのアクセスは分かりますが、外部サイトで直リンされた画像の表示のアクセスは分かりません。

『Awstats』を選択。

「mixhostのアクセス解析で直リンを見つける方法」と同じように🔍の『表示』を選ぶ。こちらも、SSLの有無でアクセス解析が分かれてるので複数のサイトを登録していると多く感じる。

「参照」のアクセスを選択。直リンのスレは5月に立てられたので「表示するレポート」は5月のまま。

赤枠のフォームに直リンしてるサイトのURLの一部を入力して「OK」ボタンをクリック。緑枠に参照元がでるので、「件数」にアクセスした数が分かります。

スポンサーリンク

直リン(直リンク)を禁止する方法

URLのリンクからあなたのサイトの画像にアクセスするのは防ぐことはできませんが、外部サイトに直リンで表示されているあなたのサイトの画像の表示は防ぐことができます。

外部サイトからのファイル読み込みを禁止して直リンを防ぐことができます。

ただ、Twitterやブログランキングなどでサムネイル(アイキャッチ)を読み込んでいたら、画像表示されなくなるので禁止するのは慎重にしたほうがいいです。

mixhostのホットリンク保護を使う

mixhostのサーバー管理のcPanelにある『ホットリンク保護』を使うとサーバー単位で直リンを禁止にすることができます(ドメイン単位で出来ません)。

『ホットリンク保護』を選択。

上の赤枠の『有効』をクリックすると直リンを防ぐことができます。直リンを許可させたいサイトは、緑枠にURLを入れて『送付』をクリックすると許可できます。直リン許可サイトはドメイン登録時に自動で入っています。

.htaccessで直リン(直リンク)を禁止する方法

次に、直リンをサイト単位で禁止します。

画像の直リンを禁止する方法はこちらを参考にしました。

【.htaccess】画像の直リンクを禁止する方法 – ysklog
【.htaccess】画像の直リンクを禁止する方法 - Java、PHP、javascriptなどのプログラミング&Wordpress、HTML、CSSなどのWeb情報ブログ(最近は雑記や仮想通貨のことなど幅広く)

.htaccessの編集には必ずバックアップを取ってから行ってください。記述ミス等でサイトが表示されない場合があります。

以下のコードを.htaccessの先頭に追加します。

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?coronblog.kanazawacycleparking.jp [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]

自分のサイトを許可しないと、自サイトの画像も表示されなくなります。

次に、許可したいサイトのURLを追加します。

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?coronblog.kanazawacycleparking.jp [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?許可したいURL [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]

このように、Twitterやブログランキングなど許可するサイトを登録します。

まとめ

2chにURLを晒されるのは対応できませんが、外部サイトで直リンで画像を表示してるサイトには有効です。

僕の使ってるサーバーにあるアクセス解析は項目が多すぎて普段は見なかったのですが、直リンからのアクセスはサーバー型アクセス解析じゃないと分からないし、こんな場面で役に立つとは思いもよらなかったです。

タイトルとURLをコピーしました