Ir para conteúdo
Vinoli

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

Recommended Posts

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

 

Parabéns Marcos Peli.

Script sensacional .

 

abraços !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguem sabe informar o limite de consultas? pois estou sendo bloqueado constantemente, tem alguma sugestão, como por exemplo rotatividade de ip?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguem sabe informar o limite de consultas? pois estou sendo bloqueado constantemente, tem alguma sugestão, como por exemplo rotatividade de ip?

 

Use proxy no cURL. Existem vários grátis e você pode fazer essa rotatividade de ips.

 

Provavelmente eles devem fazer proteção no captcha para que o IP usado para exibi-lo, seja obrigatoriamente o mesmo usado na autenticação. Veja isso quando elaborar o script.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde pessoal

 

Eu estou com um problema ao pegar os dados do cnpj. Quando coloco o comando echo abaixo

$getHtmlCNPJ = getHtmlCNPJ($cnpj, $captcha);
echo $getHtmlCNPJ;
if($getHtmlCNPJ)

O navegador mostra os dados corretos da empresa consultada, porém o Array está vazio e no final mostra que a imagem digitada está incorreta.

 

Como pode receber os dados, mostrar a página com os dados do cnpj e no array está vazio? o que estou fazendo de errado?

Array
(
    [0] => 
    [1] => 
    [2] => 
    [3] => 
    [4] => 
    [5] => 
    [6] => 
    [7] => 
    [8] => 
    [9] => 
    [10] => 
    [11] => 
    [12] => 
    [13] => 
    [14] => 
    [15] => 
    [16] => 
    [17] => 
    [18] => 
    [19] => 
    [20] => 
    [21] => 
    [status] => Imagem digitada incorretamente

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Boa tarde pessoal

 

Eu estou com um problema ao pegar os dados do cnpj. Quando coloco o comando echo abaixo

$getHtmlCNPJ = getHtmlCNPJ($cnpj, $captcha);
echo $getHtmlCNPJ;
if($getHtmlCNPJ)

O navegador mostra os dados corretos da empresa consultada, porém o Array está vazio e no final mostra que a imagem digitada está incorreta.

 

Como pode receber os dados, mostrar a página com os dados do cnpj e no array está vazio? o que estou fazendo de errado?

Array
(
    [0] => 
    [1] => 
    [2] => 
    [3] => 
    [4] => 
    [5] => 
    [6] => 
    [7] => 
    [8] => 
    [9] => 
    [10] => 
    [11] => 
    [12] => 
    [13] => 
    [14] => 
    [15] => 
    [16] => 
    [17] => 
    [18] => 
    [19] => 
    [20] => 
    [21] => 
    [status] => Imagem digitada incorretamente

 

Esqueci de informar que o arquivo gravado na pasta C:\xampp\htdocs\QualityControl\view\cookies_cnpj com o nome e7ten596n6muk4ek321hbaker3

Em todos os momentos fica assim.

 

 

# Netscape HTTP Cookie File

# This file was generated by libcurl! Edit at your own risk.
www.receita.fazenda.gov.br FALSE / FALSE 0 ASPSESSIONIDCQSTDBBQ EDOPHNGAEHFDDEGBCCLOPJIE

 

não sofre alteração
Porém ao apertar o F12 me apresenta os seguintes erros.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Peço desculpas pela minha falta de atenção, passei a manhã lendo esse topco maravilhoso e não percebi que deixei passar batido a parte do flag=1

 

Está na segunda página do tópico

 

http://forum.imasters.com.br/topic/531733-obter-nomecaptcha-por-consulta-na-receita-federal-via-phpcurl/page-2

 

Hoje vou começar a seguir o github desse tópico.

 

Obrigado e novamente, desculpa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde gente, mais uma vez eu aqui tentando aprender a programar.

pois bem, falando da pagina getcaptcha.php

 

Seguinte, quando utilizo o localhost o sistema pega a imagem captchada receita federal corretamente, porém quando coloco no meu servidor cpanel, para testar online, gera o seguinte erro no log:

 

 

[05-Oct-2015 11:29:20 America/New_York] PHP Warning: feof() expects parameter 1 to be resource, boolean given in /home/cpdsico/public_html/QualityControl/consultaCnpj/getcaptcha.php on line 44

[05-Oct-2015 11:29:20 America/New_York] PHP Warning: fread() expects parameter 1 to be resource, boolean given in /home/cpdsico/public_html/QualityControl/consultaCnpj/getcaptcha.php on line 45

 

Eu segui os dados fornecidos no log e achei uma parte da função

 

 

$file = fopen($cookieFile_fopen, 'r');

while (!feof($file))
{$conteudo .= fread($file, 1024);}
fclose ($file);

 

Depois de pesquisar um pouquinho, em alguns sites estavam mostrando a seguinte solução

 

while (@feof($file))

 

 

Más assim, pelo pouco que entendo está dizendo que ao inves de o resultado diferente de feof($file) ele esta passando direto feof($file) e reprimindo o warning

 

Dessa forma no site funcionou, más no localhost também. Minha dúvida é o seguinte, qual o impacto dessa mudança? Alguém poderia me informar o que aconteceu para eu aprender um pouco mais?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde gente, mais uma vez eu aqui tentando aprender a programar.

pois bem, falando da pagina getcaptcha.php

 

Seguinte, quando utilizo o localhost o sistema pega a imagem captchada receita federal corretamente, porém quando coloco no meu servidor cpanel, para testar online, gera o seguinte erro no log:

 

 

Eu segui os dados fornecidos no log e achei uma parte da função

 

 

Depois de pesquisar um pouquinho, em alguns sites estavam mostrando a seguinte solução

 

 

Más assim, pelo pouco que entendo está dizendo que ao inves de o resultado diferente de feof($file) ele esta passando direto feof($file) e reprimindo o warning

 

Dessa forma no site funcionou, más no localhost também. Minha dúvida é o seguinte, qual o impacto dessa mudança? Alguém poderia me informar o que aconteceu para eu aprender um pouco mais?

 

 

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

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

 

Realmente a resolução do meu problema estava no php.ini.

No diretório em que está os arquivos *.php eu criei um arquivo com o nome de php.ini e coloquei allow_url_fopen =on

Resolvido o problema, Muito obrigado por sua explicação Marcos Peli

Agora se não for abusar da sua ajuda, (tenho que tentar né rsrs)

 

No meu código ao invés de digitar o valor do captcha, digitei um valor qualquer. Ele não da erro e permite passar para a pagina "processa.php", o resultado e em branco (criei alguns inputs para receber o array $campo[#]).

 

Eu gostaria que aparecesse uma mensagem de erro ou algo do tipo, para o usuário tentar de novo. Depois de estudar a pagina getcaptcha.php e tentar algumas soluções sem sucesso, pulei para "processa.php" e, nesse momento, estou colocando um if/else no final do codigo php, mais ou menos assim:


<?php

require('funcoes.php');
include_once $_SERVER['DOCUMENT_ROOT'].'/QualityControl/model/head.php';

$cnpj = $_POST['CNPJ'];
$captcha = $_POST['CAPTCHA'];

// pega html resposta da receita
$getHtmlCNPJ = getHtmlCNPJ($cnpj, $captcha);

if($getHtmlCNPJ)
{
// coloca os dados em um array
$campos = parseHtmlCNPJ($getHtmlCNPJ);

if (empty($campos[0])){
       echo 'mensagem de erro';
}else {
            //aqui entra o html que criei, para preencher os inputs com os dados que desejo.
}

}

 

O que acha da minha solução?
Teria algo mais profissional para me aconselhar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 

Realmente a resolução do meu problema estava no php.ini.

No diretório em que está os arquivos *.php eu criei um arquivo com o nome de php.ini e coloquei allow_url_fopen =on

Resolvido o problema, Muito obrigado por sua explicação Marcos Peli

Agora se não for abusar da sua ajuda, (tenho que tentar né rsrs)

 

No meu código ao invés de digitar o valor do captcha, digitei um valor qualquer. Ele não da erro e permite passar para a pagina "processa.php", o resultado e em branco (criei alguns inputs para receber o array $campo[#]).

 

Eu gostaria que aparecesse uma mensagem de erro ou algo do tipo, para o usuário tentar de novo. Depois de estudar a pagina getcaptcha.php e tentar algumas soluções sem sucesso, pulei para "processa.php" e, nesse momento, estou colocando um if/else no final do codigo php, mais ou menos assim:


<?php

require('funcoes.php');
include_once $_SERVER['DOCUMENT_ROOT'].'/QualityControl/model/head.php';

$cnpj = $_POST['CNPJ'];
$captcha = $_POST['CAPTCHA'];

// pega html resposta da receita
$getHtmlCNPJ = getHtmlCNPJ($cnpj, $captcha);

if($getHtmlCNPJ)
{
// coloca os dados em um array
$campos = parseHtmlCNPJ($getHtmlCNPJ);

if (empty($campos[0])){
       echo 'mensagem de erro';
}else {
            //aqui entra o html que criei, para preencher os inputs com os dados que desejo.
}

}

 

O que acha da minha solução?
Teria algo mais profissional para me aconselhar?

 

 

 

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguém conseguiu descobrir algo referente a legalidade desta consulta em sistemas próprios? Se eu soltar uma versão do meu sistema utilizando essa facilidade, será se terei algum problema?

Alguém tem algum email ou telefone que posso conseguir essa informação?

 

Não acho nada relativo a isso no site da receita

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguém conseguiu descobrir algo referente a legalidade desta consulta em sistemas próprios? Se eu soltar uma versão do meu sistema utilizando essa facilidade, será se terei algum problema?

Alguém tem algum email ou telefone que posso conseguir essa informação?

 

Não acho nada relativo a isso no site da receita

Por se tratar de acesso público, creio não ser ilegal, pois seria a mesma coisa que você consultar manualmente lá e jogar em seu sistema. Mas temos alguns pontos:

 

- Que você não divulgue estes dados de clientes que consultarem pela API em seu sistema.

- Que você não armazene estes dados sem a consciência do usuário.

 

Indo contra estes pontos, você estaria infringindo o artigo 153 do código penal, Marco Civil da Internet e Sigilo Fiscal, creio eu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguém já conseguiu fazer algo parecido mas para pegar Certidao Negativa de Débito?

 

Estou preso nisso já faz um bom tempo, tento replicar os passos que o navegador faz, mas aparentemente esta faltando algo e eu não consigo descobrir o que é.

 

 

Codigo Abaixo gera um captcha.jpg e cria as sessions, detalhe que o endereço para criação do captcha para CND é outro e ele gera uma session extra "captcha_token"

$cookieFile = COOKIES . '/cnd_' . session_id();
$current = IMAGES . '/captcha.jpg';
$url = 'http://www.receita.fazenda.gov.br/Aplicacoes/ATSPO/Certidao/gerarCaptcha.asp?app=CNDConjuntaInter';

if (!file_exists($cookieFile)) {
   $file = fopen($cookieFile, 'w');
   fclose($file);
}

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFile);
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);
if (!empty($imgsource)) {
   $img = imagecreatefromstring($imgsource);
   imagejpeg($img, $current);
   imagedestroy($img);
}

Agora a funcão que deveria pegar o retorno

function getCnd($cnpj, $captcha) {
   $cookieFile = COOKIES . '/cnd_' . session_id();
   if (!$cookieFile) {
      die('Cookie not found!');
   }

   $content = file_get_contents($cookieFile);
   $explode = explode(chr(9), $content);
   $sessionName = trim($explode[count($explode) - 2]);
   $sessionId = trim($explode[count($explode) - 1]);
   $cookie = $sessionName . '=' . $sessionId;

   $post = array(
       'NI' => $cnpj,
       'Tipo' => 'comprovante',
       'txtTexto_captcha_serpro_gov_br' => $captcha
   );

   $ch = curl_init('http://www.receita.fazenda.gov.br/Aplicacoes/ATSPO/Certidao/CNDConjuntaInter/OpcaoCertidaoInternet.asp?app=CNDConjuntaInter');
   curl_setopt($ch, CURLOPT_POST, true);
   curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
   curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFile);
   curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile);
   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_REFERER, 'http://www.receita.fazenda.gov.br/Aplicacoes/ATSPO/Certidao/CNDConjuntaInter/InformaNICertidao.asp?tipo=1');
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
   $html = curl_exec($ch);
   curl_close($ch);
   return $html;
}

Pagina de partida é: http://www.receita.fazenda.gov.br/Aplicacoes/ATSPO/Certidao/CndConjuntaInter/InformaNICertidao.asp?Tipo=1

 

O Problema ocorrido é que ele quando chega na pagina de destino, ao invés de mostrar o resultado ele acaba redirecionando novamente para a home, (como se eu tivesse colado a pagina de destino no navegador).

 

Notei que é criado uma session EX='Algum valor', porém esta informação não estou conseguinde obter com o cURL.

 

QQ ajuda será bem vinda, e qualquer dúvida só perguntar, obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguém já conseguiu fazer algo parecido mas para pegar Certidao Negativa de Débito?

 

Estou preso nisso já faz um bom tempo, tento replicar os passos que o navegador faz, mas aparentemente esta faltando algo e eu não consigo descobrir o que é.

 

 

Codigo Abaixo gera um captcha.jpg e cria as sessions, detalhe que o endereço para criação do captcha para CND é outro e ele gera uma session extra "captcha_token"

$cookieFile = COOKIES . '/cnd_' . session_id();
$current = IMAGES . '/captcha.jpg';
$url = 'http://www.receita.fazenda.gov.br/Aplicacoes/ATSPO/Certidao/gerarCaptcha.asp?app=CNDConjuntaInter';

if (!file_exists($cookieFile)) {
   $file = fopen($cookieFile, 'w');
   fclose($file);
}

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFile);
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);
if (!empty($imgsource)) {
   $img = imagecreatefromstring($imgsource);
   imagejpeg($img, $current);
   imagedestroy($img);
}

