chapeupreto/sinesp

此包已废弃,不再维护。未建议替代包。

SINESP Cidadao API客户端

v1.7.0 2019-01-12 18:27 UTC

This package is auto-updated.

Last update: 2020-01-30 21:13:13 UTC


README

Latest stable release Software license Total downloads

View my other packages and projects Follow @chapeupreto on Twitter Share this package on Twitter

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:

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

要求

  • PHP 5.4+
  • cURL
  • libxml / XML

安装

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

composer require chapeupreto/sinesp

使用

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

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

buscar()方法必须首先调用。此方法用于定位具有指定牌照的车辆信息。

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

此外,您还可以通过将信息作为对象的属性访问来恢复信息,而不是使用dados()方法返回的整个数组

echo 'O municipio do veiculo é ', $veiculo->municipio;

代理

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

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

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

可选地,您可以使用一个关联数组,包含键 ipporta,作为 buscar() 方法的第二个参数,而不是使用 proxy($ip, $porta) 方法。

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

print_r($veiculo->dados());

超时

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

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

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

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

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

感谢