A comprehensive Laravel package for detecting browsers, devices, robots, platforms, and Tor connections with advanced user agent parsing.
- π Browser Detection: Chrome, Firefox, Safari, Edge, Opera, Brave, Tor, and more
- π± Mobile Device Detection: Detect mobile brands and models (Samsung, iPhone, Xiaomi, etc.)
- π» Desktop Detection: Identify desktop browsers and operating systems
- π€ Robot/Bot Detection: Identify search engine crawlers and bots
- π Tor Detection: Real-time Tor exit node detection with caching
- π₯οΈ Platform Detection: Windows, macOS, Linux, Android, iOS, etc.
- π Tablet Detection: Identify tablets and their models
- β‘ Performance: Cached Tor nodes, optimized regex patterns
- π― Client Hints Support: Uses modern Sec-CH-UA headers
Install via Composer:
composer require sajidwarner/laravel-device-detectorThe package will automatically register the service provider and facade.
If auto-discovery is disabled, add to config/app.php:
'providers' => [
    SajidWarner\DeviceDetector\DeviceDetectorServiceProvider::class,
],
'aliases' => [
    'DeviceDetector' => SajidWarner\DeviceDetector\Facades\DeviceDetector::class,
],php artisan vendor:publish --provider="SajidWarner\DeviceDetector\DeviceDetectorServiceProvider"use SajidWarner\DeviceDetector\Facades\DeviceDetector;
// Detect current request
$device = DeviceDetector::detect();
// Get specific information
$browser = DeviceDetector::getBrowser();
$platform = DeviceDetector::getPlatform();
$deviceType = DeviceDetector::getDeviceType();
$isMobile = DeviceDetector::isMobile();
$isTablet = DeviceDetector::isTablet();
$isDesktop = DeviceDetector::isDesktop();
$isRobot = DeviceDetector::isRobot();
$isTor = DeviceDetector::isTor();$data = DeviceDetector::detect();
/*
Returns:
[
    'browser' => 'Google Chrome',
    'browser_version' => '120.0',
    'platform' => 'Windows 10',
    'device_type' => 'desktop',
    'device_brand' => null,
    'device_model' => null,
    'is_mobile' => false,
    'is_tablet' => false,
    'is_desktop' => true,
    'is_robot' => false,
    'is_tor' => false,
    'robot_name' => null,
    'ip' => '192.168.1.1'
]
*/use Illuminate\Http\Request;
use SajidWarner\DeviceDetector\Facades\DeviceDetector;
class HomeController extends Controller
{
    public function index(Request $request)
    {
        $device = DeviceDetector::detect($request);
        
        if ($device['is_mobile']) {
            return view('mobile.home', compact('device'));
        }
        
        if ($device['is_robot']) {
            return response('Bot detected: ' . $device['robot_name']);
        }
        
        return view('home', compact('device'));
    }
}Create a middleware to block Tor or bots:
php artisan make:middleware BlockToruse SajidWarner\DeviceDetector\Facades\DeviceDetector;
public function handle($request, Closure $next)
{
    if (DeviceDetector::isTor($request)) {
        return response('Tor connections not allowed', 403);
    }
    
    return $next($request);
}@mobile
    <p>Mobile view content</p>
@endmobile
@desktop
    <p>Desktop view content</p>
@enddesktop
@tablet
    <p>Tablet view content</p>
@endtablet
@robot
    <p>Bot detected</p>
@endrobot
@tor
    <p>Tor browser detected</p>
@endtor- Google Chrome
- Mozilla Firefox
- Safari
- Microsoft Edge
- Opera / Opera GX
- Brave
- Vivaldi
- Tor Browser
- Kahf Browser
- Samsung Internet
- UC Browser
- Internet Explorer
- And many more...
- Apple (iPhone, iPad)
- Samsung
- Xiaomi
- Huawei
- OnePlus
- Oppo
- Vivo
- Google (Pixel)
- Motorola
- Nokia
- LG
- Sony
- And more...
- Googlebot
- Bingbot
- Yahoo Slurp
- DuckDuckBot
- Baiduspider
- YandexBot
- Facebook Bot
- Twitter Bot
- LinkedIn Bot
- And many more...
Edit config/device-detector.php:
return [
    // Cache duration for Tor exit nodes (in seconds)
    'tor_cache_duration' => 3600,
    
    // Tor exit nodes URL
    'tor_exit_node_url' => 'https://check.torproject.org/exit-addresses',
    
    // Enable/disable Tor detection
    'enable_tor_detection' => true,
    
    // Enable/disable robot detection
    'enable_robot_detection' => true,
];The package provides test routes (disabled in production):
GET /device-detector/test
Returns JSON with detected device information.
- PHP >= 8.1
- Laravel >= 10.0
composer testIf you discover any security issues, please email bestcyberking@gmail.com instead of using the issue tracker.
- Syed Sajid Akram - Package Author & Maintainer
- Claude.ai - AI Assistant by Anthropic (Package Development & Architecture)
- ChatGPT - AI Assistant by OpenAI (Code Assistance & Suggestions)
- Google Gemini - AI Assistant by Google (Code Assistance & Suggestions)
The MIT License (MIT). Please see License File for more information.
For support, please open an issue on GitHub.