PHPackages                             marcelocardozo/antibot-laravel - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Security](/categories/security)
4. /
5. marcelocardozo/antibot-laravel

ActiveLibrary[Security](/categories/security)

marcelocardozo/antibot-laravel
==============================

Sistema de detecção e bloqueio de bots, proxies e VPNs para Laravel

v1.1.4(2w ago)112↓100%1MITJavaScriptPHP ^8.2

Since May 12Pushed 2w agoCompare

[ Source](https://github.com/marcelocardozo/antibot-laravel)[ Packagist](https://packagist.org/packages/marcelocardozo/antibot-laravel)[ Docs](https://github.com/marcelocardozo/antibot-laravel)[ RSS](/packages/marcelocardozo-antibot-laravel/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (7)Versions (16)Used By (0)

Antibot para Laravel
====================

[](#antibot-para-laravel)

Sistema de detecção e bloqueio de bots, proxies e VPNs para Laravel.

Detecta automaticamente ferramentas de automação (Selenium, Puppeteer, Playwright, Cypress, PhantomJS, etc.), analisa fingerprints do navegador, verifica proxies/VPNs via ProxyCheck.io e bloqueia visitantes suspeitos com base em um sistema de pontuação configurável.

Requisitos
----------

[](#requisitos)

- PHP 8.2+
- Laravel 11, 12 ou 13
- Chave de API do [ProxyCheck.io](https://proxycheck.io/) (gratuito)

Instalação
----------

[](#instalação)

```
composer require marcelocardozo/antibot-laravel
```

Publicar configuração, migrations e assets:

```
php artisan vendor:publish --provider="MarceloCardozo\Antibot\AntibotServiceProvider"
```

Ou publicar separadamente:

```
# 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
```

Executar as migrations:

```
php artisan migrate
```

Configuração
------------

[](#configuração)

Adicione ao `.env`:

```
ANTIBOT_PROXYCHECK_API_KEY=sua-chave-aqui
ANTIBOT_TEST_IP=192.145.220.95
```

VariávelDescrição`ANTIBOT_PROXYCHECK_API_KEY`Chave de API do ProxyCheck.io`ANTIBOT_TEST_IP`IP usado em localhost para testes (substitui 127.0.0.1)O arquivo `config/antibot.php` contém todas as opções:

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

Uso
---

[](#uso)

Adicione a diretiva `@antibot` em **todas** as páginas Blade do seu site:

```

    @antibot

    Meu site

```

### Comportamento por página

[](#comportamento-por-página)

- **Página inicial** (`pagina_inicial` no config): após aprovação, redireciona para `redirect_url` com os dados do visitante na query string (IP, cidade, navegador, etc.). Se `enviar_dados` for `false`, redireciona sem dados.
- **Demais páginas**: após aprovação, simplesmente libera a página (remove o loading e exibe o conteúdo).
- **Bloqueados**: em qualquer página, redireciona para `bloqueado_url` ou exibe o template 404.

### Fluxo de verificação

[](#fluxo-de-verificação)

1. A página é ocultada e um loading é exibido
2. 40+ verificações client-side são executadas
3. APIs server-side analisam IP, proxy, VPN e User-Agent
4. O resultado é salvo no banco de dados
5. Se aprovado na `pagina_inicial`: redireciona para `redirect_url`
6. Se aprovado em outra página: libera a página
7. Se bloqueado: redireciona para `bloqueado_url` ou exibe 404

Redirecionamento
----------------

[](#redirecionamento)

### `redirect_url` — Após aprovação na página inicial

[](#redirect_url--após-aprovação-na-página-inicial)

```
// 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` — Dados do visitante na query string

[](#enviar_dados--dados-do-visitante-na-query-string)

Quando `enviar_dados` é `true` (padrão), ao redirecionar para `redirect_url`, os dados do visitante são enviados como parâmetros na query string:

```
/dashboard?ip=177.0.0.1&city=Sao+Paulo&client_name=Chrome&os_name=Windows&...

```

Para desativar:

```
'enviar_dados' => false,
```

### `bloqueado_url` — Visitantes bloqueados

[](#bloqueado_url--visitantes-bloqueados)

```
// 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',
```

Facade
------

[](#facade)

O pacote disponibiliza uma Facade para uso programático:

```
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', ...]
```

Model
-----

[](#model)

O pacote registra o model Eloquent `MarceloCardozo\Antibot\Models\Acesso` que permite consultar os dados de detecção no seu código.

### Campos disponíveis

[](#campos-disponíveis)

CampoTipoDescrição`id`bigintID auto-incremento`data_hora`timestampData/hora do acesso`ip`stringIP do visitante`url`textURL acessada`asn`stringASN do provedor`hostname`stringHostname do IP`provider`stringProvedor de internet`organisation`stringOrganização`isocode`stringCódigo do país (BR, US, etc.)`regioncode`stringCódigo da região`city`stringCidade`proxy`string"yes" ou "no"`vpn`string"yes" ou "no"`bot`string"yes" ou "no"`client_name`stringNavegador (Chrome, Firefox, etc.)`client_type`stringTipo do client (browser, app, etc.)`client_version`stringVersão do navegador`device_brand`stringMarca do dispositivo`device_model`stringModelo do dispositivo`device_type`stringTipo (desktop, smartphone, tablet)`os_name`stringSistema operacional`os_platform`stringPlataforma`os_version`stringVersão do SO`os_family`stringFamília do SO`bloqueado`string"true" ou "false"`motivo_bloqueio`textMotivo(s) do bloqueio`created_at`timestampCriado em`updated_at`timestampAtualizado em### Exemplo em Controller

[](#exemplo-em-controller)

```
