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.
phpshko/laravel-livewire-depdrop
larasell-dev/larasell
calliostro/spotify-bundle
calmfox/watch-sylius
damienfern/grpc-symfony-bundle
atoolo/index-bundle
atoolo/genai-bundle
coprotoai/laravel-ticket
davidjln/llm-carbon-bundle
cryonighter/valid-request-bundle
coolms/taxonomy-bundle
coolms/field-bundle
articulate-orm/symfony
aaix/laravel-tall-architect
ephoto/akeneo-connector
emmanuelballery/eb-plantumlbundle
emielburgman/symfony-visitor-beacon
emielburgman/symfony-visit-storage
emielburgman/symfony-security-headers
emielburgman/symfony-log-viewer