Função para Manipular o Referer com cURL

Como manipular o HTTP_REFERER com cURLVamos entender melhor como funciona o $_SERVER[‘HTTP_REFERER’] do PHP, suas utilidades e uma função simples para manipular o REFERER de uma requisição HTTP, a fim de nos “passarmos” por outro site, ou até mesmo o site alvo da requisição.

O PHP possui algumas váriaveis especiais, são mais conhecidos como arrays superglobais. Entre elas, esta o $_SERVER. Nesta Array, temos a opção (indíce) HTTP_REFERER, que podemos visualizar qual é a página ou o site que está solicitando algo do nosso site, ou simplesmente, da onde o usuário chegou ao seu site.

Um exemplo útil disto, seria segmentar o usuário de acordo com o seu interesse. Por exemplo, o usuário busca no Google sobre algo do seu site,  assim que ele entra em seu site, o array $_SERVER[‘HTTP_REFERER’] irá armazenar o local da onde este usuário chegou ao seu site. Então, baseado nas palavras-chaves que o mesmo pesquisou no Google, você poderia mostrar anuncios patrocinados de acordo com eles, ou, você poderia mostrar um conteúdo diferente de acordo com o que ele pesquisou.

Uma outra utilidade muito importante, é para saber quantas visitas o seu site recebeu de um terçeiro site

Exemplo de utilização

<?php     
	/*armazenar de onde o usuário solicitou a sua página, e depois escrever isto na tela*/
	$referer = $_SERVER&#91;'HTTP_REFERER'&#93;;
	echo $referer;
?>
 

Mais vamos ao que interessa…
Como Manipular o PHP Referer com cURL
A idéia de manipular o referer pode soar um pouco estranho, mas pode ser útil em muitos casos. Quando você manipular o referer, você pode se passar por um determinado site, ou página. Caso o site alvo use apenas este metódo para impedir que terçeiros utilizem os seus arquivos PHP, como arquivos para gravar no banco de dados, para fazer consultas, enfim, você poderá realizar o que quiser no site do alvo, apenas manipulando o referer, para que ele seja o mesmo do site.

<?php 	
	$cURL = curl_init("http://www.sitealvo.com/consultaSql.php");
	curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($cURL, CURLOPT_FOLLOWLOCATION, true);
	curl_setopt($cURL, CURLOPT_FRESH_CONNECT, true);
	curl_setopt($cURL, CURLOPT_CONNECTTIMEOUT, 10);
	curl_setopt($cURL, CURLOPT_REFERER, 'http://www.sitealvo.com');
	$resultado = curl_exec($cURL);
	curl_close($cURL);
	echo $resultado;
?>

Linha 2: Inicializamos a lib cURL, indicando qual é o site/caminho para enviarmos uma requisição
Linha 3: Configuramos o cURL para retornar a resposta em forma de texto, se houver
Linha 4: Configuramos o cURL para seguir um redirecionamento, caso a página alvo assim o faça
Linha 5: Configuramos o cURL para ignorar páginas em cache, ou seja, para que ele sempre renove o acesso feito a página
Linha 6: Configuramos o cURL para acessar a página somente no tempo limite estipulado
Linha 7: Aqui definimos o Referer da página, colocando exatamente o mesmo site do alvo, estamos nos passando por ele
Linha 8: Executamos o cURL, e armazenamos o resultado numa variável
Linha 9: Fechamos o cURL
Linha 10: Escrevemos na tela o resultado

Para finalizar, muitos sites hoje usam como segurança para seus arquivos PHP, a verificação do referer, ou seja, somente se o site dele estiver requisitando a página, fazer determinada ação. Entretanto, não podemos confiar nisto, pois como eu mostrei, é perfeitamente possível manipular o referer com cURL.

Espero que tenha gostado

Lucas Peperaio

Estudante de Ciência da Computação, trabalho com desenvolvimento web há 5 anos e com hardware há 8. Nas horas vagas, sou entusiasta de Overclock, Casemod e Benchmarks, além é claro dos Games. Apaixonado por informática e pela vida, procuro compartilhar meus conhecimentos e assim, ajudar as pessoas. Siga-me no youtube, posto semanalmente muito material sobre Hardware, tecnologia e games em geral: Clique aqui

Receba gratuitamente em seu E-mail
Novos artigos do meu Blog!


Após o Cadastro você receberá um Email Automático. Clique no link enviado para Ativar e receber as novidades.

Categorias do site





11 Comentários Deixe o seu

  1. Thalles Lazaro

    parabens otimo artigo muito bem explicado! e muito dificil axar artigos assim em pt-br.

  2. André

    Olá estou procurando programador para desenvolver script CURL para login em webs de financiamento de veiculo para vincular ao meu sistema de gestão automotiva.

    Existe interesse em orçar?

    grato

    André

  3. Felipe

    Alguma solução para o meu script php, só rodar se o endereço de onde ele venha, seja, REALMENTE de dentro do meu dominio ? Obrigado desde já

    • Lucas Peperaio

      É muito simples, use sessões para proteger os seus arquivos

  4. erick

    Muito bom, bem explicado !

  5. Oliveira

    Muito bom mas o login automático não funcionou com este site: http://www.contag.org.br/arrecadacao/login.php Os invés de fazer login e me retornar o resultado, eu vejo a própria página de login. Estou enviando os campos txt_login e txt_senha. Também tentei com #txt_login e #txt_senha

  6. Oliveira

    o código ficou assim:

  7. Suel

    Mas no caso como implementar isto em um link?

    Exemplo, tem um link em meu site (Link de acesso)

    Ao clicar em “Link de acesso” será redirecionado para um site. Preciso que esse site não detecte que veio do meu, mas sim dele mesmo.

    Tentei adaptar esse código acima mais não consigo. Veja como eu fiz:

    <a href="” target=”_black”>Link de acesso

    • Lucas Peperaio

      Não tem como fazer por link

      • Suel

        Então neste caso oque eu posso fazer? Existe algum método? Sei lá, algo que atenda a isso que estou querendo?

        Obrigado