Domanda

Ho uno script che reindirizza a un link come

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

Ma voglio impostare il HTTP_REFERRER essere http://foo.com o blank in modo che il sito http://foo.com non è possibile tenere traccia del riferimento inviato da un altro dominio in cui è installato lo script.

È stato utile?

Soluzione

Beh, ovviamente c'è un modo per falsificare un riferimento. Quanto sarà utile è qualcosa che tu decida :)

Poiché il referente proviene dal client del browser Web, dovremo creare il nostro "client PHP WWW" ... fondamentalmente un proxy.

Ecco un codice che false tutte le informazioni che ci sono:

<?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 Conterrà ora il contenuto HTML della pagina che hai appena ricevuto dal server.

Per quanto riguarda quello che ci fai dopo, dipende da te :) Probabilmente dovrai formattare eventuali URL nel codice in modo che funzionino dal tuo dominio. Quindi stampare il codice HTML.

In generale, fare questo non è davvero una buona idea, ma questo è l'unico modo in cui sono a conoscenza di "falsificare" il referente e l'agente dell'utente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top