Ir para conteúdo

POWERED BY:

Arquivado

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

dzanella

Acessando site da Receita Federal com cURL...

Recommended Posts

----- Tópico Dividido -----

 

Referência: http://forum.imasters.com.br/index.php?/topic/394845-curl-post

 

----- Tópico Dividido -----

 

Olá...

Sei que o tópico já está resolvido, porém estou tentando fazer algo parecido com isso pra preencher o SicalcWeb, no site da receita (http://www.receita.fazenda.gov.br/pagamentos/SicalcWebNovo.htm).

para iniciar, simplesmente copiei o código do Bruno Augusto.

Porém a única coisa que me retorna é uma página em branco.

Já me certifiquei que a biblioteca curl está ativada no php.ini.

Acontece a mesma coisa se tento abrir a página via fopen.

certo que possam me ajudar, agradeço e aguardo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia @dzanella, seu post nesse tópico foi dividido em um novo e particular tópico próprio.

 

Vamos ver...

 

Você disse que vê uma página em branco.

 

No código que havia postado, não mencionei a inclusão da seguinte linha:

 

ini_set( 'display_errors', TRUE );

Como sendo a primeiro do código pois na minha instalação do PHP ela já está habilitada. Se você tem dúvidas se ela está, basta adicionar.

 

Isso porque de nada adianta ter os reportes de erro ligados no máximo se essa diretiva estiver desligada nada será mostrado.

 

Além disso, você testou com o mesmo URL docódigo ou já alterado parao que lhe interessa?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então...

Obrigado pela resposta...

descobri que eu tinha alguns problemas com a configuração do meu Apache/PHP

Agora está me dando a msg "couldn't connect to host"

estou usando os mesmos links do post para testes.

 

no aguardo.

 

Avancei um pouco...

acho q estou esbarrando em algum bloqueio da rede da empresa agora...

descobri que tenho q setar o proxi e já o fiz, mas acho q a rede deve estar bloqueando algo...

segue meu código.

<?php
            error_reporting(E_ALL | E_STRICT);
            ini_set('display_errors', TRUE);
            
            echo '<base href="http://www.google.com.br" />';
            date_default_timezone_set('America/Sao_Paulo');
   

            $cURL = curl_init();
            curl_setopt($cURL, CURLOPT_URL, "http://www.google.com.br");
            curl_setopt($cURL, CURLOPT_PROXYAUTH, CURLAUTH_NTLM);
            curl_setopt($cURL, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
            curl_setopt($cURL, CURLOPT_PROXY, "IP do meuproxy:porta");
            curl_setopt($cURL, CURLOPT_PROXYUSERPWD, "meudominio%5Cmeuusuario:minhasenha");
            curl_setopt($cURL, CURLOPT_RETURNTRANSFER, 01);
            curl_setopt($cURL, CURLOPT_USERAGENT, 'Googlebot/2.1 (+http://www.google.com/bot.html)');
            curl_setopt($cURL, CURLOPT_HTTPPROXYTUNNEL, false);
            curl_setopt($cURL, CURLOPT_CONNECTTIMEOUT, 10);
            curl_setopt($cURL, CURLOPT_PORT, '80');
   
            $resultado = curl_exec($cURL) or die(curl_error($cURL));

            echo $resultado;

            curl_close($cURL);
        ?>

estou recebendo uma mensagem da rede de "Proibido o acesso ao Cache."

aguardo...

 

Então pessoal...

não consegui avançar mais do que isso...

alguém tem alguma idéia?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, vamos lá. Primeiroa notícia animadora:Não faço idéia do que seja :lol:

 

Mas vamos aos poucos, testando uma parte de cada vez até conectar.

 

Primeiro sugiro que use como URL de teste um site leve, afinal antes de usar pra valer, tem de funcionar.

 

Sugiro o example.org

 

Como você já testou o código sem opção nenhuma, vindo do outro tópico e dava problema de host, mantenha APENAS as definições referentes ao proxy. Remova todo o resto.

 

Teste e veja se aparece as duas mensagens que o site oferece (é só isso mesmo).

 

Dessa forma, se funcionar, você vai adicionando as opções uma a uma e se parar de funcionar, saberá quem é o culpado.

 

Novamente, se funcionar, você pode corrigir algumas inconsistências:

 

- CURLOPT_RETURNTRANSFER. O valor ou é TRUE/FALSE ou 1/0. 01 é desnecessário (se é que não passível de ser caracterizado como errado).

 

- CURLOPT_USERAGENT. Passe o SEU user-agent, dessa forma o site que quiser acessar interpretará a requisição como vindo de um browser, e não de um bot automático (de repente o site bloqueia, de repente não...)

 

- CURLOPT_CONNECTTIMEOUT. Acredito que este valor esteja muito baixo. Se a conexão for lenta ou o site mal projetado (sendo lento sem querer, querendo), isso pode não te retornar algo.

 

- CURLOPT_PORT. Desnecessário mencionar o valor quando for 80. Toda requisição HTTP é por padrão sob a porta 80.

 

Veja se resolve.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Bruno...

 

segue o codigo do meu ultimo teste...

Continuo tendo a mensagem de Proibido acesso ao Cache.

<?php
            error_reporting(E_ALL | E_STRICT);
            ini_set('display_errors', TRUE);
            echo '<base href="http://www.example.org" />';
            date_default_timezone_set('America/Sao_Paulo');

            $cURL = curl_init();
            curl_setopt($cURL, CURLOPT_URL, "http://example.org");
            curl_setopt($cURL, CURLOPT_PROXYAUTH, CURLAUTH_NTLM);
            curl_setopt($cURL, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
            curl_setopt($cURL, CURLOPT_PROXY, "192.168.0.2:3128");
            curl_setopt($cURL, CURLOPT_PROXYUSERPWD, "microton-2000.com.br%5Cdiogo:diogo123");
            curl_setopt($cURL, CURLOPT_USERAGENT, '"Mozilla/4.0"');
            curl_setopt($cURL, CURLOPT_CONNECTTIMEOUT, 60);
            curl_setopt($cURL, CURLOPT_PORT, '8080');
            $resultado = curl_exec($cURL) or die(curl_error($cURL));

            echo $resultado;

            curl_close($cURL);
        ?>

Estou achando q pode ser a rede da empresa me barrando em algo...

já pedi pro Adm da rede verificar...

Será q pode ser isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode e não pode, depende das configurações particulares da rede e aí já não é minha praia (aliás, nunca foi :P )

 

Mas quanto a esse código obtive um erro também. Não esse do cache, mas o de impossibilidade de se conectar ao host.

 

Óbviamente que comntei as configurações de proxy, já que meu acesso é direto. Quem de fato causou os problemas foi CURLOPT_PORT.

 

Lembra? Se no URL de acesso normal, via browser NÃO tiver :NUMERO_PORTA no final do endereço então você deve ou OMITIR essa opção ou definir como 80.

 

A opção de TIMEOUT aqui, e para esse site, não deu problemas, conectou direitinho. Mas como vocêpretende acessar um site do governo, acredite, isso vai barrar, pois eles são todos pogramados.

 

Um último teste para confirmar definitivamente se o problema é da rede seria, das duas uma, ou hospedar osistema num servidor, pago ou gratuito, mas que tenha cURL instalada e habilitada ou levar para outro PC fora da rede, que se conecte diretamente, sem proxy e ver se funciona.

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.