何ゴト?

日々の何事かを書いていきます。

はてなブログ で使用している外部画像への直リンクを防ぐ方法

はてなブログで外部画像を使用していると、その外部サーバーに以下のような「ユーザーエージェント」と「IPアドレス」のログが残ります。

User Agent: Hatena::Scissors/0.01
IP Address: 59.106.108.116

これは何かなと思い調べてみました。
Scissors」という単語が、はさみとか、切り取りという意味であることから想定すると、 はてなブログで「アイキャッチ・サムネイル」を作る時に外部画像にアクセスしに来ているログではないかと思います。

これを利用して、
もし、その使用している外部画像への直リンクを避けたい場合は、画像ファイルを保存しているフォルダに、以下のように書いた.htaccess を置けば、はてなブログ以外の直リンクが防げて外部サーバーへの負荷が防げるのではないかと思います。

以下の条件が成立する時、画像へのアクセスを禁止する


RewriteEngine on

#自分のはてなブログのドメインではない
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?◯◯◯.hatenablog.jp [NC]

#自分のはてなブログの管理画面ではない
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?blog.hatena.ne.jp/◯◯◯ [NC]

#リモートIPアドレス が 「59.106.108.116」ではない
#RewriteCond %{REMOTE_ADDR} !^(59.106.108.116)$ [NC] #これはいらない

#ユーザーエージェント が 「Hatena::Scissors/0.01」ではない
RewriteCond %{HTTP_USER_AGENT} !^(Hatena::Scissors/0.01)$ [NC]

#画像へのアクセスを禁止する
RewriteRule .(jpg|jpeg|png|gif)$ - [NC,F,L]


2015/08/23 追記

外部画像のアクセス制限をすると、はてなブログのアプリから見ることができなかったので、
ユーザーエージェントを調べて見ると、以下のログが残っていました。

%E3%81%AF%E3%81%A6%E3%81%AA%E3%83%96%E3%83%AD%E3%82%B0/3110 CFNetwork/757 Darwin/15.0.0

はてなブログ/3110 CFNetwork/757 Darwin/15.0.0

条件文に、以下の内容を入れるとはてなブログアプリでも画像を見ることが出来ました。

#「はてなブログ/3110 CFNetwork」  
RewriteCond %{HTTP_USER_AGENT} !^(%E3\%81%AF%E3\%81%A6%E3\%81%AA%E3\%83\%96%E3\%83%AD%E3\%82%B0\/3110\ CFNetwork) [NC]

↓参考サイト

RewriteCond の設定で、日本語をエスケープして使用した時など、%(数字) の場合、それをさらに「\」エスケープしないといけないのは知りませんでした。メモ。

2016/07/20 追記

下手にアクセス制限をかけてしまうと、Googleで巡回するボットも見れなくなってしまうので、注意が必要です。