Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Bot Detect Laravel Package

vipx/bot-detect

Detect and identify web crawlers (Google, Bing, Yahoo, etc.) from user agent and IP. Loads bot metadata from YAML, returns matched bot details, and includes optional caching and configurable cache naming/dumping for better performance.

View on GitHub
Deep Wiki
Context7

A bot detector written in PHP

Frequently asked questions about Bot Detect
How do I integrate this bot detector into Laravel middleware to block scrapers?
Use the `BotDetector` class in a custom middleware (e.g., `DetectBots`). Inject it via Laravel’s service container, then check `$request->userAgent()` and `$request->ip()` in `handle()`. Return a `403` response if a bot is detected. Example: `return response('Blocked', 403);` for matches.
Does this package work with Laravel 10+? The last release is from 2022—will it break?
The package supports PHP 5.6+ and Laravel 5.5+, but Symfony 5+ may require a fork to update dependencies. Test in a staging environment first. For Laravel 10+, replace Symfony/Yaml with Laravel’s native `config()` or JSON-based metadata for compatibility.
Can I customize the bot detection rules (e.g., whitelist/blacklist specific crawlers)?
Yes. Use Laravel’s config system to override defaults. Publish the metadata files (e.g., `php artisan vendor:publish --tag=bot-detect`) and modify `config/bots.php`. Add custom rules like `'whitelist': ['Googlebot', 'Bingbot']` to filter traffic.
How does caching work, and should I use Redis or file caching in production?
The package caches bot metadata locally by default (via `metadata_cache_file`). For production, replace Symfony’s cache with Laravel’s `FileCache` or `RedisCache` by binding the `BotDetector` in `AppServiceProvider`. Redis is ideal for shared instances; file caching works for single-server setups.
Will this package cause false positives (e.g., blocking legitimate users with bot-like agents)?
False positives can occur due to static bot signatures. Mitigate this by logging mismatches (e.g., via Sentry) and supplementing with Laravel’s `config('bot-detect.whitelist')`. Test with known traffic patterns before deploying to production.
Can I use this for analytics (e.g., tracking crawler visits) instead of blocking?
Absolutely. Dispatch a custom event (e.g., `BotDetected`) when a bot is identified. Listen for it in an `EventServiceProvider` to log data to a database or analytics tool. Example: `event(new BotDetected($bot));` in middleware.
How do I update the bot signatures if new crawlers emerge (e.g., DuckDuckBot)?
The package uses YAML-based metadata. Fork the repo to update signatures manually or contribute to the community. For Laravel, pre-compile metadata into a JSON config file (e.g., `config/bots.json`) for easier maintenance. Schedule quarterly reviews to align with Laravel’s dependency updates.
Is there a performance impact from parsing YAML files on every request?
Yes, but caching mitigates this. Pre-load metadata in a Laravel service provider’s `boot()` method or use Laravel’s `config()` caching. For high-traffic apps, replace YAML with JSON (faster to parse) and store it in `config/bots.php`.
What are the alternatives to this package for Laravel bot detection?
Alternatives include `laravel-bot-detection` (more Laravel-native but less customizable) or `spatie/ray` for debugging bot requests. This package stands out for its modularity (Symfony/YAML) and middleware-friendly design, but weigh trade-offs like maintenance status vs. flexibility.
How do I test this package in a Laravel application before production?
Start with a proof-of-concept: `composer require vipx/bot-detect`, then create a middleware to log detected bots. Use tools like `curl` or browser dev tools to simulate bot traffic (e.g., `User-Agent: Googlebot`). Validate false positives/negatives against known crawlers before blocking.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
codifyo/ts-generator-bundle
andydefer/laravel-cluster
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky
spatie/mailcoach-vapor