Skip to content

Commit d6d67a6

Browse files
committed
update new state MA
1 parent e9a5cfb commit d6d67a6

8 files changed

Lines changed: 2846 additions & 102 deletions

File tree

dist/controllers/MAController.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@ declare class Ma {
33
index: (req: Request, res: Response) => Promise<Response<any, Record<string, any>> | undefined>;
44
scrap: (placa: string, renavam: string) => Promise<{
55
message: any;
6+
multas?: undefined;
67
placa?: undefined;
78
renavam?: undefined;
89
} | {
10+
multas: any[];
911
placa: string;
1012
renavam: string;
1113
message?: undefined;

dist/controllers/MAController.js

Lines changed: 120 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
44
};
55
Object.defineProperty(exports, "__esModule", { value: true });
66
exports.ma = void 0;
7+
const utils_1 = __importDefault(require("src/utils/utils"));
78
const validation_1 = __importDefault(require("../validations/validation"));
8-
const puppeteer_1 = __importDefault(require("puppeteer"));
9+
const form_data_1 = __importDefault(require("form-data"));
910
class Ma {
1011
constructor() {
1112
this.index = async (req, res) => {
@@ -19,43 +20,125 @@ class Ma {
1920
res.status(200).json(multas);
2021
};
2122
this.scrap = async (placa, renavam) => {
22-
const browser = await puppeteer_1.default.launch({
23-
headless: process.env.NODE_ENV === 'production' ? 'new' : false,
24-
slowMo: process.env.NODE_ENV === 'production' ? 0 : 50,
25-
timeout: 5000,
26-
args: [
27-
'--no-sandbox',
28-
'--disable-setuid-sandbox',
29-
'--disable-dev-shm-usage',
30-
'--disable-accelerated-2d-canvas',
31-
]
32-
});
33-
const page = await browser.newPage();
34-
await page.goto(`${process.env.MA_URL}`);
35-
const placaSelector = '#placa';
36-
const renavamSelector = '#renavam';
37-
const linkPadraoSelector = '.link-padrao';
38-
const buttonsSelector = '#btn-veiculo';
39-
const inputPlaca = await page.$(placaSelector);
40-
const inputRenavam = await page.$(renavamSelector);
41-
await (inputPlaca === null || inputPlaca === void 0 ? void 0 : inputPlaca.type(placa));
42-
await (inputRenavam === null || inputRenavam === void 0 ? void 0 : inputRenavam.type(renavam));
43-
//buttonSubmit remove disabled
44-
const button = await page.$(buttonsSelector);
45-
//remove disabled
46-
await page.evaluate((button) => {
47-
button.removeAttribute('disabled');
48-
}, button);
49-
await (button === null || button === void 0 ? void 0 : button.click());
50-
//get value from alert alert-danger alert-dismissible show
51-
const alertDanger = await page.$('.alert-danger');
52-
const alertDangerText = await page.evaluate((alertDanger) => {
53-
return alertDanger.textContent;
54-
}, alertDanger);
55-
if (alertDangerText) {
56-
return { message: alertDangerText };
23+
let data = new form_data_1.default();
24+
data.append('placa', placa);
25+
data.append('renavam', renavam);
26+
const payload = await utils_1.default.request(`${process.env.MA_URL}`, 'POST', {
27+
'Accept-Encoding': 'gzip',
28+
'User-Agent': 'okhttp/3.12.12',
29+
'Accept': 'application/json'
30+
}, data);
31+
if (payload.includes('alert alert-danger')) {
32+
let contentFromHtml = payload.split('<div class="alert alert-danger alert-dismissible show" role="alert">')[1];
33+
contentFromHtml = contentFromHtml.split('\r\n')[1].trim();
34+
return { message: contentFromHtml };
5735
}
58-
return { placa, renavam };
36+
// payload contein
37+
// <input type="hidden" name="idAcesso" id="idAcesso" value="19353678" />
38+
// [1] <input type="hidden" name="placa" id="placa" value="OTL4C21" />
39+
// [1] <input type="hidden" name="renavam" id="renavam" value="513200223" />
40+
// [1] <input type="hidden" name="chassi" id="chassi" value="9C2JC4830DR018207" />
41+
// [1] <input type="hidden" name="idVeiculo" id="idVeiculo" value="1319444" />
42+
// [1] <input type="hidden" name="documentoProprietario" id="documentoProprietario" value="80895654768">
43+
const idAcesso = payload.split('<input type="hidden" name="idAcesso" id="idAcesso" value="')[1].split('"')[0];
44+
const idVeiculo = payload.split('<input type="hidden" name="idVeiculo" id="idVeiculo" value="')[1].split('"')[0];
45+
const documentoProprietario = payload.split('<input type="hidden" name="documentoProprietario" id="documentoProprietario" value="')[1].split('"')[0];
46+
const chassi = payload.split('<input type="hidden" name="chassi" id="chassi" value="')[1].split('"')[0];
47+
// payload contein
48+
// <table class="table table-striped table-sm table-bordered table-hover">
49+
// <tbody><tr>
50+
// <td>
51+
// <div class="text-muted">Placa</div>
52+
// OTL4C21
53+
// </td>
54+
// <td>
55+
// <div class="text-muted">Renavam</div>
56+
// 513200223
57+
// </td>
58+
// <td>
59+
// <div class="text-muted">Placa Anterior</div>
60+
// OTL4C21/PA
61+
// </td>
62+
// <td>
63+
// <div class="text-muted ">Tipo</div>
64+
// 3 - MOTONETA
65+
// </td>
66+
// <td colspan="2">
67+
// <div class="text-muted ">Carroceria</div>
68+
// 999 - NAO APLICAVEL/NENHUMA
69+
// </td>
70+
// <td>
71+
// <div class="text-muted ">Espécie</div>
72+
// 1 - PASSAGEIRO
73+
// </td>
74+
// </tr>
75+
// <tr>
76+
// <td colspan="7">
77+
// <div class="text-muted">Nome do proprietário</div>
78+
// ANTONIO CARLOS GERA
79+
// </td>
80+
// </tr>
81+
// <tr>
82+
// <td colspan="2">
83+
// <div class="text-muted">Marca/Modelo</div>
84+
// 2009 - HONDA/BIZ 125 EX
85+
// </td>
86+
// <td>
87+
// <div class="text-muted">Cor</div>
88+
// 4 - BRANCA
89+
// </td>
90+
// <td>
91+
// <div class="text-muted">Categoria</div>
92+
// 1 - PARTICULAR
93+
// </td>
94+
// <td>
95+
// <div class="text-muted">Lugares</div>
96+
// 2
97+
// </td>
98+
// <td>
99+
// <div class="text-muted">Potência</div>
100+
// </td>
101+
// <td>
102+
// <div class="text-muted">Combustível</div>
103+
// 16 - ALCOOL/GASOLINA
104+
// </td>
105+
// </tr>
106+
// <tr>
107+
// <td colspan="4">
108+
// <div class="text-muted">Licenciado até</div>
109+
// 2023 em 17/05/2023, Licenciamento Anual (CRLV emitido por DETRAN\ServicosDetran)(Via 1)
110+
// </td>
111+
// <td class="text-center" colspan="2">
112+
// <font style="color: #015f85; font-weight: bold;">CRLV ELETRONICO 2023</font> <br> <img src="/imagens/impressora.png" style="cursor:pointer !important;" onclick="ConsultaCRLVe();">
113+
// </td>
114+
// <td>
115+
// <div class="text-muted">Adquirido em</div>
116+
// 08/02/2021
117+
// </td>
118+
// </tr>
119+
// <tr>
120+
// <td colspan="7">
121+
// <div class="text-muted">Informação da financeira via SNG - Sistema Nacional de Gravame</div>
122+
// Nenhuma informação pendente até esta data
123+
// </td>
124+
// </tr>
125+
// <tr>
126+
// <td colspan="7" class="">
127+
// <div class="text-muted">Impedimentos</div>
128+
// Nenhum impedimento registrado até esta data
129+
// </td>
130+
// </tr>
131+
// <tr>
132+
// <td colspan="7">
133+
// <div class="text-muted">Informações Adicionais</div>
134+
// Nenhuma informação adicional até esta data
135+
// </td>
136+
// </tr>
137+
// </tbody></table>
138+
//payload corpo_2049 contein table
139+
// const contentFromDivCorpo2049 = $('table')
140+
const multas = [];
141+
return { multas: multas, placa: placa, renavam: renavam };
59142
};
60143
}
61144
}

0 commit comments

Comments
 (0)