プロキシやBotを排除するPHPコードのメモ(不完全)

投稿日:

私が運営しているKoguma faucet(仮)にも、プロキシやBotなどが襲来することもあったりします。そんなわけで、PHPを使ってプロキシやBotをサイトの心臓部に行かせないコードをメモ書きします。

目次

  • プロキシの排除
  • Botの排除
  • 完成形

プロキシの排除

まずはプロキシを排除しましょう。

プロキシ判定に引っかかった人に対してエラーメッセージを記述したりするなどして、プロキシユーザーを排除します。今回はプロキシ特有の環境変数の有無を判定しているので、ここで判定に使っていないものだと通しますし、特有の環境変数を吐かないプロキシも通します。

Botの排除

今度はBotの排除です。HTTP/1.0での接続を遮断します。最近のブラウザは、普通はHTTP/1.1に対応しているので、通常ユーザーを遮断する心配はないです。全ページでこれをやるとGoogle bot(Googleのクローラー)まで遮断するので、やはりサイト心臓部のみにかけるべきです。

当然ながらHTTP/1.1を利用するBotは遮断できませんし、手動で悪事をはたらく人も遮断できません。

完成形

判定機能はコード下方の関数にまとめてあります。これまでに解説した判定法を全部通過したユーザーにはtrueを、1個でも引っかかったユーザーにはfalseを返すようになっています。

このブログを応援する・寄付する

当ブログでは暗号通貨による寄付を募っております。

Bitcoin:

Monacoin:

Litecoin: