Consulta CPF na receita federal.

274 views
Skip to first unread message

J04QU1M 50RR14

unread,
Dec 22, 2014, 12:32:12 PM12/22/14
to ce...@googlegroups.com
Boa tarde, Galera!!!

Me deparei com um missão quase impossivél pelo menos pra mim que sou iniciante em java, é logo ganhei está bomba de tarefa, tenho que desenvolver um serviço para o projeto que participo e  que seria um modo de interagir com o site da receita como se fosse um webservice e acessar o site da receita, pegar a imagem do captcha, gerar um formulário com a imagem do captcha e os campos cpf e digitos do captcha, validar o cpf, pra depois fazer a consulta no site da receita e exibir o resultado. 

A principio eu consigo obter a imagen captha do site, mas não consigo ir mas adiante me sinto de mãos atadas, alguém ja teve que fazer esse tipo de consulta, podem me ajudar ou até mesmo me instruir.


Grato,



Joaquim de castro


Analista de Sistemas jr
Indra Company

Danilo Reis de Vasconcelos

unread,
Dec 22, 2014, 12:41:02 PM12/22/14
to ce...@googlegroups.com
Caro Joaquim,

Em principio voce tem que processar o retorno de sua requisição http como se fosse um XML dar um parser procurando os campos que lhe interessam , extraindo esta informação e utilizando em sua aplicação.
Voce pode  utilizar a classes URL e setar as propriedades do seu request . No stack overflow tem um exemplo de como chamar um URL com java
ai depois voce tem que tratar a resposta como um XML e extrair as informacões que voce necessita. Enfim voce vai ter que fazer classes que simulem a navegação que voce humano faria para acessar o site da receita. Dar trabalho, é chato de fazer mas não é impossível.

Boa sorte!

:)
Danilo Reis
--
Você recebeu essa mensagem porque está inscrito no grupo "CEJUG" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para cejug+un...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para ce...@googlegroups.com.
Acesse esse grupo em http://groups.google.com/group/cejug.
Para mais opções, acesse https://groups.google.com/d/optout.

Hildeberto Mendonça

unread,
Dec 22, 2014, 5:39:46 PM12/22/14
to CEJUG Discussão
Existem muitos serviços na web que podem lhe ajudar a fazer essa validação. Por exemplo: http://knu.com.br. A receita também oferece web services se o seu cliente for lá se credenciar formalmente. Se você quiser que tudo ocorra automaticamente, dificilmente vc conseguirá burlar o captcha.
--
Hildeberto Mendonça, Ph.D
Blog: http://www.hildeberto.com
Twitter: https://twitter.com/htmfilho

Paulo Amora

unread,
Dec 22, 2014, 10:45:40 PM12/22/14
to ce...@googlegroups.com

Pelo que eu entendi ele quer algo como o do jdownloader, q salva o captcha, exibe pro usuário para que ele digite e coloca o digitado no formulário. Como se fosse acessar o site da receita sem estar de fato acessando.

J04QU1M 50RR14

unread,
Dec 23, 2014, 8:22:39 AM12/23/14
to ce...@googlegroups.com
Bom dia, daniloreis10


Eu verifiquei no
stack overflow o exemploConsegui obter um resposta, agora pode me auxiliar ou me indica um exemplo de como eu posso manipular a resposta do XML e extrair as informacões que eu necessita.

Vitor Guilherme

unread,
Dec 23, 2014, 9:06:32 AM12/23/14
to ce...@googlegroups.com
Bom dia pessoal,

Estou disponibilizando um link temporário para vocês verem se é isso que precisam, vi esse tópico aberto e fui estudar uma forma de fazer e consegui dessa forma.


Qualquer duvida estou a disposição.

Vitor



--

Danilo Reis de Vasconcelos

unread,
Dec 23, 2014, 9:07:16 AM12/23/14
to ce...@googlegroups.com
Bom dia Joaquim,

Vice deve utilizar algum parser XML, já utilizei mas não recordo de cabeça! Pesquisando no google o pessoal indica este 
Mas nunca utilizei, mas acredito não ser muito complicado utilizar.

Boa sorte!

Danilo Reis

J04QU1M 50RR14

unread,
Dec 23, 2014, 12:04:02 PM12/23/14
to ce...@googlegroups.com
Vitor Guilherme, tentei acessar este link que forneceu na pelo jeito ele esta fora.


Em segunda-feira, 22 de dezembro de 2014 15h32min12s UTC-2, J04QU1M 50RR14 escreveu:

Vitor Guilherme

unread,
Dec 23, 2014, 12:28:09 PM12/23/14
to ce...@googlegroups.com

Realmente, desculpe

Tenta agora, acabei de subir e testar.

http://vittao.ddns.net:8081/TesteCnpjReceita/

--

J04QU1M 50RR14

unread,
Dec 23, 2014, 1:03:06 PM12/23/14
to ce...@googlegroups.com
Vitor Guilherme, Continua fora ainda!!!    :(

Vitor Guilherme

unread,
Dec 23, 2014, 1:07:45 PM12/23/14
to ce...@googlegroups.com
Estranho, eu estou acessando de outro lugar normal, da um ping nesse dns fazendo um favor pra ver se encontra dai.

Alguém mais não está conseguindo acessar?

Imagem inline 2

Marcelo S. Macorin

unread,
Dec 23, 2014, 1:07:52 PM12/23/14
to ce...@googlegroups.com
Aqui não esta...

Felipe Tavares

unread,
Dec 23, 2014, 1:10:52 PM12/23/14
to ce...@googlegroups.com
Vitor consegui acessar aqui está funcionando de boa, exceto quando o usuário erra o captcha tem que tratar só isso =)
Atenciosamente,
Felipe Tavares - Desenvolvedor WEB
(85) 87794004 | 97667122 | 32131724

Vitor Guilherme

unread,
Dec 23, 2014, 1:14:52 PM12/23/14
to ce...@googlegroups.com
kkkkk valeu Felipe

Isso é verdade, eu ainda não fiz muita coisa, o código ainda está bem sujo rsss.

Valeu

J04QU1M 50RR14

unread,
Dec 23, 2014, 1:20:11 PM12/23/14
to ce...@googlegroups.com
Dever por que estou no dominio da empresa, mas preciso de uma aplicação com este intuito pode me auxilar?

Clairton Carneiro Luz

unread,
Dec 23, 2014, 1:31:18 PM12/23/14
to ce...@googlegroups.com

--

Att. Clairton Luz - Jr. Java Dev.

Blog: https://clairtondev.wordpress.comGithub: https://github.com/clairtonluz

Vitor Guilherme

unread,
Dec 23, 2014, 1:40:37 PM12/23/14
to ce...@googlegroups.com
Posso sim Joaquim, ainda falta eu ajustar algumas coisinhas, mais eu só consegui devido a esse tópico a baixo, vou tentar explicar meio correndo aqui mais se nao ficar claro a noite posso postar melhor.

http://www.guj.com.br/java/253715-automatizar-consulta-de-cnpj/2

Dei uma estudada nessa biblioteca HttpClient e segui os passos explicados lá.

Separei em  2 métodos, um que da o Get na url


então seguindo os passos do exemlo eu pego o retorno e gero a imagem salvando em png.

InputStream instream = entidade.getContent();
 
BufferedImage b = null;

 b = ImageIO.read(instream);

 ImageIO.write(b, "PNG", new File(realPath + "/captcha/" + "captcha" + mili1 + ".png"));


então chamo esse método no value da imagem que ao carregar na gera o get e salva a imagem para mostrar.

depois no segundo método tive que encontrar os parâmetros ja que o exemplo era para o CNPJ que na verdade é o mesmo processo:



        // Criando o método de acesso
        HttpPost requisição3 = new HttpPost("http://www.receita.fazenda.gov.br/Aplicacoes/ATCTA/CPF/ConsultaPublicaExibir.asp");

        // Lista de parâmetros
        List<NameValuePair> nameValuePairs = new ArrayList<>();

        // Adicionando os parâmetros
        nameValuePairs.add(new BasicNameValuePair("txtCPF", cpf));
        nameValuePairs.add(new BasicNameValuePair("txtTexto_captcha_serpro_gov_br", captcha1));
        nameValuePairs.add(new BasicNameValuePair("Enviar", "Consultar"));

        // Encapsulando
        UrlEncodedFormEntity urlEncodedFormEntity = null;
        try {
            // Pelo fonte da página da receita o sistema adequado de parâmetros é em UTF-8
            urlEncodedFormEntity = new UrlEncodedFormEntity(nameValuePairs, "ISO-8859-1");
        } catch (UnsupportedEncodingException exception) {
             System.out.println("UnsupportedEncodingException requisição: " + exception.getMessage());
        }

        // A adição dos parâmetros
        requisição3.setEntity(urlEncodedFormEntity);
        try {
            // Resposta
            resposta = null;
            resposta = cliente.execute(requisição3, contexto);
        } catch (IOException exception) {
            System.out.println("IOException requisição3: " + exception.getMessage());
        }

        // Buscando a entidade
        entidade = resposta.getEntity();

        // Pego o código fonte e jogo na string
        try {
            html = EntityUtils.toString(entidade);
        } catch (IOException | ParseException exception) {
              System.out.println("IOException String HTML: " + exception.getMessage());
        }

daqui pra gente é so varrer esse HTML e pegar o retorno.


  //verifico se contem os valores de nome

            if (conteudo.contains("Nome da Pessoa Física:")) {
                int index = 0;
                //Pego a posição incial dos valores fixos
                int pos1 = conteudo.indexOf("No do CPF:", index);                
                index = pos1;
                int pos2 = conteudo.indexOf("Nome da Pessoa Física:", index);
                index = pos2;
                int pos3 = conteudo.indexOf("Situação Cadastral:", index);
                
                //Copia o valor de acordo com as posições identificadas somado a quantidade de caracteres delas.
                cpf = conteudo.substring(pos1 + 10, (pos2 - 1));
                nome = conteudo.substring(pos2 + 22, (pos3 - 1));



Desculpe se não ficou claro, posso refazer com mais calma apos o expediente.

Att,

Vitor

J04QU1M 50RR14

unread,
Dec 23, 2014, 2:04:16 PM12/23/14
to ce...@googlegroups.com
Vitor, vou tentar aqui fazer com essa narração sua qualquer duvida eu retorno, muito Obrigado, BOM NATAL a TODOS !!!!

J04QU1M 50RR14

unread,
Dec 29, 2014, 12:47:47 PM12/29/14
to ce...@googlegroups.com
Olá Vitor!!


Segui suas instruções confesso que fiquei perdido com relação a biblioteca HttpClient localizei uma porem ao importar a o metodo não tive exeto pode me auxuliar ainda. e os metodos como foram desenvolvidos.  Enfim estou meio perdido!!!!


Grato Joaquim!


Em terça-feira, 23 de dezembro de 2014 16h40min37s UTC-2, Vitor Guilherme escreveu:
Reply all
Reply to author
Forward
0 new messages