Dados da Receita Federal - CURL
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"](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",](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"](http://www.receita.fazenda.gov.br/scripts/srf/intercepta/captcha.aspx?opt=image)); ?>
<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.
Discussão (2)
Carregando comentários...