Agora a funcão que deveria pegar o retorno

function getCnd($cnpj, $captcha) {
   $cookieFile = COOKIES . '/cnd_' . session_id();
   if (!$cookieFile) {
      die('Cookie not found!');
   }

   $content = file_get_contents($cookieFile);
   $explode = explode(chr(9), $content);
   $sessionName = trim($explode[count($explode) - 2]);
   $sessionId = trim($explode[count($explode) - 1]);
   $cookie = $sessionName . '=' . $sessionId;

   $post = array(
       'NI' => $cnpj,
       'Tipo' => 'comprovante',
       'txtTexto_captcha_serpro_gov_br' => $captcha
   );

   $ch = curl_init('http://www.receita.fazenda.gov.br/Aplicacoes/ATSPO/Certidao/CNDConjuntaInter/OpcaoCertidaoInternet.asp?app=CNDConjuntaInter');
   curl_setopt($ch, CURLOPT_POST, true);
   curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
   curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFile);
   curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile);
   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_REFERER, 'http://www.receita.fazenda.gov.br/Aplicacoes/ATSPO/Certidao/CNDConjuntaInter/InformaNICertidao.asp?tipo=1');
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
   $html = curl_exec($ch);
   curl_close($ch);
   return $html;
}

Pagina de partida é: http://www.receita.fazenda.gov.br/Aplicacoes/ATSPO/Certidao/CndConjuntaInter/InformaNICertidao.asp?Tipo=1

 

