sajidwarner/laravel-device-detector

A comprehensive Laravel package for detecting browsers, devices, robots, platforms, and Tor connections with advanced user agent parsing

Installs: 3

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/sajidwarner/laravel-device-detector

v1.0.6 2025-10-30 09:32 UTC

This package is auto-updated.

Last update: 2025-10-30 13:29:58 UTC


README

A comprehensive Laravel package for detecting browsers, devices, robots, platforms, and Tor connections with advanced user agent parsing.

Features

  • 🌐 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

Installation

Install via Composer:

composer require sajidwarner/laravel-device-detector

Laravel Auto-Discovery

The package will automatically register the service provider and facade.

Manual Registration (Optional)

If auto-discovery is disabled, add to config/app.php:

'providers' => [
    SajidWarner\DeviceDetector\DeviceDetectorServiceProvider::class,
],

'aliases' => [
    'DeviceDetector' => SajidWarner\DeviceDetector\Facades\DeviceDetector::class,
],

Publish Configuration

php artisan vendor:publish --provider="SajidWarner\DeviceDetector\DeviceDetectorServiceProvider"

Usage

Basic Usage

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();

Full Detection Array

$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'
]
*/

In Controllers

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'));
    }
}

Middleware Usage

Create a middleware to block Tor or bots:

php artisan make:middleware BlockTor
use SajidWarner\DeviceDetector\Facades\DeviceDetector;

public function handle($request, Closure $next)
{
    if (DeviceDetector::isTor($request)) {
        return response('Tor connections not allowed', 403);
    }
    
    return $next($request);
}

Blade Directives

@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

Detected Browsers

  • 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...

Detected Mobile Brands

  • Apple (iPhone, iPad)
  • Samsung
  • Xiaomi
  • Huawei
  • OnePlus
  • Oppo
  • Vivo
  • Google (Pixel)
  • Motorola
  • Nokia
  • LG
  • Sony
  • And more...

Detected Robots/Bots

  • Googlebot
  • Bingbot
  • Yahoo Slurp
  • DuckDuckBot
  • Baiduspider
  • YandexBot
  • Facebook Bot
  • Twitter Bot
  • LinkedIn Bot
  • And many more...

Configuration

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,
];

API Routes

The package provides test routes (disabled in production):

GET /device-detector/test

Returns JSON with detected device information.

Requirements

  • PHP >= 8.1
  • Laravel >= 10.0

Testing

composer test

Security

If you discover any security issues, please email bestcyberking@gmail.com instead of using the issue tracker.

Credits

  • 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)

License

The MIT License (MIT). Please see License File for more information.

Support

For support, please open an issue on GitHub.