やりたいこと
素直にBot判定をしようとすると、UserAgentかIPアドレスから判定することになると思います。
愚直にbot判定しようとするとUserAgentから判定することになると思いますが、世の中には無数のBotがあり困難です。
できるだけ、簡単にBot判定をしようとしてみた。
どうするの?
Bot判定を自力で頑張らずともUserAgentで様々な判定をしてくれるgemのbrowserを使うだけです
以下、の2行だけで完結しちゃいます!
browser = Browser.new(user_agent)
browser.bot?
でも、どうせそんなに多くのBotには対応してないでしょっと思うかもしれないですが、
300近くの有名なBotに対応しているので、自力で対応していく労力に比べ圧倒的に楽に判定できます!
対応Botリスト: https://github.com/fnando/browser/blob/main/bots.yml
まとめ
browserを使うと簡単にUserAgentからBot判定ができてしまいます。
この他にもbrowserにはデバイスの判定を簡単にできたりします。
しかし、この方法だけでは100%確実にBotの判定ができるわけではありません。
Botの中には一般のユーザーっぽいUserAgentに偽装してアクセスしてくるBotなどもいるので、UserAgentの判定だけを過信するのは良くない場合もあります。