Files
Gnuboard7/app/Seo/BotDetector.php
T
2026-04-01 10:30:52 +09:00

46 lines
1.0 KiB
PHP

<?php
namespace App\Seo;
use Illuminate\Http\Request;
class BotDetector
{
/**
* 요청이 검색 봇인지 판별합니다.
*
* @param Request $request HTTP 요청
* @return bool 봇 여부
*/
public function isBot(Request $request): bool
{
// 봇 감지 비활성화 시 항상 false
if (! g7_core_settings('seo.bot_detection_enabled', true)) {
return false;
}
// _escaped_fragment_ 파라미터 지원 (구형 크롤러 호환)
if ($request->has('_escaped_fragment_')) {
return true;
}
$userAgent = $request->userAgent() ?? '';
if ($userAgent === '') {
return false;
}
$botPatterns = g7_core_settings('seo.bot_user_agents', []);
if (empty($botPatterns)) {
return false;
}
foreach ($botPatterns as $pattern) {
if (stripos($userAgent, $pattern) !== false) {
return true;
}
}
return false;
}
}