breskott/sinesp

SINESP 公民 API 客户端

v1.0.0 2020-01-30 19:37 UTC

This package is auto-updated.

Last update: 2024-09-29 05:29:04 UTC


README

Latest stable release Software license Total downloads View my other packages and projects

SINESP Cidadão 是一个公开的巴西车辆和公民数据库,非常有助于识别被盗或可疑的汽车或摩托车,以及拥有逮捕令的公民。

Sinesp PHP API 客户端

遗憾的是,政府没有维护一个公开的 API 来执行此类查询。到目前为止,查看特定车辆的唯一方法是通过 Sinesp 网站回答每个请求的验证问题(captcha)。因此,有必要开发一个 API 以便于访问这些信息。

可用的信息

如果找到指定牌照的 车辆,服务器将返回以下信息

  • codigoRetorno:查询返回代码
  • mensagemRetorno:查询返回消息
  • codigoSituacao:车辆状态代码
  • situacao:车辆状态消息
  • modelo:车辆型号
  • marca:车辆品牌
  • cor:车辆颜色
  • ano:车辆制造年份
  • anoModelo:车辆型号年份
  • placa:查询的牌照
  • data:查询的日期和时间
  • uf:车辆所在的州或联邦单位
  • municipio:车辆所在的市或镇
  • chassi:车辆底盘号
  • dataAtualizacaoCaracteristicasVeiculo:车辆特征更新日期
  • dataAtualizacaoRouboFurto:盗窃或抢劫信息更新日期
  • dataAtualizacaoAlarme:

如果找到指定姓名的 逮捕令,服务器将返回以下信息

  • codigoRetorno:查询返回代码
  • mensagemRetorno:查询返回消息
  • idMandado:逮捕令 ID
  • numeroMandado:逮捕令编号
  • pessoa:人员姓名
  • dataNascimento:人员出生日期
  • genitora:人员母亲姓名
  • RG:人员身份证号码
  • CPF:人员 CPF 号码
  • tipoSituacaoMandado:逮捕令状态
  • tipoMandado:逮捕令类型

这些信息将通过 关联数组 或作为对象的 属性 提供。

要求

  • PHP 5.4+
  • cURL
  • libxml / XML

安装

使用以下命令安装最新版本:

composer require breskott/sinesp

使用

以下是一个使用此库的简单通用示例

<?php
error_reporting(0);

require 'vendor/autoload.php';

use Sinesp\Sinesp;
use Sinesp\MandadoSinesp;

$veiculo = new Sinesp;
$mandado = new MandadoSinesp();

try {

    // Pega pelo Get
    $placa = $_GET['placa'];
    $nome = $_GET['nome'];

    if (!empty($placa)){
	    $veiculo->buscar($placa);

	    if ($veiculo->existe()) {
		    print_r($veiculo->dados());
	    }
    }

	if (!empty($nome)) {
		$mandado->buscar($nome);

		if ($mandado->existe()){
			print_r($mandado->dados());
		}
	}

} catch (\Exception $e) {
    echo $e->getMessage();
}

buscar() 方法必须是第一个调用的方法。此方法用于查找具有指定牌照的车辆信息。

在调用 buscar() 方法后,dados() 方法将返回一个关联数组,其中包含车辆或公民的所有信息。

代理

SINESP 可能会阻止来自国外的连接。如果查询因连接错误(例如,timeout 错误)而未返回结果,可以使用代理进行查询。

互联网上有许多免费的代理(例如,http://proxylist.hidemyass.com/),很容易找到。以下是一个使用代理的示例

$veiculo = new Sinesp;
$mandado = new MandadoSinesp();

$veiculo->proxy('177.54.144.208', '80'); // Com proxy, esse metodo deve ser chamado antes do metodo buscar()
$mandado->proxy('177.54.144.208', '80'); // Com proxy, esse metodo deve ser chamado antes do metodo buscar()

$veiculo->buscar('GWW-6471');
$mandado->buscar('Nome da pessoa');

print_r($veiculo->dados());
print_r($mandado->dados());

可以选择使用 proxy($ip, $porta) 方法,也可以使用具有 ipporta 键的关联数组作为 buscar() 方法的第二个参数。

$veiculo = new Sinesp;
$mandado = new MandadoSinesp();

$veiculo->buscar('GWW-6471', ['ip' => '177.54.144.208', 'porta' => '80']); // a consulta usara o proxy especificado
$mandado->buscar('Nome da Pessoa', ['ip' => '177.54.144.208', 'porta' => '80']); // a consulta usara o proxy especificado

print_r($veiculo->dados());
print_r($mandado->dados());

超时

由于SINESP在阻塞后不会终止其请求,您可能会遇到错误504。为了避免麻烦,已经提供了timeout方法来设置最大响应时间。

$veiculo->timeout(5); // tempo em segundos
$mandado->timeout(5); // tempo em segundos

提示:结合代理(使用不同的代理进行多次尝试),这可以大大提高多个请求的成功率。

使用不同代理但无超时时的多个错误504 使用不同代理但无超时

使用代理+超时解决大部分错误504 使用不同代理和超时