2017-08-15 86 views
0

我试图获得响应。尝试使用curl获得响应exec

使用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

我不知道你在问什么。 – GrumpyCrouton

+0

https://drive.google.com/get_video_info?docid=0B5iKi5djQFdXYTFoWmNsemNqX1U IM试图让谷歌的视频信息和视频信息的URL包含与该公司产生 我写脚本,得到这个信息工作正常,但问题是,当IP使用卷发IP地址生成的网址是不同的不是我的 –

+1

我会推荐阅读https://stackoverflow.com/help/how-to-ask来增加获得帮助的机会。以目前的形式,你的问题很难理解你在问什么。 –

回答

0

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

  • 根据您调用的服务,也许你可以使用互联网代理使用的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的或角部分功能),使该请求。

您可以检查:

+0

谢谢你的回答,你完全明白我的问题,但不幸的是这个解决方案对我来说不起作用:( –

+0

除了'X-Forwarded-For'外还有其他转发头文件你可以检查https:// stackoverflow。 com/questions/13111080/what-is-full-specification-of-x-forwarded-proto-http-header - 如果您使用的API不能识别该(或其他)转发头,则必须使用javascript从浏览器本身创建连接。 – Jaime

0

让客户端在自己的计算机上安装curl,并在那里运行代码,或让客户端在其计算机上安装代理,然后代理y我们通过客户的连接与CURLOPT_PROXY & co。