CONSULTA DIRECTA DE RUC, SIN CAPTCHA Y SIN ESTAR INGRESANDO A LA WEB DE LA SUNAT

Después de tantos intentos pude solucionar los problemas del captcha, hay que ser perseverantes y no caer en el intento, la innovación es importante para los programadores, solo es investigación, dedicación y mucho tiempo, así construimos nuevos conocimientos y que sirva de base para los que están empezando.

Las consultas de ruc vía Sunat, se complico desde que habilitaron el “famoso” captcha, antes la consulta solo era utilizando el siguiente url:

http://www.sunat.gob.pe/w/wapS01Alias?ruc=xRuc

Donde xRuc es el número de ruc a consultar, se recibía el parámetro vía post, y se obtenía el archivo XML, a partir de este archivo, se jalaba todos los datos del ruc. Ahora la cosa cambio, el url actual es:

http://www.sunat.gob.pe/cl-ti-itmrconsruc/jcrS00Alias

busruc

Aquí les dejo la secuencia para evitar este paso.

1.- Primero utiliza un software OCR, que convierta la imagen del captcha a un texto, yo utilizo el Tesseract open source de mayor precisión, mejorando su algoritmo leptónico, la traducción es buena. Busca en la web el Tesseract-OCR. los descargas y lo instalas.

Pero si quieres mejorar el algoritmo descarga desde:

leptonica

Encuentras para varios lenguajes el que utilizo es de visual studio

2.- Ahora como bajo la imagen del captcha desde la página de la Sunat.

Escribe exactamente igual al siguiente URL

captcha

3.- Descarga la imagen, dependiendo del lenguaje de programación que utilizas usa el comando que descarga archivos desde la web.  En csharp utilizo el DownloadFile.

Nota.  Los tiempos de proceso influyen en la consulta, has que tu código sea lo más rápido posible.

Para que el proceso se mas rápido yo utilizo APIS, ej. En csharp

[SXC import DLL

4.- Una vez que descargas la imagen, lo conviertes a texto, cómo?, ejecutando el tesseract, desde la línea de comandos, suponga que la imagen lo descargaste con sunat.jpg

consola

La ejecución del tesseract crea el archivo leer01.txt, con el siguiente contenido

texto

No olvides trabajar en la ruta donde están tus archivos. Esta instrucción crea el archivo leer01.txt, archivo plano con el contenido QFWG, el captcha traducido en texto. Para hacer este proceso supongo que en tu programa no estarás pensando salir a la consola del cmd para ejecutar el tessaract y……..…, se pierde tiempo, yo utilizo:

  • En csharp

Process proc = new Process();

  • En excel

eje.Run “d:\excelruc\tesseract.exe d:\excelruc\sunat.jpg d:\excelruc\captcha -psm 7”, 0, True

  • En visual Basic

Dim ejecutar As Object
ejecutar = Microsoft.VisualBasic.CreateObject(“WScript.Shell”)
ejecutar.Run(“d:\busruc\tesseract.exe d:\busruc\sunat.jpg d:\busruc\captcha -psm 7”, 0, True)

  • En visual fox

baja = CreateObject………………
baja.Run(“e:\ocr\tesseract.exe e:\ocr\captcha.gif e:\ocr\captcha -psm 7”, 2, .T.)
DECLARE “urlmon”…………………

Nota: solo se requieren dos archivos para ejecutar el tesseract, estos archivos deben estar en la ruta de tu sistema.

primero

Los archivos son el eng.traineddata y el tesseract, que lo puedes copiar de la carpeta donde instalaste el software OCR.

segundo

5.- Ahora el texto traducido lo obtienes en una variable.

string dame = “”;
dame = leecaptcha();

La función leecaptcha, recoge el contenido del archivo leer01.txt, utiliza una instrucción que lea un archivo texto, y lea el contenido de la línea, en csharp lo trabajo así

FileStream stream =

Y lo capturo con la siguiente instrucción.

string resultado = “”;
resultado = reader1.ReadLine().Trim();

La función devuelve la variable resultado

6.-  Ahora para ejecutar el URL de la consulta utiliza.

http://www.sunat.gob.pe/cl-ti-itmrconsruc/jcrS00Alias?accion=consPorRuc&nroRuc=xruc &codigo=dame &tipdoc=1

Donde xruc es el número de ruc a consultar y dame es el captcha traducido.

7.- Consume la web, descargando el URL en un archivo, yo utilizo el DownloadFile

Downloadxml………………………………………

8.- Bingo, ya tienes el XML en archivo plano, recorre con un bucle el txt y captura en variables los datos del número de ruc.

Ej. Para capturar la razón social, código en csharp

linea = reader.ReadLine();

while (linea != null) // mientras exista contenido
{
…………….
…………….
linea = reader.ReadLine();
ini = linea.Contains(“Número de RUC:”);
if (ini == true)
{
linea = reader.ReadLine().TrimEnd().TrimStart();
int pi = “<td  class=’bg’ colspan=3>”.Length + 14;
int pf = linea.Trim().Length – pi;
rs = linea.Substring(pi, pf – 5);
}

Que tal, “el famoso captcha“ ya es vulnerable, para los programadores no hay nada difícil, para todos los que desarrollamos software esta forma de consumir web nos ayudara a muchos, para registrar o consultar clientes, proveedores y otros procesos.

El software lo tengo desarrollado en:

  • Excel (vba)
  • Visual fox
  • Visual Basic
  • Csharp

Y bueno con esto, para los que también desarrollamos sobre web, php, aspx, java y otros lenguajes, se hace más sencillo, pero aquí está la base.

Acá les muestro un fragmento de código, de algunos procedimientos en visual basic, para la muestra un botón.

codigo

Y acá les dejo consulta ruc en vídeo.

Consulta en Excel con VBA

excelrucsunat

Consulta en Visual Fox

rucsunatfox

Consulta en Visual Basic

rucsunatvb

Consulta con Csharp

rucsunatcs

Bueno a pedido de los seguidores, estas son las nuevas direcciones, que cambio la Sunat

Consulta RUC

http://e-consultaruc.sunat.gob.pe/cl-ti-itmrconsruc/jcrS00Alias

Dirección para bajar la imagen del Captcha

http://e-consultaruc.sunat.gob.pe/cl-ti-itmrconsruc/captcha?accion=image

Sigue la secuencia de los pasos, con estas nuevas direcciones

Soy analista programador con más de 15 años de experiencia, desarrollo software a medida, tengo una mala experiencia de compartir código en la web, porque los usuarios que descargan se los hacen como si fuera su propiedad intelectual y hasta lo venden.

Consultas.

Wilbert Vilcahuaman Mamani
Analista programador de sistemas
Cel. 984716936
email: wilbert.vil@gmail.com