-1

我正在使用 cURL 更改站点的 HTTP 引用,如果它来自搜索引擎,则只允许您查看其内容:

我能够做到这一点!

但问题是:网站获取的访问者的IP地址不是我的!这是我用来更改 ref 的网站的 IP 地址!,这里是代码:

echo geturl('http://example.com', 'http://referring-site.com');

function geturl($url, $referer) { 

    $headers[] = 'Accept: image/gif, image/x-bitmap, image/jpeg, image/pjpeg,text/html,application/xhtml+xml'; 
    $headers[] = 'Connection: Keep-Alive'; 
    $headers[] = 'Content-type: application/x-www-form-urlencoded;charset=UTF-8'; 
    $useragent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)'; 

    $process = curl_init($url); 
    curl_setopt($process, CURLOPT_HTTPHEADER, $headers); 
    curl_setopt($process, CURLOPT_HEADER, 0); 
    curl_setopt($process, CURLOPT_USERAGENT, $useragent);
    curl_setopt($process, CURLOPT_REFERER, $referer);
    curl_setopt($process, CURLOPT_TIMEOUT, 30); 
    curl_setopt($process, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1); 

    $return = curl_exec($process); 
    curl_close($process); 
  return $return;
} 

假设我使用该代码

mysite.com

所以 example.com 将 si refering-site.com 作为 HTTP ref,但它认为访问者 IP 与 mysite.com 相同!

何我可以得到它来获取访问者的真实 IP 地址而不是我使用代码的站点的 IP 地址吗?

我试图更换

      return $return;

return "<?php 
header( 'Location: http://example.com' ) ;
?>";

或者

echo '<META HTTP-EQUIV='Refresh' Content='0; URL=http://example.com'>';

但它不起作用!

4

1 回答 1

0

您正在做的是代理请求并对引用者撒谎。由于请求来自您的服务器,因此它在您的控制之下,因此可能会进行某种不正当的欺骗。

网站没有办法诱使浏览器制造这种谎言。

于 2012-11-02T12:48:21.273 回答