duanpie2834
2017-09-16 03:19
浏览 208
已采纳

PHP cURL重定向到另一个URL

In my code when I try to fetch redirect using cURL, it won't show the new location but when I put the same URL in browser it redirects to somewhere else I don't know how without redirect rules. but I need to get that same URL in result.

Here is the example URL

http://www.dailymotion.com/cdn/H264-1280x720/video/x1r819x.mp4?auth=1505704620-2562-a9qmrjvz-6e0f4066eb3a57ce79c011f5c3f932f3

Here is the Redirect URL

https://proxy-23.sg1.dailymotion.com/video/907/091/106190709_mp4_h264_aac_hd.mp4?auth=1505539349-6658-b3dukan0-a41773a8fa2338e758ce74cff24b0390#cell=sg1&hls_heuristic=1&hls_startFragPrefetch=1

Here is my PHP Code

$url = "http://www.dailymotion.com/cdn/H264-1280x720/video/x1r819x.mp4?auth=1505704620-2562-a9qmrjvz-6e0f4066eb3a57ce79c011f5c3f932f3";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_NOBODY, true); // HTTP request is 'HEAD'
$headers=curl_exec($ch);
preg_match_all('/^Location:(.*)$/mi', $headers, $matches);
curl_close($ch);
$print_newurl =  !empty($matches[1]) ? trim($matches[1][0]) : 'http://www.google.com.fr';
echo $print_newurl;

图片转代码服务由CSDN问答提供 功能建议

在我的代码中,当我尝试使用 cURL 获取重定向时,它不会显示 新的位置但是当我在浏览器中放入相同的URL时,它会重定向到其他地方我不知道如何没有重定向规则。 但我需要在结果中获得相同的URL。

以下是示例网址

  http://www.dailymotion.com  /cdn/H264-1280x720/video/x1r819x.mp4?auth=1505704620-2562-a9qmrjvz-6e0f4066eb3a57ce79c011f5c3f932f3
nn

这是重定向网址

 <代码> https://proxy-23.sg1.dailymotion.com/video/907/091/106190709_mp4_h264_aac_hd.mp4?auth=1505539349-6658-b3dukan0-a41773a8fa2338e758ce74cff24b0390#cell=sg1&hls_heuristic=1&  hls_startFragPrefetch = 1 
   
 
 

这是我的PHP代码

  $ url =“http://www.dailymotion  .com / cdn / H264-1280x720 / video / x1r819x.mp4?auth = 1505704620-2562-a9qmrjvz-6e0f4066eb3a57ce79c011f5c3f932f3“; 
 $ ch = curl_init(); 
curl_setopt($ ch,CURLOPT_URL,$ url); 
curl_setopt(  $ ch,CURLOPT_HEADER,true); 
curl_setopt($ ch,CURLOPT_RETURNTRANSFER,true); 
curl_setopt($ ch,CURLOPT_NOBODY,true);  // HTTP请求是'HEAD'
 $ headers = curl_exec($ ch); 
preg_match_all('/ ^ Location:(。*)$ / mi',$ headers,$ matches); 
curl_close($ ch);  
 $ print_newurl =!empty($ matches [1])?  trim($ matches [1] [0]):'http://www.google.com.fr'; 
echo $ print_newurl; 
   
 
  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • doushou8730 2017-09-16 03:25
    已采纳

    Try to follow the redirect with CURLOPT_FOLLOWLOCATION.

    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    

    Edit:

    $last_url = curl_getinfo($ch, CURLINFO_REDIRECT_URL);
    

    If that doesn't work, then try with CURLINFO_EFFECTIVE_URL. See more http://php.net/manual/en/function.curl-getinfo.php

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题