尝试使用curl exec获得响应

时间:2017-08-15 14:50:35

标签: php curl

我正在尝试回复。

使用curl_exec工作正常,但问题是它获得了不同IP的响应。

我希望从客户端或用户IP获得响应,而不是服务器IP。

$URL = "https://drive.google.com/get_video_info?docid=".$_SERVER["QUERY_STRING"];
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $URL);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 2);
$response_data = urldecode(urldecode(curl_exec($curl)));

2 个答案:

答案 0 :(得分:0)

curl在服务器上运行,而不在客户端运行。 curl发出的任何HTTP命令都将使用服务器IP作为请求者。

  • 根据您调用的服务,可能您可以使用Internet代理中使用的X-Forwarded-For HTTP标头。

    $URL = "https://drive.google.com/get_video_info?docid=".$_SERVER["QUERY_STRING"];
    $curl = curl_init();
    
    // set the command as requested by the client IP
    curl_setopt($curl,CURLOPT_HTTPHEADER,array('X-Forwarded-For: '. $_SERVER['REMOTE_ADDR']));      
    
    curl_setopt($curl, CURLOPT_URL, $URL);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 2);
    $response_data = urldecode(urldecode(curl_exec($curl)));
    

您正在调用的服务可以使用标头来确定发起方的IP。使用X-Forwarded-For将无法与所有服务和服务器端框架一起使用。

  • 如果您想向客户提出请求,可能需要使用javascript(例如,使用XMLHttpRequest或JQuery或Angular中的某些功能)来发出请求。

您可以查看:

答案 1 :(得分:0)

让客户端在自己的计算机上安装curl,并在那里运行代码,或让客户端在其计算机上安装代理,然后通过客户端使用CURLOPT_PROXY&代理您的连接。共