O Problema ocorrido é que ele quando chega na pagina de destino, ao invés de mostrar o resultado ele acaba redirecionando novamente para a home, (como se eu tivesse colado a pagina de destino no navegador).

 

Notei que é criado uma session EX='Algum valor', porém esta informação não estou conseguinde obter com o cURL.

 

QQ ajuda será bem vinda, e qualquer dúvida só perguntar, obrigado!

 

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguém já conseguiu fazer algo parecido mas para pegar Certidao Negativa de Débito?

 

Para a CND é mais simples, nao precisa desse metodo.

Basta chamar o link com o cnpj do empresa que você quer pegar

 

www.receita.fazenda.gov.br/Aplicacoes/ATSPO/Certidao/CNDConjuntaSegVia/ResultadoSegVia.asp?Origem=1&Tipo=1&NI= 03895171000114&Senha=

 

"Permite a emissão de 2ª via da última certidão negativa ou positiva com efeitos de negativa, que esteja dentro do período de validade"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiramente, obrigado pelas respostas.

 


Para a CND é mais simples, nao precisa desse metodo.
Basta chamar o link com o cnpj do empresa que você quer pegar

www.receita.fazenda.gov.br/Aplicacoes/ATSPO/Certidao/CNDConjuntaSegVia/ResultadoSegVia.asp?Origem=1&Tipo=1&NI= 03895171000114&Senha=

