はじめに
最近、AIとかのクローラー(ボット)も増えて・・
外部APIサービスで、アクセス数で課金されるものとかの対応で
JavaScriptで何とか回避できないかと、探してみた。
検索エンジン以外のよくわからないクローラーもあって・・個別で管理なんて・・
増えたら追加とか・・いたちごっこは避けたい・・・
みつかった・・
isbotっていうライブラリー
https://github.com/omrilotan/isbot
内部を見ると・・Lihthouseとかもあるので、使用時には、なにが含まれるのか確認しほうがいいですね。
もともとは、よいクローラーを特定するもので、逆に・・悪意あるボットは含まれない・・みたい。。
使い方
下記、@5はバージョンみたいです。
例は、ボットだったらreturn
<script src="https://cdn.jsdelivr.net/npm/isbot@5"></script>
<script>
if(isbot(navigator.userAgent)){
return;
}
</script>
下記は、テストでいれたいので・・isbot本体を読み込まなくても動作するようにしたいので・・
if (typeof isbot == 'function') {
if(!isbot(navigator.userAgent)){
//ボットじゃなかったら・・・処理
}
} else {
//関係なく・・既存の処理
}
var botUserAgents = [ 'googlebot', 'bingbot', 'lighthouse', ]; ライブラリ使わないと・・Bot判定が少ない場合とか・・・
var agent = window.navigator.userAgent;
var isBot = 0;
for (var j = 0; j < botUserAgents.length; j++){
if(agent.toLowerCase().indexOf(botUserAgents[j].toLowerCase()) !== -1){
isBot = 1;
break;
}
}
if(isBot == 0){
//BOTじゃないとき・・
}
さいごに
さがしてみると、あるねぇ。