hypermkt blog

平日はとあるホームページ作成サービス、週末はとあるレビューサイトの開発・運営。

ユーザーエージェント指定でアクセス拒否する方法

time 2014/03/17

ユーザーエージェント指定でアクセス拒否する方法

muninのグラフを眺めてたら、CPU使用率が普段の5倍になってて、なんじゃこりゃー!という事になりました。

2feb2e74972f961458c81faa3dc34b0e

状況を調べた所、スクレイピングツールでレビュー全件をスクレイピングしている輩がおりまして、うちのサイトも有名になったもんだと思いつつも、さすがにCPU負荷がサイトに影響を与えていたので、アクセス拒否をする事にしました。

Apacheで拒否

Apacheでユーザーエージェント指定拒否する事が可能です。下記が実際のログでScrapyというツールを使ってアクセスしているのが分かります。

ApacheのSetEnvIfディレクティブを使って、環境変数を設定し、対象を拒否します。これでhttpd.confを保存後、configtest&gracefulをすれば完了です。

Dev HTTP Clientで確認

Google Chrome AppのDev Http Clientを使用して、httpリクエストを送信してテストしましょう。

通常の場合

Chromeのユーザーエージェントの場合は正常にアクセスできますね。

dev-http-client-02

Scrapyのリクエストの場合

先ほどのScrapyのアクセスログを元にユーザーエジェントを指定してアクセスしようとすると403 Forbiddenで拒否

dev-http-client

と、Scrapyから来た場合はちゃんと弾けているよというのが確認出来ましたので、これでデプロイしました。
まぁ正直言って、UserAgentが改ざんされてしまったらこれでは弾けないんですが、あくまで対策の一環という事で。


down

コメントする