Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rodrigo Aleixo

Dados da Receita Federal - CURL

Recommended Posts

Fala ae pessoal

 

Depois de muito suar a camisa......torrar os poucos neuronios que tenho.....

consegui dar uma melhorada num código q achava que era um script!!!!

 

Bom.... a ideia é simples mas pode ajudar muitos.....

 

Pegar os dados da ficha cadastral na Receita Federal.

O que todos querem é burlar o Captcha.....mas ja adianto que não fiz isso e não pretendo fazer, pois o objetivo desse script era facilitar o cadastro de empresas para prospecção aqui em nossa empresa e não criar um Robô.

 

 

Vamos ao que interessa

 

Funções

 

function curl_recebe_img($url, $arquivo, $cookief="", $cookiej="") {
      $ch = curl_init ($url);
      curl_setopt($ch, CURLOPT_HEADER, 0);
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
                      if(!empty($cookief)) {
              curl_setopt($ch, CURLOPT_COOKIEFILE, $cookief);
              }
                      if(!empty($cookiej)) {
              curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiej);
              }
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
      $data=curl_exec($ch);
      curl_close ($ch);
      $fp = fopen($arquivo,'w');
      fwrite($fp, $data);
      fclose($fp);
      return $arquivo;
}
function curl_captcha_rf($doc, $letras){
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_POSTFIELDS, "origem=comprovante&search_type=cnpj&cnpj=$doc&idLetra=$letras&submit1=Consultar");
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
	curl_setopt($ch, CURLOPT_COOKIEFILE, "receita.txt");
	curl_setopt($ch, CURLOPT_URL, "http://www.receita.fazenda.gov.br/PessoaJuridica/CNPJ/cnpjreva/valida.asp");
	$output=curl_exec($ch);
	
	$res = substr_count($output, "<table border=\"0\" width=\"100%\">");
	
	if($res==0){
		return 0; //CAPTCHA ERRADO
	}elseif($res==1){
		return $output; //OK ACHOU A FICHA
	}elseif($res==3){
		return 2; //CNPJ ERRADO
	}
}
function rf_ficha_receita($output){
	$outp = strstr($output, "<!-- || -->");
	$fim = strlen(strstr($output, "<!-- Fim Linha SITUACAO ESPECIAL-->"));
	$out = trim(substr($outp, 0, -$fim));
	$out .="</td></tr></table>"; 
	$out = str_replace("images/brasao2.gif", "http://www.receita.fazenda.gov.br/PessoaJuridica/CNPJ/cnpjreva/images/brasao2.gif", $out);
	return utf8_encode($out);
	
}
function rf_ficha_dados($ficha,$pos){
	$atividade = explode("<font face=\"Arial\" style=\"font-size: 6pt\">", $ficha);
	$ex = explode("</td>", $atividade[$pos]);
	$atv = strstr($ex[0], "<font face=\"Arial\" style=\"font-size: 8pt\">");
	$atividade = strip_tags($atv);
	return trim(preg_replace('|\s{2,}|', ' ', $atividade));
}

Isso é o que você precisa ter.

 

Usando a Bagaça!!!

 

1° Exibe o Captcha

<? $img = curl_recebe_img("http://www.receita.fazenda.gov.br/scripts/srf/intercepta/captcha.aspx?opt=image","receita.gif","","receita.txt"); ?>
<img src="receita.gif" />
Isso você coloca dentro de um Form comum...cria um campo para digitar as letras...e manda via POST pra onde você quiser.

 

2° Recebendo/Processando/Exibindo

$consulta = curl_captcha_rf($doc,$letras);
//$doc é o CNPJ a ser pesquisa sem PONTOS, BARRAS e TRAÇO.
//$letras é o valor do campo onde foi digitado o Captcha.
$ficha = rf_ficha_receita($consulta);

$dados = rf_ficha_dados($ficha, $posicao);
// $ficha é a variavel acima....a $consulta da RF q foi retirada apenas a FICHA
// $posicao é a Informação que você quer pegar. Abaixo tem a Lista de Posicoes

1 = CNPJ

2 = Data de Abertura

3 = Razão Social

4 = Nome Fantasia

5 = Atividade Principal

6 = Atividade Secundária

7 = Natureza Jurídica

8 = Porte*

9 = Logradouro

10 = Numero

11 = Complemento

12 = CEP**

13 = Bairro

14 = Município

15 = UF

16 = Situação Cadastral

17 = Data da Situação

18 = Motivo da Situação

19 = Situação Especial

20 = Data da Situação Especial

 

 

* PORTE da empresa não esta disponivel para visualização, porém esta comentado no código fonte. Mesmo assim é possivel pegar este dado quando disponível.

** CEP esta no formato da Receita Federal XX.XXX-XXX

 

 

Algumas Observações.

 

Biblioteca CURL instalada né.....

 

A função "curl_captcha_rf" retorna 3 valores:

0 = CAPTCHA ERRADO

3 = CNPJ ERRADO

ou retorna o HTML direto.

 

A função "rf_ficha_receita" retorna a Ficha Cadastral "Prontinha" do jeito que ta no site da RF.....com aquele HTML sujo.

 

A mais importante.

Dependendo da codificação usada em seu site ela pode naum funcionar corretamente. Se isso ocorrer experimente "utf8_decode" e "utf8_encode" junto da funcao "rf_ficha_receita".

Ex.

$ficha = utf8_decode(rf_ficha_receita($consulta));

Bom é isso ai...qualquer dúvida, elogio, crítica...posta ae!!!

 

Valew Galera.

 

Ps. As primeiras funções CURL os créditos são do Bryan Boa Ventura.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse código não está mais funcionando, como resolver?

 

Bom dia,

 

Preciso muito dessa informação também.

Já quebrei a cabeça, mas não consigo encontrar um jeito de retornar as informações da receita no meu formulário.

 

Alguém pode ajudar? Será a receita vende essas informações?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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