Ir para conteúdo

POWERED BY:

Massa191

Members
  • 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 Bom

4 Seguidores

Sobre Massa191

  • Data de Nascimento 07/20/1968

Informações Pessoais

  • Sexo
    Masculino

Contato

Últimos Visitantes

818 visualizações
  1. Massa191

    Consultar CNPJ na receita com cURL + 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
  2. Massa191

    Consultar dados de um CNPJ direto do site da Receita

    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
  3. Massa191

    Obter Nome/Captcha por Consulta na Receita Federal via PHP/CURL

    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
  4. Massa191

    Obter Nome/Captcha por Consulta na Receita Federal via PHP/CURL

    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
  5. Massa191

    Obter Nome/Captcha por Consulta na Receita Federal via PHP/CURL

    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
  6. Massa191

    Obter Nome/Captcha por Consulta na Receita Federal via PHP/CURL

    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
  7. Massa191

    Consultar dados de um CNPJ direto do site da Receita

    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
  8. Massa191

    Obter Nome/Captcha por Consulta na Receita Federal via PHP/CURL

    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
  9. Massa191

    Obter Nome/Captcha por Consulta na Receita Federal via PHP/CURL

    Script atualizados em GitHub 30/05/2017 https://github.com/Massa191/Consultas_CNPJ_CPF_Receita_Federal
  10. Massa191

    Consultar dados de um CNPJ direto do site da Receita

    Olá Pessoal Scripts atualizados e funcionando 100% https://github.com/Massa191/Consultas_CNPJ_CPF_Receita_Federal Abraços Marcos Peli
  11. Massa191

    Obter Nome/Captcha por Consulta na Receita Federal via PHP/CURL

    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.
  12. Massa191

    Obter Nome/Captcha por Consulta na Receita Federal via PHP/CURL

    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
  13. Massa191

    Obter Nome/Captcha por Consulta na Receita Federal via PHP/CURL

    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
  14. Massa191

    Obter Nome/Captcha por Consulta na Receita Federal via PHP/CURL

    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
  15. Massa191

    Obter Nome/Captcha por Consulta na Receita Federal via PHP/CURL

    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
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.