先日、管理しているサイトの負荷が増えてきたので、一括ダウンロードソフトによる画像へのアクセスを禁止したいという相談を受けました。
以前より、「リクエストヘッダのUser-AgentにMozillaが含まれていないブラウザからのアクセスは禁止する」や「Refererが同じサイトでないアクセスは禁止する」といったことはよく行われていると思います。

ですが、これらの方法には問題があることが分かりました。
まずUser-Agentを見る方法ですが、ブラウザによってはUser-Agentに「Mozilla」が含まれていない場合がありますし、最近のダウンロードソフトはUser-Agentを偽装する機能を持っているようです。
また、Refererを見る方法は、ノートンのセキュリティソフトを使っている訪問者を弾いてしまう可能性があります。

そこで別の方法を考えることにしました。
究極的には「同一IPアドレスからの異常な連続アクセスを拒否する」という対応が一番だと思うのですが、レンタルサーバではWebサーバ側で対策を行うことができません。
PHPなどのスクリプトを経由することも考えたのですが、それでは負荷が大きくなってしまい、本末転倒になってしまいます。
そこで、Cookieを使ってみることにしました。

具体的な流れは次のようになります。
1.トップページ(もしくは画像へリンクしているページ)に以下のようなタグを追加する。
<meta http-equiv="Set-Cookie" content="access=true">
2.画像(や一括ダウンロードソフトのアクセスを禁止したいファイルがあるディレクトリ)に以下のような.htaccessファイルを設置する。
<FilesMatch "\.(jpg|jpeg|wmv|avi|mp3|mp4|scr|exe|lzh|zip)$">
SetEnvIf Cookie "^access=" accessed
Order deny,allow
Deny from all
Allow from env=accessed
</FilesMatch>

これで、1で設定したページをブラウザで一旦表示させない限り、2で設定したディレクトリにある画像などのファイルへ表示できなくなります。
ブラウザがCookieを許可している必要があったり、Webサーバが.htaccessファイルを許可している必要がありますが、この設定で大半の自動ダウンロードソフトを弾けるのではと思います。

参考:
参照元 (リファラ) が遮断され、Web サイトが正しく表示されない (Norton Internet Security 2003/Norton Personal Firewall 2003)