Inquiridor
AJUDA COM CONSULTA CPF RECEITA FEDERAL

Discussão Geral
-
Pessoal, gostaria de uma ajuda ao tentar rodar um exemplo que tinha guardado aqui vi que o mesmo nao esta funcionando e descobrir que o site da receita federal atualizou assim deixando de funcionar, ao digitar o cpf ele buscava o nome e a situacao, gostaria da ajuda de voces pois estou precisando muito disso e em todos os lugares que estou a pesquisar estao cobrando...
LINK PARA DOWLOAD DO EXEMPLO QUE EU TINHA AQUI...
http://1drv.ms/1I4CF89
VERIFIQUEI QUE A PAGINA QUE GERAVA A IMAGEM MUDOU PARA
http://www.receita.fazenda.gov.br/Aplicacoes/ATCTA/CPF/captcha/gerarCaptcha.asp
- Tipo Alterado Eduardo.RomeroModerator terça-feira, 5 de maio de 2015 14:39
Todas as Respostas
-
-
Mas o que vc quer fazer? Gerar uma consulta automatica de CPF? Até onde eu sei a Receita Federal nao permite isso... por isso mesmo é gerado um captcha, que serve justamente a impedir um uso automatico do site.
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Editado William John Adam TrindadeModerator terça-feira, 22 de novembro de 2016 20:08
-
-
-
-
-
-
-
-
-
oi amigo eu olhei seu projeto o erro esta porque o site atualizo e agora nao tem o captcha foi removido e agora foi colocado dois campos o do cpf e outro q e a data de nacimento de uma olha no site pra vc ver como esta agora
site = http://www.receita.fazenda.gov.br/aplicacoes/atcta/cpf/ConsultaPublica.asp
-
cara estou com o mesmo problema
olha as mudanças
######################------Padrão Antigo--------######################
link
http://www.receita.fazenda.gov.br/aplicacoes/atcta/cpf/ConsultaPublica.asp
capacha
http://www.receita.fazenda.gov.br/scripts/srf/intercepta/captcha.aspx?opt=image
param 01
"txtCPF=" & CCPF & "&idLetra=" & CCaptcha & "&Enviar=Consultar"
######################------Novo Padrão--------######################
link
https://www.receita.fazenda.gov.br/Aplicacoes/SSL/ATCTA/CPF/ConsultaPublica.asp
capacha
https://www.receita.fazenda.gov.br/Aplicacoes/SSL/ATCTA/CPF/captcha/gerarCaptcha.asp?opt=image
param 01
"txtCPF=" & CCPF & "&idLetra=" & CCaptcha & "&Enviar=Consultar"
aqui os novos parametros
txtCPF
txtDataNascimento
txtTexto_captcha_serpro_gov_br = pode ser o novo
-
Cesário, eu tentei realizar as alterações que você informou, mas ainda não estou conseguindo obter o acesso para consulta. o Response não me retorna o website correto.
O código q uso é o seguinte:
Dim Captcha As String Dim DataNascimento As String Dim byteArray As Byte() Dim request As HttpWebRequest Dim dataStream As Stream Dim response As HttpWebResponse Dim reader As StreamReader Dim responseFromServer As String Captcha = Box_Captcha.Text DataNascimento = Box_DataNascimento.Text byteArray = Encoding.UTF8.GetBytes("txtCPF=" & CPF & "&txtDataNascimento=" & DataNascimento & "&txtTexto_captcha_serpro_gov_br=" & Captcha & "&Enviar=Consultar") request = CType(HttpWebRequest.Create("http://www.receita.fazenda.gov.br/Aplicacoes/SSL/ATCTA/CPF/ConsultaPublica.asp"), HttpWebRequest) request.ProtocolVersion = HttpVersion.Version10 request.ContentType = "application/x-www-form-urlencoded" request.CookieContainer = PackCookies request.Method = "POST" request.ContentLength = byteArray.Length dataStream = request.GetRequestStream dataStream.Write(byteArray, 0, byteArray.Length) response = CType(request.GetResponse, HttpWebResponse) dataStream = response.GetResponseStream reader = New StreamReader(dataStream, Encoding.GetEncoding("ISO-8859-1")) responseFromServer = reader.ReadToEnd reader.Close() dataStream.Close() response.Close()
Também (sem saber explicar o motivo) para realizar a consulta de CNPJ com um algorítimo similar, eu tive de colocar o request e o response dentro de um For, para executar o mesmo procedimento duas vezes. Desta maneira o CNPJ retorna correto, mas o CPF não.
-
-
-
-
-
-
-
Boa tarde Mariano.
Eu estou usando o seguinte código:
Dim Captcha As String Dim DataNascimento As String Dim byteArray As Byte() Dim request As HttpWebRequest Dim dataStream As Stream Dim response As HttpWebResponse Dim reader As StreamReader Dim responseFromServer As String Captcha = Box_Captcha.Text DataNascimento = Box_DataNascimento.Text byteArray = Encoding.UTF8.GetBytes("txtCPF=" & CPF & "&txtDataNascimento=" & DataNascimento & "&txtTexto_captcha_serpro_gov_br=" & Captcha & "&Enviar=Consultar") request = CType(HttpWebRequest.Create("http://www.receita.fazenda.gov.br/Aplicacoes/SSL/ATCTA/CPF/ConsultaPublica.asp"), HttpWebRequest) request.ProtocolVersion = HttpVersion.Version10 request.ContentType = "application/x-www-form-urlencoded" request.CookieContainer = PackCookies request.Method = "POST" request.ContentLength = byteArray.Length dataStream = request.GetRequestStream dataStream.Write(byteArray, 0, byteArray.Length) response = CType(request.GetResponse, HttpWebResponse) dataStream = response.GetResponseStream reader = New StreamReader(dataStream, Encoding.GetEncoding("ISO-8859-1")) responseFromServer = reader.ReadToEnd reader.Close() dataStream.Close() response.Close()
Para consulta de CNPJ eu consegui com um código similar, mas para consulta de CPF não estou conseguindo!
-
-
Dim request As HttpWebRequest Dim response As HttpWebResponse Dim stream As IO.Stream request = CType(HttpWebRequest.Create("https://www.receita.fazenda.gov.br/Aplicacoes/SSL/ATCTA/CPF/captcha/gerarCaptcha.asp?opt=image"), HttpWebRequest) request.CookieContainer = New CookieContainer request.ContentType = "application/x-www-form-urlencoded" request.KeepAlive = True request.ProtocolVersion = HttpVersion.Version10 response = CType(request.GetResponse(), HttpWebResponse) PackCookies = New CookieContainer PackCookies.Add(response.Cookies) stream = response.GetResponseStream() PictureBox_Captcha.BackgroundImage = Image.FromStream(stream)
Esse é o código q uso para buscar o Captcha do CPF.
-
-
-
-
-
-
Boa noite, Giovanni.
Infelizmente, como eu disse antes, cada vez que mexem no site da receita, algo para de funcionar.
Verifique o site atual da receita: https://www.receita.fazenda.gov.br/Aplicacoes/SSL/ATCTA/CPF/ConsultaSituacao/ConsultaPublica.asp
NÃO HÁ MAIS CAPTHA.
Minha solução não funciona mais.
Preciso tentar de outra maneira.
-
Boa noite, Mariano.
Puuuuuutz, cara. Eu nem havia me tocado dessa última atualização do site (há tempos não mexo com essa parte do código). Será que há uma maneira de realizar essa consulta, com esse novo reCaptcha?
Vou ver se consigo algo, também. Mas agradeço se puder compartilhar alguma solução que venha a encontrar.
-
De todo modo, segue meu código.
Na verdade também encontrei na internet já desatualizado e adaptei.
Quem sabe você consiga adaptá-lo também.
Imports System.Diagnostics
Imports System.Text.RegularExpressions
Imports System.Windows.Forms
Partial Public Class Form1
Inherits Form
Private CPF As String
Private NOME As String
Private DATA_DE_NASCIMENTO As String
Private SITUACAO_CADASTRAL As String
Private DATA_DA_INSCRICAO As String
Private DIGITO_VERIFICADOR As String
Public Sub New()
InitializeComponent()
End Sub
Private Sub webBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles webBrowser1.DocumentCompleted
Try
If e.Url.AbsoluteUri.Contains("https://www.receita.fazenda.gov.br/Aplicacoes/SSL/ATCTA/CPF/ConsultaSituacao/ConsultaPublica.asp") Then
Dim w2 As mshtml.HTMLWindow2 = DirectCast(webBrowser1.Document.Window.DomWindow, mshtml.HTMLWindow2)
w2.execScript("var ctrlRange = document.body.createControlRange();ctrlRange.add(document.getElementById('imgCaptcha'));ctrlRange.execCommand('Copy');", "javascript")
pictureBox1.Image = Clipboard.GetImage()
Clipboard.Clear()
maskedTextBox1.Enabled = True
maskedTextBox2.Enabled = True
textBox1.Enabled = True
button1.Enabled = True
End If
If e.Url.AbsoluteUri.Contains("https://www.receita.fazenda.gov.br/Aplicacoes/SSL/ATCTA/CPF/ConsultaSituacao/ConsultaPublicaExibir.asp") Then
Dim SplitString As String()
Dim lines As String() = Regex.Split(webBrowser1.Document.GetElementById("content-core").OuterText, vbCr & vbLf)
For Each line As String In lines
If line.Contains("No do CPF:") Then
SplitString = line.Split(":"c)
CPF = SplitString(1).Replace(" ", "")
End If
If line.Contains("Nome: ") Then
SplitString = line.Split(":"c)
NOME = SplitString(1).Remove(SplitString(1).Length - 1).Remove(0, 1)
End If
If line.Contains("Data de Nascimento: ") Then
SplitString = line.Split(":"c)
DATA_DE_NASCIMENTO = SplitString(1).Remove(SplitString(1).Length - 1).Remove(0, 1)
End If
If line.Contains("Situação Cadastral: ") Then
SplitString = line.Split(":"c)
SITUACAO_CADASTRAL = SplitString(1).Remove(SplitString(1).Length - 1).Remove(0, 1)
End If
If line.Contains("Data da Inscrição: ") Then
SplitString = line.Split(":"c)
DATA_DA_INSCRICAO = SplitString(1).Remove(SplitString(1).Length - 1).Remove(0, 1)
End If
If line.Contains("Digito Verificador: ") Then
SplitString = line.Split(":"c)
DIGITO_VERIFICADOR = SplitString(1).Remove(SplitString(1).Length - 1).Remove(0, 1)
End If
Next
textBox2.Text = CPF
textBox3.Text = NOME
textBox4.Text = DATA_DE_NASCIMENTO
textBox5.Text = SITUACAO_CADASTRAL
textBox6.Text = DATA_DA_INSCRICAO
textBox7.Text = DIGITO_VERIFICADOR
maskedTextBox1.[Select]()
End If
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
Private Sub button1_Click(sender As Object, e As EventArgs) Handles button1.Click
webBrowser1.Document.GetElementById("txtCPF").InnerText = maskedTextBox1.Text
webBrowser1.Document.GetElementById("txtDataNascimento").InnerText = maskedTextBox2.Text
webBrowser1.Document.GetElementById("id_submit").InvokeMember("click")
webBrowser1.Document.GetElementById("txtTexto_captcha_serpro_gov_br").InnerText = textBox1.Text
webBrowser1.Document.GetElementById("btnAR2").InvokeMember("click")
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
webBrowser1.Navigate("http://www.receita.fazenda.gov.br/Aplicacoes/ATCTA/cpf/ConsultaPublica.asp")
End Sub
Private Sub webBrowser1_Navigating(sender As Object, e As WebBrowserNavigatingEventArgs) Handles webBrowser1.Navigating
maskedTextBox1.Enabled = False
maskedTextBox2.Enabled = False
textBox1.Enabled = False
button1.Enabled = False
pictureBox1.Image = Nothing
End Sub
Private Sub linkLabel1_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles linkLabel1.LinkClicked
Process.Start("https://www.facebook.com/krazybeat")
End Sub
Private isFirstChange As Boolean = True
Private Sub textBox1_TextChanged(sender As Object, e As EventArgs) Handles textBox1.TextAlignChanged
If isFirstChange Then
isFirstChange = False
textBox1.Text = Me.textBox1.Text.ToUpper()
textBox1.SelectionStart = Me.textBox1.Text.Length
isFirstChange = True
End If
End Sub
End Class -
Boa noite Giovanni.
Caso te interesse, o exemplo abaixo em html, funciona muito bem, inclusive utilizo em um site.
Basta abrir com o visual studio e deixar a data de nascimento = 11/11/1111
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset=utf-8 />
<title>Exemplo do tutorial Como Buscar Nomes de Pessoas Físicas a Partir de CPFs Usando a API do BipBop</title>
<style>
input {
font-size: 15px;
width: 300px;
}
</style>
<script src="//code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.13.4/jquery.mask.js"></script>
<script src="//irql.bipbop.com.br/js/jquery.bipbop.min.js"></script>
</head>
<body>
<form>
<p>
<input type="text" name="cpf" id="cpf" placeholder="CPF"></input>
</p>
<p>
<input type="text" name="nascimento" id="nascimento" placeholder="Nascimento dd/mm/YYYY"></input>
</p>
<p>
<input type="text" name="nome" id="nome" placeholder="Nome" disabled="disabled"></input>
</p>
<p id="status"></p>
</form>
<script>
$(function(){
function validCPF (cpf) {
return cpf.match(/^\d{3}\.?\d{3}\.?\d{3}\-?\d{2}$/);
}
$("#nascimento").mask("00/00/0000");
$("#cpf").mask("000.000.000-00");
$('#cpf, #nascimento').on('input', function(){
var cpf = $("#cpf").val(),
nascimento = $("#nascimento").val();
if (validCPF(cpf) && /^\d{2}\/\d{2}\/\d{4}$/.test(nascimento)) {
$().bipbop("SELECT FROM 'BIPBOPJS'.'CPFCNPJ'", null, {
data: {
documento: cpf,
nascimento: nascimento
},
success: function(data) {
var nome = $(data).find("body nome").text();
var exception = $(data).find("header exception").text();
if (exception) {
exception = exception.replace(/, t/, '. T');
$('#status').text(exception);
} else {
$("#nome").val(nome);
}
}
});
}
});
});
</script>
</body>
</html> -
-
-
-
-
-
Boa noite.
A quem possa interessar, segue link funcionando.
A data de nascimento, embora obrigatória, pode ser 11/11/1111.
A deficiência é não retornar erros em caso de cpf inválido ou não existente.
http://www.escolassantanna.com.br/web/prototipo/
MARIANO1776
-