Pregunta

Tengo un script que redirige a un enlace como

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

Pero quiero establecer el HTTP_REFERRER ser - estar http://foo.com o blank para que el sitio http://foo.com No puede rastrear que la referencia se envió desde otro dominio en el que se instala el script.

¿Fue útil?

Solución

Bueno, por supuesto, hay una manera de falsificar un referente. Lo útil que será es algo para que decidas :)

Dado que el referente proviene del cliente del navegador web, necesitaremos crear nuestro propio "Cliente PHP WWW" ... básicamente un proxy.

Aquí hay algún código que falsificará toda la información que hay:

<?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 ahora contendrá el contenido HTML de la página que acaba de recibir desde el servidor.

En cuanto a lo que hace con él a continuación, eso depende de usted :) Probablemente necesitará formatear cualquier URL en el código para que funcionen desde su dominio. Luego imprima el código HTML.

En general, hacer esto no es realmente una buena idea, pero esta es la única forma en que sé para "falsificar" el referente y el agente de usuario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top