UNPKG

get-mexican-data-by-curp

Version:

Verify CURP and obtain personal information from the Mexican government CURP. It scrapes official site and another providers.

112 lines (111 loc) 5.12 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.GovernmentScrapper = void 0; const models_1 = require("../models"); const axios_1 = __importDefault(require("axios")); const genderISOConverter = new Map([ ['HOMBRE', '1'], ['MUJER', '2'], ]); const birthdayFormatFromRenapo = /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/g; const birthday = '$3-$2-$1T12:00:00.000Z'; class GovernmentScrapper extends models_1.Provider { constructor(captchaSolver) { super(); this.captchaSolver = captchaSolver; } static async parseResponse(renapoResponse, curp) { var _a; const register = renapoResponse.registros[0]; return { curp: curp.value, // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access fatherName: register.primerApellido, // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access motherName: register.segundoApellido, // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access name: register.nombres, // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access gender: (_a = genderISOConverter.get(register.sexo)) !== null && _a !== void 0 ? _a : '', // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access birthday: register.fechaNacimiento.replace(birthdayFormatFromRenapo, birthday), // eslint-disable-next-line @typescript-eslint/await-thenable birthState: await curp.getIsoState(), // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access statusCurp: register.statusCurp, // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access nationality: register.nacionalidad, // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access probatoryDocument: register.docProbatorio, // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access pdf: register.parametro, probatoryDocumentData: Object.assign({}, register.datosDocProbatorio), }; } async provide(curpId) { // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access const captchaSolution = await this.captchaSolver.solve('6LdJssgUAAAAAKkVr-Aj-xP5QQzclPeGZmhRwXeY', 'https://www.gob.mx/curp'); // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access const renapoResponse = await axios_1.default('https://www.gob.mx/v1/renapoCURP/consulta', { headers: { 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:95.0) Gecko/20100101 Firefox/95.0', Accept: 'application/json', 'Accept-Language': 'en-US,en;q=0.5', 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept', 'X-Requested-With': 'XMLHttpRequest', 'Sec-Fetch-Dest': 'empty', 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Site': 'same-origin', Pragma: 'no-cache', 'Cache-Control': 'no-cache', referer: 'https://www.gob.mx/', }, data: JSON.stringify({ curp: curpId.value, tipoBusqueda: 'curp', ip: '127.0.0.1', response: captchaSolution, }), method: 'POST', } // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-return ).then(res => res.data); // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access this.ensure(renapoResponse.codigo); // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access if (renapoResponse.registros == undefined) { return { curp: curpId.value, error: 'CURP not found', }; } return GovernmentScrapper.parseResponse(renapoResponse, curpId); } // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types ensure(code) { switch (code) { case '01': return; case '02': case '03': case '04': case '05': case '07': throw new Error('Invalid 07'); case '11': case '13': throw new Error(''); case '180001': case '190001': return; default: throw new Error(''); } } } exports.GovernmentScrapper = GovernmentScrapper;