您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
php获取远程地址请求后的跳转地址
发布时间:2016-09-26 16:22:07编辑:雪饮阅读()
最近开发一个在线视频项目中为求速度,想以最短的时间内完成。于是选择了phpcms的视频模型,并且为了减轻服务器成本,所以也没有二开该视频模型直接使用自带的视频上传(自带的视频上传是上传到酷六了),然后在页面中就会嵌入一个酷六播放器。该播放器中没有视频的真实地址。在pc端还可以,flash还可以使用。而手机端可就悲剧了,由于视频真实地址无从获取,于是就想到了比对swf的地址格式与酷六网站手机端的地址格式,终于有办法了。
当前swf地址请求后会通过服务端重定向到一个新的页面,而该页面仍旧是swf,那么获取该swf就是无用的,但是新页面的地址用有一个重要参数,该参数与酷六的视频地址有所关联,只要我们获取到该参数并重新拼接即可获得酷六中该视频所在页面,而酷六视频所在页面与其手机端所在页面地址也有关联。那么只要再次匹配url规则即可获得酷六中该视频所在手机页面地址,通过该地址即可获得页面中的元素,我们只需要捕获播放器的html元素即可。
核心就是获取请求之后重定向的新页面的url地址。
下面是雪饮找寻到了一个国外某论坛中所提及的方法经雪饮整理之后的demo:
获取重定向目标页面所在url地址:
<?php
$url="http://player.juhe.phpcms.cn/player.php/vid/tmp0T1sBqkDlfcv5/style/UVrE8AO0plU./v.swf";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);// 启用时会将服务器服务器返回的"Location: "放在header中递归的返回给服务器
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//不直接输出
$a = curl_exec($ch);
$url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); //获取最后一个有效的url地址
echo $url;
?>
关键字词:php,远程,请求,跳转