Fabricio Viana
Members-
Total de itens
2 -
Registro em
-
Última visita
Reputação
0 ComumSobre Fabricio Viana
-
Obter Nome/Captcha por Consulta na Receita Federal via PHP/CURL
Fabricio Viana respondeu ao tópico de Vinoli em PHP
Olá Marcos! Puxa, muito obrigado pela ajuda! Vou implementar a imagem diretamente, como você sugeriu! Grande abraço Fabricio -
Obter Nome/Captcha por Consulta na Receita Federal via PHP/CURL
Fabricio Viana respondeu ao tópico de Vinoli em PHP
Olá amigos. Tudo ia muito bem com o CNPJ até que na ---ta-feira de carnaval a Receita Federal alterou também a parte de CNPJ. Tentei alterar para seguir o que foi feito no CPF, mas não obtive sucesso. Minha função de pegar o capcha: function getCaptchaTokenCNPJ() { $cookieFile = COOKIELOCAL.session_id(); if(!file_exists($cookieFile)) { $file = fopen($cookieFile, 'w'); fclose($file); } $ch = curl_init('http://www.receita.fazenda.gov.br/pessoajuridica/cnpj/cnpjreva/captcha/gerarCaptcha.asp'); //debug - podem ignorar isso. $fp = fopen('/aaa.txt', 'w'); curl_setopt($ch, CURLOPT_VERBOSE, true); curl_setopt($ch, CURLOPT_STDERR, $fp); $timeout = 0; curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile); // Getting binary data curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); $image = curl_exec($ch); $filename = '/'.session_id().'.jpg'; $filenameFormulario = '/'.session_id().'.jpg'; $fh = fopen($filename, 'w'); fwrite($fh, $image); fclose($fh); if (filesize($filename) < 2500){ //se der erro e nao carregar a imagem $filenameFormulario = 'erro_receita_federal'; } return ($filenameFormulario); } Beleza! Consigo salvar o captcha em JPEG e criar o arquivo com o cookie!! Agora vem a função de pegar o html: function getHtmlCNPJ($cnpj, $captcha) { // aqui é aquele arquivo onde salvei os cookies lá em getCaptchaToken() $cookieFile = COOKIELOCAL.session_id(); $cookieFile = '/'.session_id(); if(!file_exists($cookieFile)) return false; $post = array ( 'origem' => 'comprovante', 'cnpj' => $cnpj, 'search_type' => 'cnpj', 'submit1' => 'Consultar', 'txtTexto_captcha_serpro_gov_br' => $captcha ); $post = http_build_query($post, NULL, '&'); // tenho que enviar esse cookie pra eles $cookie = array('flag' => 1); $ch = curl_init('http://www.receita.fazenda.gov.br/pessoajuridica/cnpj/cnpjreva/valida.asp'); //debug - explicarei abaixo $fp = fopen('/bbb.txt', 'w'); curl_setopt($ch, CURLOPT_VERBOSE, true); curl_setopt($ch, CURLOPT_STDERR, $fp); 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:34.0) Gecko/20100101 Firefox/34.0'); curl_setopt($ch, CURLOPT_COOKIE, http_build_query($cookie, NULL, '&')); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_MAXREDIRS, 10); curl_setopt($ch, CURLOPT_REFERER, 'http://www.receita.fazenda.gov.br/pessoajuridica/cnpj/cnpjreva/cnpjreva_solicitacao2.asp'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $header[0] = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; $header[] = "Connection: keep-alive"; $header[] = "Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3"; curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate'); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); $html = curl_exec($ch); curl_close($ch); return $html; } Quando dou um echo no $html ele retorna o conteúdo de: http://www.receita.fazenda.gov.br/pessoajuridica/cnpj/cnpjreva/cnpjreva_solicitacao2.asp Ou seja, ele não reconheceu meu capcha. Conteúdo do meu aaa.txt (que pega o captcha): * About to connect() to www.receita.fazenda.gov.br port 80 (#0) * Trying 161.148.231.100... * connected * Connected to www.receita.fazenda.gov.br (161.148.231.100) port 80 (#0) > GET /pessoajuridica/cnpj/cnpjreva/captcha/gerarCaptcha.asp HTTP/1.1 Host: www.receita.fazenda.gov.br Accept: */* < HTTP/1.1 200 OK < Date: Thu, 19 Feb 2015 03:49:53 GMT < Server: Microsoft-IIS/6.0 < X-Powered-By: ASP.NET < Content-Length: 6104 < Content-Type: image/png < Expires: Thu, 19 Feb 2015 03:49:53 GMT * Added cookie ASPSESSIONIDCARTQRDC="GECCAGJCMNADNDEEDLJMOFAK" for domain www.receita.fazenda.gov.br, path /, expire 0 < Set-Cookie: ASPSESSIONIDCARTQRDC=GECCAGJCMNADNDEEDLJMOFAK; path=/ < Cache-control: private < * Connection #0 to host www.receita.fazenda.gov.br left intact * Closing connection #0 Conteúdo do meu bbb.txt: * About to connect() to www.receita.fazenda.gov.br port 80 (#0) * Trying 161.148.231.100... * connected * Connected to www.receita.fazenda.gov.br (161.148.231.100) port 80 (#0) > POST /pessoajuridica/cnpj/cnpjreva/valida.asp HTTP/1.1 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0 Host: www.receita.fazenda.gov.br Accept-Encoding: gzip,deflate Referer: http://www.receita.fazenda.gov.br/pessoajuridica/cnpj/cnpjreva/cnpjreva_solicitacao2.asp Cookie: ASPSESSIONIDCARTQRDC=GECCAGJCMNADNDEEDLJMOFAK; flag=1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Connection: keep-alive Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3 Content-Length: 111 Content-Type: application/x-www-form-urlencoded < HTTP/1.1 302 Object moved < Date: Thu, 19 Feb 2015 03:50:12 GMT < Server: Microsoft-IIS/6.0 < X-Powered-By: ASP.NET < Location: Cnpjreva_Solicitacao2.asp?cnpj=11111111111111 < Content-Length: 166 < Content-Type: text/html < Cache-control: private < * Ignoring the response-body * Connection #0 to host www.receita.fazenda.gov.br left intact * Issue another request to this URL: 'http://www.receita.fazenda.gov.br/pessoajuridica/cnpj/cnpjreva/Cnpjreva_Solicitacao2.asp?cnpj=11111111111111' * Violate RFC 2616/10.3.3 and switch from POST to GET * Re-using existing connection! (#0) with host www.receita.fazenda.gov.br * Connected to www.receita.fazenda.gov.br (161.148.231.100) port 80 (#0) > GET /pessoajuridica/cnpj/cnpjreva/Cnpjreva_Solicitacao2.asp?cnpj=11111111111111 HTTP/1.1 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0 Host: www.receita.fazenda.gov.br Accept-Encoding: gzip,deflate Referer: http://www.receita.fazenda.gov.br/pessoajuridica/cnpj/cnpjreva/cnpjreva_solicitacao2.asp Cookie: ASPSESSIONIDCARTQRDC=GECCAGJCMNADNDEEDLJMOFAK; flag=1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Connection: keep-alive Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3 < HTTP/1.1 200 OK < Date: Thu, 19 Feb 2015 03:50:13 GMT < Server: Microsoft-IIS/6.0 < X-Powered-By: ASP.NET < pragma: no-cache < cache-control: private < Content-Length: 8219 < Content-Type: text/html < Expires: Wed, 18 Feb 2015 03:50:12 GMT < Cache-control: no-cache < * Connection #0 to host www.receita.fazenda.gov.br left intact * Closing connection #0 A linha: Location: Cnpjreva_Solicitacao2.asp?cnpj=11111111111111 Quando rodo pelo FireFox, direto no site da Receita ele é assim: Location: Cnpjreva_Vstatus.asp?origem=comprovante&cnpj=11111111111111 Pelo que entendi a Receita não reconheceu o envio do meu captcha. Alguém conseguiu resolver isso? Obrigado! Fabricio