-
Total de itens
80 -
Registro em
-
Última visita
-
Dias vencidos
2
Massa191 venceu o dia em Fevereiro 25 2018
Teve o conteúdo mais curtido
Reputação
18 Levemente BomSobre Massa191
- Data de Nascimento 07/20/1968
Informações Pessoais
-
Sexo
Masculino
Contato
-
Skype
marcos.peli
- Github
-
Facebook
https://www.facebook.com/pelimarcos
Últimos Visitantes
-
Massa191 alterou sua foto pessoal
-
Atualizado hoje 26/03/2020 Funcionando as consultas de CPF e CNPJ para captcha Sonoro enquanto a receita as disponibilizar em paralelo ao recaptcha google agradeçam ao COVID19 , que motivou-me a encontrar uma solução para viabilizar a utilização desta ferramenta em vossos e-comerce. Abraço a todos https://github.com/Massa191/Consultas_CNPJ_CPF_Receita_Federal
-
Consultar dados de um CNPJ direto do site da Receita
Massa191 respondeu ao tópico de adrigoli em PHP
Atualizado hoje 26/03/2020 Funcionando as consultas de CPF e CNPJ para captcha Sonoro enquanto a receita as disponibilizar em paralelo ao recaptcha google agradeçam ao COVID19 , que motivou-me a encontrar uma solução para viabilizar a utilização desta ferramenta em vossos e-comerce. Abraço a todos https://github.com/Massa191/Consultas_CNPJ_CPF_Receita_Federal -
Obter Nome/Captcha por Consulta na Receita Federal via PHP/CURL
Massa191 respondeu ao tópico de Vinoli em PHP
Atualizado hoje 26/03/2020 Funcionando as consultas de CPF e CNPJ para captcha Sonoro enquanto a receita as disponibilizar em paralelo ao recaptcha google agradeçam ao COVID19 , que motivou-me a encontrar uma solução para viabilizar a utilização desta ferramenta em vossos e-comerce. Abraço a todos https://github.com/Massa191/Consultas_CNPJ_CPF_Receita_Federal -
Obter Nome/Captcha por Consulta na Receita Federal via PHP/CURL
Massa191 respondeu ao tópico de Vinoli em PHP
Pessoal Acabo de atualizar o GitHub Oficial do Projeto. https://github.com/Massa191/Consultas_CNPJ_CPF_Receita_Federal Consultas de CPF e CNPJ funcionando. Os estudos e testes que realizei até o momento a respeito do reCaptcha do Google foram infrutíferos, devido a validação de domínio realizada pelos javascripts do google, Portanto, aproveitem enquanto a Fazenda mantem os links para consulta via captcha sonoro ativos. Abraços a todos Marcos Peli -
Obter Nome/Captcha por Consulta na Receita Federal via PHP/CURL
Massa191 respondeu ao tópico de Vinoli em PHP
Muito Bem @CriS 4devs Estou implementando esta solução no repositório Oficial em GitHub, afim de promover mais um "suspiro" de vida para estes scripts. Mas saibam que esta solução é temporária, e quando a receita resolver atualizar a consulta por captcha sonoro, eliminando estes links defasados para links atualizados com o reCaptcha do Google, o projeto muito provavelmente morrerá. Tenho estudado formas de espelhar o recaptcha, e acho pouco provável encontrar uma solução definitiva viável em função da validação de domínio realizadas por eles. Abraço a Todos ! Marcos Peli -
vitor cardoso começou a seguir Massa191
-
Obter Nome/Captcha por Consulta na Receita Federal via PHP/CURL
Massa191 respondeu ao tópico de Vinoli em PHP
Olá Pessoal Nos últimas semanas os links de consulta da receita tem passado por instabilidades. Não sei se estão fazendo testes com novas alterações nas consultas, se é problema de rota, ou alguma outra coisa. De fato a consulta de CPF mesmo quando realizada diretamente no site da receita através do navegador passou a responder "serviço indisponível, tente mais tarde" Nos últimos 5 dias porém ,está bem estável, e retornando os dados de CPF e CNPJ corretamente Infelizmente este é o preço que se paga ao utilizar serviços públicos "gratuitos". Abraço a todos -
Consultar dados de um CNPJ direto do site da Receita
Massa191 respondeu ao tópico de adrigoli em PHP
Novas atualizações e otimizações 01-06-2017 Scripts CPF e CNPJ funcionando 100% https://github.com/Massa191/Consultas_CNPJ_CPF_Receita_Federal Abraços -
Obter Nome/Captcha por Consulta na Receita Federal via PHP/CURL
Massa191 respondeu ao tópico de Vinoli em PHP
Novas atualizações e otimizações 01-06-2017 Scripts CPF e CNPJ funcionando 100% https://github.com/Massa191/Consultas_CNPJ_CPF_Receita_Federal Abraços -
Obter Nome/Captcha por Consulta na Receita Federal via PHP/CURL
Massa191 respondeu ao tópico de Vinoli em PHP
Script atualizados em GitHub 30/05/2017 https://github.com/Massa191/Consultas_CNPJ_CPF_Receita_Federal -
Consultar dados de um CNPJ direto do site da Receita
Massa191 respondeu ao tópico de adrigoli em PHP
Olá Pessoal Scripts atualizados e funcionando 100% https://github.com/Massa191/Consultas_CNPJ_CPF_Receita_Federal Abraços Marcos Peli -
Obter Nome/Captcha por Consulta na Receita Federal via PHP/CURL
Massa191 respondeu ao tópico de Vinoli em PHP
Mas isso não impediria a imagem de ser mostrada, simplesmente está vazio porque o curl não conseguiu se conectar a receita No Servidor do cliente, deve estar faltando certificado instalado para que o Curl consiga utiliza-lo na conexão. Só pode ser isso. -
Obter Nome/Captcha por Consulta na Receita Federal via PHP/CURL
Massa191 respondeu ao tópico de Vinoli em PHP
Pelo que você. está falando, o problema é no servidor do cliente. Dê uma lida geral em todos os posts deste tópico, existem alguns problemas semelhantes já relatados, e que podem ser resolvidos com a alteração de alguns parâmetros no php.ini de sua hospedagem. Varios destes problemas já foram discutidos e sanados por aqui Abraços Marcos Peli -
Obter Nome/Captcha por Consulta na Receita Federal via PHP/CURL
Massa191 respondeu ao tópico de Vinoli em PHP
Olá Andre Aqui está funcionando OK em duas hospedagens distintas Não tenho elementos para afirmar se a receita bloqueia IPs com exagerado número de requisições, porêm já tive no passado um problema similar, que foi resolvido com a migração para outro servidor. Para contornar a situação, poder-se-ia efetuar a consulta com CURL através de Proxy, embora eu particularmente não goste desta solução, uma vez que expõe os dados da consulta. Abraço Marcos Peli -
Obter Nome/Captcha por Consulta na Receita Federal via PHP/CURL
Massa191 respondeu ao tópico de Vinoli em PHP
Olá Pessoal Scripts atualizados em Github, com as alterações necessárias após alterações da Receita na consulta de CPF. Consultas de CPF e CNPJ Funcionando !!!!!, façam bom proveito, https://github.com/Massa191/Consultas_CNPJ_CPF_Receita_Federal Abraços Marcos Peli -
Obter Nome/Captcha por Consulta na Receita Federal via PHP/CURL
Massa191 respondeu ao tópico de Vinoli em PHP
Pessoal Só para informar que a receita mudou a consulta de CPF, que agore é realizada através de HTTPS Foram necessárias algumas alterações nos scripts Seguem abaixo os novos scripts GETCAPTCHA.PHP e FUNCOES.PHP assim que for possível eu atualizarei o repositório em github getcaptcha.php <?php // tipo de consulta (cpf ou cnpj) para gerar o captcha corretamente $tipo_consulta = $_GET['tipo_consulta']; // define o local onde serão guardados os cookies de sessão , path real e completo $pasta_cookies = 'cookies/'; define('COOKIELOCAL', str_replace('\\', '/', realpath('./')).'/'.$pasta_cookies); define('HTTPCOOKIELOCAL',$pasta_cookies); // inicia sessão @session_start(); // define os nomes dos arquivos de cookie para cada tipo de consulta if($tipo_consulta == 'cpf') { // define arquivo de cookie e url da chamada curl para geração de captcha para consulta de cpf $cookieFile = COOKIELOCAL.'cpf_'.session_id(); $cookieFile_fopen = HTTPCOOKIELOCAL.'cpf_'.session_id(); // $url = 'http://www.receita.fazenda.gov.br/Aplicacoes/ATCTA/CPF/captcha/gerarCaptcha.asp'; $url = 'https://www.receita.fazenda.gov.br/Aplicacoes/SSL/ATCTA/CPF/captcha/gerarCaptcha.asp'; // Alterado em 15/06/2016 } else if ($tipo_consulta == 'cnpj') { // define arquivo de cookie e url da chamada curl para geração de captcha para consulta de cnpj $cookieFile = COOKIELOCAL.'cnpj_'.session_id(); $cookieFile_fopen = HTTPCOOKIELOCAL.'cnpj_'.session_id(); $url = 'http://www.receita.fazenda.gov.br/pessoajuridica/cnpj/cnpjreva/captcha/gerarCaptcha.asp'; } else {die("faltou parâmetro tipo_consulta");} if(!file_exists($cookieFile)) { $file = fopen($cookieFile, 'w'); fclose($file); } // faz a chamada Curl que gera a imagem de captcha para consulta de CPF ou CNPJ conforme o parâmetro passado por get $ch = curl_init($url); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFile); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // Alterado em 15/06/2016 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // Alterado em 15/06/2016 curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $imgsource = curl_exec($ch); curl_close($ch); // se tiver imagem , mostra if(!empty($imgsource)) { //$file = fopen($cookieFile.'.png', 'w'); //fwrite($file,$imgsource); //fclose($file); //echo "gravou"; $img = imagecreatefromstring($imgsource); header('Content-type: image/jpg'); imagejpeg($img); } // --------------- aqui abaixo hack para consulta de cnpj.----------- // observei que a primeira consulta de cnpj retorna vazia , possivelmente deve ter alguma variavel de sessão que precisa ser iniciada antes , na página inicial da receita -- Cnpjreva_Solicitacao2.asp // resolvi fazendo a consulta curl abaixo , ...enviando o Session name e session id que o captcha gerou para a página Cnpjreva_Solicitacao2.asp // isso ainda não é necessário para consulta de cpf if ($tipo_consulta == 'cnpj') { // pega os dados de sessão gerados na visualização do captcha dentro do cookie $file = fopen($cookieFile_fopen, 'r'); while (!feof($file)) {$conteudo .= fread($file, 1024);} fclose ($file); $explodir = explode(chr(9),$conteudo); $sessionName = trim($explodir[count($explodir)-2]); $sessionId = trim($explodir[count($explodir)-1]); // constroe o parâmetro de sessão que será passado no próximo curl $cookie = $sessionName.'='.$sessionId; $ch = curl_init('http://www.receita.fazenda.gov.br/pessoajuridica/cnpj/cnpjreva/Cnpjreva_Solicitacao2.asp'); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFile); // dados do arquivo de cookie curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile); // dados do arquivo de cookie curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0'); curl_setopt($ch, CURLOPT_COOKIE, $cookie); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_MAXREDIRS, 3); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $html = curl_exec($ch); curl_close($ch); } ?> funcoes.php <?php // define caminho absoluto e relativo para arquivo cookie $pasta_cookies = 'cookies/'; define('COOKIELOCAL', str_replace('\\', '/', realpath('./')).'/'.$pasta_cookies); define('HTTPCOOKIELOCAL',$pasta_cookies); // inicia sessão @session_start(); // função para pegar o que interessa function pega_o_que_interessa($inicio,$fim,$total) { $interesse = str_replace($inicio,'',str_replace(strstr(strstr($total,$inicio),$fim),'',strstr($total,$inicio))); return($interesse); } // função para pegar a resposta html da consulta pelo CPF na página da receita function getHtmlCNPJ($cnpj, $captcha) { $cookieFile = COOKIELOCAL.'cnpj_'.session_id(); $cookieFile_fopen = HTTPCOOKIELOCAL.'cnpj_'.session_id(); if(!file_exists($cookieFile)) { return false; } else { // pega os dados de sessão gerados na visualização do captcha dentro do cookie $file = fopen($cookieFile_fopen, 'r'); while (!feof($file)) {$conteudo .= fread($file, 1024);} fclose ($file); $explodir = explode(chr(9),$conteudo); $sessionName = trim($explodir[count($explodir)-2]); $sessionId = trim($explodir[count($explodir)-1]); // se não tem falg 1 no cookie então acrescenta if(!strstr($conteudo,'flag 1')) { // linha que deve ser inserida no cookie antes da consulta cnpj // observações argumentos separados por tab (chr(9)) e new line no final e inicio da linha (chr(10)) // substitui dois chr(10) padrão do cookie para separar cabecario do conteudo , adicionando o conteudo $linha , que tb inicia com dois chr(10) $linha = chr(10).chr(10).'www.receita.fazenda.gov.br FALSE /pessoajuridica/cnpj/cnpjreva/ FALSE 0 flag 1'.chr(10); // novo cookie com o flag=1 dentro dele , antes da linha de sessionname e sessionid $novo_cookie = str_replace(chr(10).chr(10),$linha,$conteudo); // apaga o cookie antigo unlink($cookieFile); // cria o novo cookie , com a linha flag=1 inserida $file = fopen($cookieFile, 'w'); fwrite($file, $novo_cookie); fclose($file); } // constroe o parâmetro de sessão que será passado no próximo curl $cookie = $sessionName.'='.$sessionId.';flag=1'; } // dados que serão submetidos a consulta por post $post = array ( 'submit1' => 'Consultar', 'origem' => 'comprovante', 'cnpj' => $cnpj, 'txtTexto_captcha_serpro_gov_br'=> $captcha, 'search_type' => 'cnpj' ); $post = http_build_query($post, NULL, '&'); $ch = curl_init('http://www.receita.fazenda.gov.br/pessoajuridica/cnpj/cnpjreva/valida.asp'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); // aqui estão os campos de formulário curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFile); // dados do arquivo de cookie curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile); // dados do arquivo de cookie curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0'); curl_setopt($ch, CURLOPT_COOKIE, $cookie); // dados de sessão e flag=1 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_MAXREDIRS, 3); curl_setopt($ch, CURLOPT_REFERER, 'http://www.receita.fazenda.gov.br/pessoajuridica/cnpj/cnpjreva/Cnpjreva_Solicitacao2.asp'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $html = curl_exec($ch); curl_close($ch); return $html; } // função para pegar a resposta html da consulta pelo CPF na página da receita function getHtmlCPF($cpf, $datanascim, $captcha) { // $url = 'http://www.receita.fazenda.gov.br/Aplicacoes/ATCTA/CPF/ConsultaPublicaExibir.asp'; $url = 'https://www.receita.fazenda.gov.br/Aplicacoes/SSL/ATCTA/CPF/ConsultaPublicaExibir.asp'; // Alterado em 15/06/2016 $cookieFile = COOKIELOCAL.'cpf_'.session_id(); $cookieFile_fopen = HTTPCOOKIELOCAL.'cpf_'.session_id(); if(!file_exists($cookieFile)) { return false; } else { // pega os dados de sessão gerados na visualização do captcha dentro do cookie $file = fopen($cookieFile_fopen, 'r'); while (!feof($file)) {$conteudo .= fread($file, 1024);} fclose ($file); $explodir = explode(chr(9),$conteudo); $sessionName = trim($explodir[count($explodir)-2]); $sessionId = trim($explodir[count($explodir)-1]); // prepara a variavel de session $cookie = $sessionName.'='.$sessionId; } // dados que serão submetidos a consulta por post $post = array ( 'txtTexto_captcha_serpro_gov_br' => $captcha, 'tempTxtCPF' => $cpf, 'tempTxtNascimento' => $datanascim, 'temptxtToken_captcha_serpro_gov_br' => '', 'temptxtTexto_captcha_serpro_gov_br' => $captcha ); $post = http_build_query($post, NULL, '&'); $ch = curl_init($url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); // aqui estão os campos de formulário curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFile); // dados do arquivo de cookie curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile); // dados do arquivo de cookie curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // Alterado em 15/06/2016 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // Alterado em 15/06/2016 curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0'); curl_setopt($ch, CURLOPT_COOKIE, $cookie); // continua a sessão anterior com os dados do captcha curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_MAXREDIRS, 3); curl_setopt($ch, CURLOPT_REFERER, 'http://www.receita.fazenda.gov.br/aplicacoes/atcta/cpf/consultapublica.asp'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $html = curl_exec($ch); curl_close($ch); return $html; } // Função para extrair o que interessa da HTML e colocar em array function parseHtmlCNPJ($html) { // respostas que interessam $campos = array( 'NÚMERO DE INSCRIÇÃO', 'DATA DE ABERTURA', 'NOME EMPRESARIAL', 'TÍTULO DO ESTABELECIMENTO (NOME DE FANTASIA)', 'CÓDIGO E DESCRIÇÃO DA ATIVIDADE ECONÔMICA PRINCIPAL', 'CÓDIGO E DESCRIÇÃO DAS ATIVIDADES ECONÔMICAS SECUNDÁRIAS', 'CÓDIGO E DESCRIÇÃO DA NATUREZA JURÍDICA', 'LOGRADOURO', 'NÚMERO', 'COMPLEMENTO', 'CEP', 'BAIRRO/DISTRITO', 'MUNICÍPIO', 'UF', 'ENDEREÇO ELETRÔNICO', 'TELEFONE', 'ENTE FEDERATIVO RESPONSÁVEL (EFR)', 'SITUAÇÃO CADASTRAL', 'DATA DA SITUAÇÃO CADASTRAL', 'MOTIVO DE SITUAÇÃO CADASTRAL', 'SITUAÇÃO ESPECIAL', 'DATA DA SITUAÇÃO ESPECIAL'); // caracteres que devem ser eliminados da resposta $caract_especiais = array( chr(9), chr(10), chr(13), ' ', '</b>', ' ', '<b>MATRIZ<br>', '<b>FILIAL<br>' ); // prepara a resposta para extrair os dados $html = str_replace('<br><b>','<b>',str_replace($caract_especiais,'',strip_tags($html,'<b><br>'))); $html3 = $html; // faz a extração for($i=0;$i<count($campos);$i++) { $html2 = strstr($html,utf8_decode($campos[$i])); $resultado[] = trim(pega_o_que_interessa(utf8_decode($campos[$i]).'<b>','<br>',$html2)); $html=$html2; } // extrai os CNAEs secundarios , quando forem mais de um if(strstr($resultado[5],'<b>')) { $cnae_secundarios = explode('<b>',$resultado[5]); $resultado[5] = $cnae_secundarios; unset($cnae_secundarios); } // devolve STATUS da consulta correto if(!$resultado[0]) { if(strstr($html3,utf8_decode('O número do CNPJ não é válido'))) {$resultado['status'] = 'CNPJ incorreto ou não existe';} else {$resultado['status'] = 'Imagem digitada incorretamente';} } else {$resultado['status'] = 'OK';} return $resultado; } // Função para extrair o que interessa da HTML e colocar em array function parseHtmlCPF($html) { // respostas que interessam $campos = array( 'No do CPF:', 'Nome da Pessoa Física:', 'Data de Nascimento:', 'Situação Cadastral:', 'Data da Inscrição:' ); // caracteres que devem ser eliminados da resposta $caract_especiais = array( chr(9), chr(10), chr(13), ' ', ' ', ); // prepara a resposta para extrair os dados $html = str_replace('<br /><br />','<br />',str_replace($caract_especiais,'',strip_tags($html,'<b><br>'))); // para utilizar na hora de devolver o status da consulta $html3 = $html; // faz a extração for($i=0;$i<count($campos);$i++) { $html2 = strstr($html,utf8_decode($campos[$i])); $resultado[] = trim(pega_o_que_interessa(utf8_decode($campos[$i]),'<br',$html2)); $html=$html2; } // devolve STATUS da consulta correto if(!$resultado[0]) { if(strstr($html3,utf8_decode('CPF incorreto'))) {$resultado['status'] = 'CPF incorreto';} else if(strstr($html3,utf8_decode('não existe em nossa base de dados'))) {$resultado['status'] = 'CPF não existe';} else if(strstr($html3,utf8_decode('Os caracteres da imagem não foram preenchidos corretamente'))) {$resultado['status'] = 'Imagem digitada incorretamente';} else {$resultado['status'] = 'Receita não responde';} } else {$resultado['status'] = 'OK';} return $resultado; } ?> Abraços a todos Marcos Peli