如何在PHP cURL中使用User的当前IP地址作为代理?

时间:2015-07-10 20:44:25

标签: php curl proxy

是否可以使用用户的当前IP地址作为PHP cURL的代理地址?目前,我正在尝试使用代码但是请求超时错误。我用hma代理测试它工作正常,但是当我试图使用用户的IP地址时,它会在服务器的日志中给出请求时错误。

function get_page($url){

$proxy=$_SERVER['REMOTE_ADDR'].":80";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_HEADER, 0); // return headers 0 no 1 yes
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // return page 1:yes
curl_setopt($ch, CURLOPT_TIMEOUT, 40); // http request timeout 20 seconds
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Follow redirects, need this if the url changes
curl_setopt($ch, CURLOPT_MAXREDIRS, 2); //if http server gives redirection responce
curl_setopt($ch, CURLOPT_USERAGENT,
    "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7");
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt"); // cookies storage / here the changes have been made
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // false for https
curl_setopt($ch, CURLOPT_ENCODING, "gzip"); // the page encoding

$data = curl_exec($ch); // execute the http request
curl_close($ch); // close the connection
return $data;
}

有很多实际的例子都是这样做的。例如Google的这两个工具

  1. google.com/gwt/x
  2. developers.google.com/speed/pagespeed/insights

1 个答案:

答案 0 :(得分:0)

不可能。虽然您可以使用用户的IP作为"来源"使您的服务器发出SYN数据包,但是来自目标计算机的任何回复数据包将转到用户的计算机,而不是您的服务器

除非您控制目标/受害者上游的网络基础设施,否则不可能欺骗完整的TCP连接。