"Permite a emissão de 2ª via da última certidão negativa ou positiva com efeitos de negativa, que esteja dentro do período de validade"

 

Obrigado pelo link, mas o que eu pretendo mesmo, é gerar um novo certificado baseado no tempo restante da validade ou por tempo determinado.

 

Massa191

Obrigado pela ajuda, vou quebrar mais um pouco a cabeça aqui e tentar seguir sua recomendação.

Já Sobre o tal do "EV" eu acho que o problema em questão eh bem complexo, o cURL não esta criando 4 valores que estão no cookie do navegador, que são referente a hora e dia da visita, os conteudo destes cookies estão criptografados. oque eu acredito que o sistema faça eh descriptografas os valores contidos neste cookie fazer uma especie de checagem e gerar o código EV que eh adicionado ao cookie posteriormente.

 

Mas como nenhum desses valores voltam no cookie do cURL eu estou achando que o sistema usa javascript para setar estes cookies...

 

Vou dar uma fuçada nos .js e ver se encontro algo nesse sentido, abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, estou tentando utilizar os 4 arquivos disponibilizados pelo massa, mas não consegui. os resultados que obtenho são esses:

 

na página quando coloco o captcha e tudo mais aparece isso como resposta:

 

Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => [13] => [14] => [15] => [16] => [17] => [18] => [19] => [20] => [21] => [status] => Imagem digitada incorretamente )

 

no cookie gerado não aparece o flag=1 aparece isso:

 

# Netscape HTTP Cookie File

# This file was generated by libcurl! Edit at your own risk.
www.receita.fazenda.gov.br FALSE / FALSE 0 ASPSESSIONIDAACCRDSR NBGBJLIDNLKFGFLKAAEDHALH
poderiam me ajudar na solução deste problema?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Além de agradecer gostaria de fazer uma pergunta, não tem como conseguir mais dados do CPF, como nome da mae e endereço por exemplo?

 

Muitos parabéns mesmo.. top show de bola...

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×

Informação importante

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