Pergunta

Eu tenho um script que redireciona para um link como

header("Location:http://foo.com/abc.xyz");

Mas eu quero definir o HTTP_REFERRER ser http://foo.com ou blank para que o site http://foo.com Não pode rastrear que a referência foi enviada de outro domínio em que o script está instalado.

Foi útil?

Solução

Bem, é claro que existe uma maneira de falsificar um referente. Quão útil será algo para você decidir :)

Como o referente vem do cliente do navegador da web, precisaremos criar nosso próprio "cliente PHP www" ... basicamente um proxy.

Aqui está algum código que falsificará todas as informações que estão lá:

<?php

// Setup Information
$host = "www.yoursite.com";
$page = "/index.html";

// Open the socket
$fp = fsockopen($host,80,$errno,$errstr,30) or die("Could not establish a connection. $errstr($errno)");

// Request the page
fputs($fp,"GET $page HTTP/1.0\r\n");
fputs($fp,"User-agent: PHP WWW Client\r\n");
fputs($fp,"Referer: http://www.anothersite.net\r\n");
fputs($fp,"\r\n");

// Read response
while (!feof($fp)) {
$page .= fgets ($fp,128);
}

// Close Socket
fclose($fp);

?>

$page Agora conterá o conteúdo HTML da página que você acabou de receber do servidor.

Quanto ao que você faz com isso a seguir, isso depende de você :) Você provavelmente precisará formatar quaisquer URLs no código para que eles funcionem em seu domínio. Em seguida, imprima o código HTML.

Geralmente, isso não é realmente uma boa ideia, mas essa é a única maneira que eu conheço "falsificar" o referente e o agente do usuário.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top