2017-08-15 85 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。