-
Total de itens
80 -
Registro em
-
Última visita
-
Dias vencidos
2
Tudo que Massa191 postou
-
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 -
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 -
Obter Nome/Captcha por Consulta na Receita Federal via PHP/CURL
Massa191 respondeu ao tópico de Vinoli em PHP
Olá Obrigado pelo elogio. Somente conseguimos obter os dados que são disponibilizados nas consultas a receita, pois o script não faz nada mais do que isso, consultar o CPF ou o CNPJ diretamente na receita como se vc. estivesse fazendo isso diretamente lá. Os resultados capturados são os que apareceriam na tela após a consulta. Se um dia a receita disponibilizar mais dados , sim , poderíamos da mesma forma captura-los pelo script. Abraços -
Obter Nome/Captcha por Consulta na Receita Federal via PHP/CURL
Massa191 respondeu ao tópico de Vinoli em PHP
Olá Amigo O Script não está conseguindo modificar o arquivo de cookie e gravar o atributo flag=1 podem ser varias coisas já discutidas neste tópico , como as diretivas em php.ini de sua hospedagem, até a estrutura de arquivos utilizada em hospedagem windows. Aconselho uma leitura completa deste tópico em todas as páginas e respostas pois este problema já foi abordado Utilize a última versão do script disponibilizado no github Abraços -
Obter Nome/Captcha por Consulta na Receita Federal via PHP/CURL
Massa191 respondeu ao tópico de Vinoli em PHP
Olá Rafael Através das ferramentas desenvolvedores de seu FF, monitore a REDE, e veja os Parâmetros , respostas e Cookies do pedido e da resposta de cada consulta diretamente ao site da receita, para depois compara-lo ao cookie que foi gravado no seu servidor através de consulta curl. Através de JS, podem são adicionados parâmetros aos Cookies. Vc. terá que alterar seu cookie de maneira a ter as informações como se o JS as tivesse feito A parte do script que pega os dados de sessão do cookie terá que ser reescrita, pois a medida que são colocados parâmetros novos no cookie, seja pela consulta ou pelo script, o explode da forma que está retornará os dados novos e não a sessionid $explode = explode(chr(9), $content); $sessionName = trim($explode[count($explode) - 2]); $sessionId = trim($explode[count($explode) - 1]); O count explode -1 e o count explode -2 não apontarão os dados da session Talvez vc. tenha que enviar junto ao cabeçãrio da consulta CURL além dos dados da session , também os dados captchatoken , que são gravados no cookie. vc. deve reescrever o código acima de maneira que ele seja capaz de independentemente do numero de consultas e alterações de inf. dentro do cookie, ele sempre devolva a session id e o captchatoken que estão dentro do cookie através de seu programa de ftp , abra o cookie originado na consulta CURL e veja seu conteúdo antes da consulta (após a geração do captcha) , e depois da consulta Compare este cookies ao cookie de seu firefox, na consulta direta ao site da fazenda realizada diretamente pelo navegador (sem curl) O Parâmetro que vc. cita EX='Algum Valor' é um cookie de resposta. Creio que vc. não precisa se preocupar com ele 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á Ricardo Caldeira O que vc. está propondo já existe dentro das funções parseHtmlCNPJ($html) e parseHtmlCPF($html). A Parte do Código que devolve um Status de erro é a Seguinte: em function parseHtmlCNPJ($html) ... este é o trecho de código que faz a atribuição de status da consulta // 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';} em function parseHtmlCPF($html) ... este é o trecho de código que faz a atribuição de status da consulta // 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';} Portanto basta fazer um if para a variavel de retorno da Função $campos['status'] e direcionar a execução do script para aquilo que vc. desejar executar exemplos: if($campos['status'] == 'Imagem digitada incorretamente') { ...aquilo que vc. deseja executar se o status for igual a 'Imagem digitada incorretamente'... } ou então if($campos['status'] == 'CNPJ incorreto ou não existe') { ...aquilo que vc. deseja executar se o status for igual a 'CNPJ incorreto ou não existe'... } 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á Ricardo Caldeira O Erro que você. reporta deve-se ao fato de o ponteiro de arquivo de cookie passado , e que deveria estar aberto, não ser valido. Segue link manual feof() http://php.net/manual/pt_BR/function.feof.php feof retorna false enquanto não encontrar o final de arquivo. Ao encontrar final de arquivo retorna true portanto devemos usar da seguinte forma, para que se percorra todo o arquivo até o seu final while (!feof($file)) ......... faça enquanto não encontrar o final de arquivo ao substituir ! por @ , você. está fazendo 2 coisas. a primeira é que está invertendo a lógica (de false para true ..... faça quando encontrar o final de arquivo, o que não faz o menor sentido), e a segunda é que esta suprimindo eventual warning, pois o @ precedendo comandos no php tem a função de suprimir os erros, é só deve ser usado quando você. sabe exatamente o que está fazendo, ou seja, sabe que será retornado algum erro e quer suprimi-lo para continuar a executar o script seu problema pode estar ocorrendo por um dos motivos abaixo 1 - diretivas allow_url_fopen de seu php Solução: Sexto post da pg2 deste tópico ,... link abaixo http://forum.imasters.com.br/topic/531733-obter-nomecaptcha-por-consulta-na-receita-federal-via-phpcurl/page-2 ou 2 - Sua hospedagem é Windows Solução: nono post da pg3 deste tópico,.... link abaixo http://forum.imasters.com.br/topic/531733-obter-nomecaptcha-por-consulta-na-receita-federal-via-phpcurl/page-3 Espero ter ajudado Abraço Marcos Peli -
Obter Nome/Captcha por Consulta na Receita Federal via PHP/CURL
Massa191 respondeu ao tópico de Vinoli em PHP
Voltando ao Foco do tópico para quem está chegando agora. Consulta de CPF e CNPJ direto no site da receita Segue abaixo link do repositório no GitHub para Download, colaboração, etc..., fiquem a vontade para dar estrela ou um Fork, rs https://github.com/Massa191/Consultas_CNPJ_CPF_Receita_Federal Scripts atualizados e funcionais. 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á Andrerds1 irmãozinho, tá fácil ...... Vc. tem a HTML com todas as informações A informação que aparece no tooltip está no atributo title da tag de hiperlink <a rel="tooltip" class="OBS" title='Alvará Provisório emitido/ nº 2142 valido até 08/12/2015'> <img border="0" src="/TPNET/Content/themes/base/imagens/obstramite.gif"> </a> Vc. pode extrair na unha, como eu fiz, ...com expressões regulares, ou com Simple HTML DOM parser. http://davidwalsh.name/php-notifications Tá na hora de pescar amigo, ... que o peixe tá pedindo pra ser fisgado Fico Contente em poder ter ajudado Grande 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á Andrerds1 Segue Scripts para realizar sua Consulta de processo já pronto Lembrando que a função para extração dos dados da HTML ainda precisa ser escrita, mas isso acho que vc. consegue resolver né ? Abraço Marcos Peli index.php <?php ?> <html> <head> <title>CNPJ , CPF e Captcha</title> </head> <body> <form id="form_processo" name="form_processo" method="post" action="processa.php"> <p><span class="titleCats">Consulta Processo</span> <br /> <input name="ano" type="number" maxlength="4" required /> <b style="color: red">ANO</b> <br /> <input name="processo" type="number" maxlength="5" required /> <b style="color: red">N.Processo</b> <br /> <input name="identificador" type="text" maxlength="7" required /> <b style="color: red">Identificador</b> <br /> </p> <p> <input id="enviar" name="enviar" type="submit" value="Consultar"/> </p> </form> </body> </html> processa.php <?php require('funcoes.php'); // dados da postagem de formulário de consulta_processo $ano = $_POST['ano']; $processo = $_POST['processo']; $identificador = $_POST['identificador']; if($ano and $processo and $identificador) { $getHtmlVV = getHtmlVV($ano, $processo, $identificador); $campos = parseHtmlVV($getHtmlVV); } echo $getHtmlVV; print_r($campos); ?> funcoes.php <?php // 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 de processos function getHtmlVV($ano, $processo, $identificador) { // dados que serão submetidos a consulta por GET $protocolo = $ano."/".$processo; $get = array ( 'protocolo' => $protocolo, 'identificador' => $identificador, 'chamada' => 2, 'consultaSA' => 'true' ); $url = 'http://tpnet.vilavelha.es.gov.br/TPNET/ConsultaProcesso/Processo/'; $get = http_build_query($get, NULL, '&'); $ch = curl_init(); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_URL, "$url?$get"); // aqui estão os campos de formulário enviados por get 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_REFERER, 'http:://tpnet.vilavelha.es.gov.br/TPNET/ConsultaProcesso/Consultar'); 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 parseHtmlVV($html) { // Aquis será montado o script que fara a extração dos resultados da HTML } ?> -
Obter Nome/Captcha por Consulta na Receita Federal via PHP/CURL
Massa191 respondeu ao tópico de Vinoli em PHP
É Nois ! , rs -
Obter Nome/Captcha por Consulta na Receita Federal via PHP/CURL
Massa191 respondeu ao tópico de Vinoli em PHP
Mas aí tá muito fácil o link não expirou até agora e não é necessário o parâmetro &_=1441994607355 (pelo menos no teste que fiz aqui funcionou sem) tenta o link abaixo aí !!!! http://tpnet.vilavelha.es.gov.br/TPNET/ConsultaProcesso/Processo/?protocolo=2015/22665&identificador=Z374TF2&chamada=2&consultaSA=true vc. precisa de: uma página em HTML com o Form para a entrada dos dados identificador ano processo enviar para o script PHP que fara a consulta CURL através do Método GET para o endereço http://tpnet.vilavelha.es.gov.br/TPNET/ConsultaProcesso/Processo/ monta as variáveis que serão passadas pelo curl e depois faz a chamada identificador=Z374TF2 protocolo=2015/22665 (protocolo = ano."/".processo) chamada=2 consultaSA=true na resposta vc. extrai o que interessa e pronto Estou viajando e só volto no f de semana vai testando aí, qq coisa resolvo isso pra vc. no f de semana Abs. Marcos Peli