PHP code example of marcelocardozo / antibot-laravel

1. Go to this page and download the library: Download marcelocardozo/antibot-laravel library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

marcelocardozo / antibot-laravel example snippets


return [
    'route_prefix'       => 'antibot',       // Prefixo das rotas
    'route_middleware'    => ['web'],          // Middleware das rotas
    'pagina_inicial'     => '/',              // Página onde o antibot faz detecção + redirect
    'redirect_url'       => '',               // Redirecionar após aprovação (vazio = libera a página)
    'enviar_dados'       => true,             // Enviar dados do visitante na query string do redirect
    'bloqueado_url'      => '',               // Bloqueados → 404 (vazio) ou URL customizada
    'tempo_minimo'       => 5000,             // Tempo mínimo de verificação (ms)
    'tela_carregamento'  => 'spinner',        // Template: 'spinner' ou 'cloudflare'
    'score_minimo'       => 50,               // Score mínimo para bloquear
    'bloquear_bot'       => true,             // Bloquear bots detectados
    'bloquear_proxy'     => true,             // Bloquear proxies
    'bloquear_vpn'       => true,             // Bloquear VPNs
    'paises_permitidos'  => ['BR'],           // Países permitidos (vazio = todos)
    'regras'             => [ ... ],          // 40+ regras de detecção com pontuação
];

// config/antibot.php

// Padrão: não redireciona (libera a página)
'redirect_url' => '',

// Redireciona para outra página após aprovação
'redirect_url' => '/dashboard',

'enviar_dados' => false,

// config/antibot.php

// Padrão: exibe o template 404 do pacote
'bloqueado_url' => '',

// Path relativo
'bloqueado_url' => '/acesso-negado',

// URL externa
'bloqueado_url' => 'https://google.com',

use MarceloCardozo\Antibot\Facades\Antibot;

// Resolver IP real do visitante
$ip = Antibot::resolveIp($request);

// Verificar proxy/VPN
$data = Antibot::check($ip);
// Retorna: ['ip', 'asn', 'provider', 'isocode', 'city', 'proxy', 'vpn', ...]

// Detectar dispositivo
$device = Antibot::detect($request->userAgent());
// Retorna: ['bot', 'client_name', 'device_type', 'os_name', ...]

// Flags de servidor suspeitas
$flags = Antibot::getServerFlags($request);
// Retorna: ['tool_ua', 'short_ua', 'no_accept_language', ...]



namespace App\Http\Controllers;

use MarceloCardozo\Antibot\Models\Acesso;

class AntibotController extends Controller
{
    // Listar todos os acessos com paginação
    public function index()
    {
        $acessos = Acesso::latest()->paginate(20);

        return view('antibot.index', compact('acessos'));
    }

    // Detalhes de um acesso específico
    public function show(Acesso $acesso)
    {
        return view('antibot.show', compact('acesso'));
    }

    // Listar apenas bloqueados
    public function bloqueados()
    {
        $bloqueados = Acesso::where('bloqueado', 'true')
            ->latest()
            ->paginate(20);

        return view('antibot.bloqueados', compact('bloqueados'));
    }

    // Estatísticas
    public function stats()
    {
        $total = Acesso::count();
        $bloqueados = Acesso::where('bloqueado', 'true')->count();
        $aprovados = Acesso::where('bloqueado', 'false')->count();
        $proxies = Acesso::where('proxy', 'yes')->count();
        $vpns = Acesso::where('vpn', 'yes')->count();
        $bots = Acesso::where('bot', 'yes')->count();

        $hoje = Acesso::whereDate('created_at', today())->count();
        $bloqueadosHoje = Acesso::where('bloqueado', 'true')
            ->whereDate('created_at', today())
            ->count();

        return view('antibot.stats', compact(
            'total', 'bloqueados', 'aprovados',
            'proxies', 'vpns', 'bots',
            'hoje', 'bloqueadosHoje'
        ));
    }
}

use MarceloCardozo\Antibot\Models\Acesso;

// Últimos 10 acessos bloqueados
$bloqueados = Acesso::where('bloqueado', 'true')
    ->latest()
    ->take(10)
    ->get();

// Acessos de um IP específico
$acessos = Acesso::where('ip', '177.0.0.1')->get();

// Verificar se um IP está bloqueado
$estaBloqueado = Acesso::where('ip', '177.0.0.1')
    ->latest()
    ->first()
    ?->isBloqueado(); // true ou false

// Acessos por país
$porPais = Acesso::select('isocode')
    ->selectRaw('count(*) as total')
    ->groupBy('isocode')
    ->orderByDesc('total')
    ->get();

// Acessos com proxy ou VPN
$suspeitos = Acesso::where('proxy', 'yes')
    ->orWhere('vpn', 'yes')
    ->latest()
    ->get();

// Total de bloqueados hoje
$total = Acesso::where('bloqueado', 'true')
    ->whereDate('created_at', today())
    ->count();

// Acessos de um navegador específico
$chrome = Acesso::where('client_name', 'Chrome')->get();

// Acessos mobile bloqueados
$mobileBloqueados = Acesso::where('device_type', 'smartphone')
    ->where('bloqueado', 'true')
    ->get();

// config/antibot.php
'regras' => [
    'historico_curto' => ['ativo' => false, 'pts' => 5],  // desativada
    'webdriver'       => ['ativo' => true,  'pts' => 80],  // ativa
],

'tela_carregamento' => 'cloudflare',
bash
php artisan vendor:publish --provider="MarceloCardozo\Antibot\AntibotServiceProvider"
bash
# Apenas configuração
php artisan vendor:publish --tag=antibot-config

# Apenas migrations
php artisan vendor:publish --tag=antibot-migrations

# Apenas assets (JS)
php artisan vendor:publish --tag=antibot-assets

# Apenas views (templates)
php artisan vendor:publish --tag=antibot-views
bash
php artisan migrate