JavaScriptでクローラーを判断する

らら
らら

はじめに

最近、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じゃないとき・・
	}

さいごに

さがしてみると、あるねぇ。

関連記事