Ir para conteúdo

POWERED BY:

Arquivado

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

Lud-RP

Referer CURL não funciona.

Recommended Posts

E ae galera,

faz tempo que não posto nada por aqui, mas desta vez estou quebrando a cabeça.

 

Não conheço quase nada de cURL, mas precisei utilizá-lo para retornar a imagem de um captcha para votação no site de um cliente.

Basicamente é o seguinte, consigo retornar todos os dados que preciso e quando testado em localhost o sistema funciona perfeitamente, exibindo a imagem e votando, inclusive computando o voto no site da votação.

 

Porém, quando publico o script no site do cliente para que os visitantes possam usar a ferramenta, a imagem do captcha não é exibida, algo me diz que é porque o domínio de referencia que busca a imagem é diferente do domínio que gera ela, e localmente deve funcionar por ser localhost Imagem Postada

 

Bom, basicamente o código é o seguinte:

 

	$ch = curl_init();
	$timeout = 5;
	
	curl_setopt ($ch, CURLOPT_URL, $site_url);
	curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
	
	ob_start();

	curl_exec($ch);
	curl_close($ch);
	
	$file_contents = ob_get_contents(); //pega todo o conteudo
	
	
	ob_end_clean();

 

Ele retorna todo o conteúdo e como eu disse, localmente funciona perfeitamente, no conteúdo tem o captcha que eu extraio através de expressão regular.

 

Enfim, como eu disse, testando em localhost o script funciona perfeitamente, o quando jogo para o servidor ele retorna ima imagem :"Try Again", ou seja, uma falha gerada pelo script que gera o captcha.

 

Não estou tentando burlar o captcha, não estou tentando criar um OCR, estou simplesmente tentando fazer com que os visitantes possam votar pelo próprio site do cliente para que ele tenha como computador os votos para premiar aqueles usuários que ajudaram votando.

 

Enfim, tentei incluir nas opções do cURL:

curl_setopt ($ch, CURLOPT_REFERER, $referer);
sendo que $referer é o domínio da página de votação, porém não funciona, quando rodado localmente, perfeito, quando rodado no dominio do meu cliente, #Fail!

 

Alguma sugestão?

Algum outro jeito de retornar um captcha???

 

Obrigado e Abraços! Imagem Postada

 

Ninguém?

Eu quero pegar o captcha pro Prêmio Vagalume, para facilitar a votação dos visitantes e poder gerenciar uma promoção, 1 voto = 1 cupom.

Sugestões?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Lud-RP,

 

Se você utilizou a opção CURLOPT_REFERER do Curl, informando como referência o próprio site onde ocorre a votação, e mesmo assim não funcionou, provavelmente o erro não está na referência.

 

Você tem que dar uma analisada melhor aí pra tentar descobrir o que está dando errado.

 

Por se tratar de uma votação e, como a maioria desses sistemas só permitem um voto por IP, eu não sei se você vai conseguir fazer com que o usuário vote pelo seu site e o voto seja enviado para outro site através do Curl, pois neste caso o IP utilizado será sempre o mesmo, o do seu servidor. Uma solução seria redirecionar o usuário para o site da votação enviando um POST para ele.

 

Quanto ao seu código, você não precisa utilizar buffer para capturar o conteúdo do URL, você pode fazer assim:

 

$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $site_url);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$file_contents = curl_exec($ch);
curl_close($ch);

Setando a opção CURLOPT_CONNECTTIMEOUT como true, você faz com que o conteúdo seja retornado na variável $file_contents através da função curl_exec.

 

Um abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não quero burlar, quero uma forma de controlar a votação, para saber se o usuário realmente votou, no final da votação vai ter um sorteio no site, e cada voto vale um cupom para o prêmio, e fica dificil controlar a votação pelo sistema deles, aliás, impossível.

 

Não quero criar um sistema de votação automatico, como disse, não quero um OCR, quero apenas exibir a imagem.

 

O sistema de votação não controla por ip, controla por cache, e o cache vai pra maquina do usuário, o usuário pode realizar 1 voto a cada 2 minutos, não é 1 voto por dia.

 

O que me deixou confuso (além do fato de não conhecer mto de curl), foi o fato de que testando em localhost, o sistema funciona perfeitamente, mas no domínio do cliente não, como se o sistema que gera a imagem identificasse a requisição de outro domínio e impedisse a execução do script.

 

Por isso falei do Referer, deduzi que o script que gera a imagem aceita requisições de localhost.

 

Enfim, estou desistindo, a votação ja começou e o tempo de votação está passando.

 

Mas fiquei curioso para conseguir fazer funcionar ehehe

abs

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.