Loading repository data…
Loading repository data…
chapeupreto / repository
:oncoming_automobile: API em PHP para consultar informações de veículos na base de dados do SINESP Cidadão
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
SINESP Cidadão é uma base de dados pública de veículos brasileiros muito útil para identificar carros ou motos roubados ou suspeitos.
Infelizmente, o governo não mantém uma API pública para realizar esse tipo de consulta. Até então, a única maneira de visualizar as informações de um determinado veículo era através do site do Sinesp respondendo a perguntas de verificação (captchas) para cada uma das requisições. Assim, houve a necessidade de desenvolver uma API de modo a facilitar o acesso a essas informações.
Se um veículo com a placa especificada for encontrado, o servidor irá retornar com as seguintes informações:
Essas informações estarão disponíveis por meio de um array associativo ou como atributo do objeto.
Instale a versão mais recente com:
composer require chapeupreto/sinesp
Abaixo um exemplo simples e geral de utilização da biblioteca:
<?php
require 'vendor/autoload.php';
use Sinesp\Sinesp;
$veiculo = new Sinesp;
try {
$veiculo->buscar('GWW-6471');
if ($veiculo->existe()) {
print_r($veiculo->dados());
}
} catch (\Exception $e) {
echo $e->getMessage();
}
O método buscar() deve ser o primeiro método a ser invocado. Esse método é empregado para localizar informações do veiculo com a placa informada.
Após a chamada ao método buscar(), o método dados() irá retornar um array associativo contendo todas as informações do veículo.
Ainda, ao invés de utilizar todo o array retornado pelo método dados(), pode-se também recuperar uma informação isoladamente acessando-a como atributo do objeto:
echo 'O municipio do veiculo é ', $veiculo->municipio;
O SINESP pode bloquear conexões vindas de fora do país.
Caso a consulta não retorne resultados por erro de conexão (por exemplo, erro de timeout), pode-se realizar uma consulta usando proxy.
Existem diversos proxy gratuitos (e.g., http://proxylist.hidemyass.com/) que podem ser encontrados facilmente na Internet. Um exemplo de utilização com proxy encontra-se abaixo:
$veiculo = new Sinesp;
$veiculo->proxy('177.54.144.208', '80'); // Com proxy, esse metodo deve ser chamado antes do metodo buscar()
$veiculo->buscar('GWW-6471');
print_r($veiculo->dados());
Opcionalmente, ao invés de usar o metodo proxy($ip, $porta), pode-se utilizar um array associativo com as chaves ip e porta como segundo argumento do método buscar():
$veiculo = new Sinesp;
$veiculo->buscar('GWW-6471', ['ip' => '177.54.144.208', 'porta' => '80']); // a consulta usara o proxy especificado
print_r($veiculo->dados());
Uma vez que o SINESP não mata sua requisição após bloqueio, é provável que você acabe se deparando com erro(s) 504. A fim de evitar transtorno, foi disponibilizado o método timeout para definir um tempo máximo de resposta:
$veiculo->timeout(5); // tempo em segundos
Dica: Em combinação com o proxy (fazendo múltiplas tentativas com diferentes proxies), isso poderá aumentar consideravelmente suas chances de sucesso para múltiplas requisições
Com diferentes proxies, mas sem timeout
Com diferentes proxies e timeout