`
gegewu0825
  • 浏览: 47415 次
社区版块
存档分类
最新评论

根据视频网站地址 获取swf地址

    博客分类:
  • PHP
阅读更多
<?php
/**
 * 处理 视频链接信息
 * 支持ku6 youku tudou sohu sina
 */

$url=get_input('video');
$pattern='/(http:\/\/)?([\w-]+)\.([\w-]+)(\.[\w-]+)*(\/)?[^s]*/';
if(!preg_match($pattern, $url)){
	echo 'error1';
	exit;
}


$swf=getvideo($url);
if(empty($swf)){
	echo 'error2';
	exit;
}
echo $swf;
exit;

/**
 * 通过视频网站url获取swf地址
 * @param string $content
 * @return string
 */

function getvideo($url){
	$host='';
	$urls = parse_url($url);
	$host = strtolower(trim($urls["host"]));

	$vhconfs = array(
			'youku.com' => array('p'=>'/\/id_([\w\d\=]+)\.html/','c'=>'utf-8','tp'=>'/\<title\>(.+?)\s*[\-\_].*?\<\/title\>/i','ip'=>'~(?:(?:\_href\s*\=\s*[\'\']iku\:\/\/.+?)|(?:\&pic\s*\=\s*)|(?:\&screenshot\s*\=\s*))(http\:\/\/[\w\d]+\.ykimg\.com\/[^\|\'\'\s]+)~i', 'ppp'=>1),
			'sina.com.cn' => array('p'=>'/\/(\d+)\-(\d+)\.html/','c'=>'utf-8','tp'=>'/\<title\>(.+?)\s*[\-\_].*?\<\/title\>/','ip'=>'~pic\s*[\:\=]\s*[\'\'](http\:\/\/[^\']+?\.(?:jpg|jpeg|gif|png|bmp))[\'\']~i', 'ppp'=>1),
			'tudou.com' => array('p'=>'/view\/([\w\d\-\_]+)\/' . '*$/','c'=>'gbk','tp'=>'/\<title\>(.+?)(?:[\-\_].*?)?\<\/title\>/','ip'=>'/(?:bigItemUrl|pic)\s*[\=\:]\s*[\'\']([^\'\']+?)[\'\']/i', 'ppp'=>1, 'gzip'=>1,),
			'ku6.com' => array('p'=>'/\/([\w\-\_\.]+)\.html/','c'=>'gbk','tp'=>'/\<title\>(.+?)\s*[\-\_].*?\<\/title\>/i','ip'=>'~(?:(?:\<span class=\'s_pic\'\>)|(?:cover\s*[\:\=]\s*[\'\']))(http\:\/\/[^\'\<]+?\.(?:jpg|jpeg|gif|png|bmp))~i', 'ppp'=>0, ),
			'sohu.com' => array('p'=>'/\/([\d]+)\/?$/','c'=>'gbk','tp'=>'/\<title\>(.+?)\s*[\-\_].*?\<\/title\>/i','ip'=>'/(?:(?:[\'\']og\:image[\'\']\s*content)|(?:cover))\s*[\:\=]\s*[\'\']([^\'\']+?)[\'\']/', 'ppp'=>1),
			//'mofile.com' => array('p'=>'/\/(\w+)\/?$/','c'=>'utf-8','tp'=>'/\<title\>(.+?)\s*[\-\_].*?\<\/title\>/i','ip'=>'/thumbpath=\'(.*?)\';/i',),
	);

	$swf=array(
			'youku.com'=>'http://player.youku.com/player.php/sid/FLASHVAR=/v.swf',
			'ku6.com'=>'http://player.ku6.com/refer/FLASHVAR/v.swf',
			//'5show.com'=>'http://www.5show.com/swf/5show_player.swf?flv_id=FLASHVAR',
			'sina.com.cn'=>'http://vhead.blog.sina.com.cn/player/outer_player.swf?vid=FLASHVAR',
			'sohu.com'=>'http://v.blog.sohu.com/fo/v4/FLASHVAR',
			'tv.sohu.com'=>'http://share.vrs.sohu.com/FLASHVAR/v.swf',
			//'mofile.com'=>'http://tv.mofile.com/cn/xplayer.swf?v=FLASHVAR',
			'tudou.com'=>'http://www.tudou.com/v/FLASHVAR',
	);

	foreach($vhconfs as $k=>$v) {
		if(false!==strpos($host,$k)) {
			$return = array();
			if(preg_match($v["p"],$url,$m) && $m[1]) {
				$return["id"] = $m[1];
				$return["host"] = $k;
				$return["url"] = $url;

					
			} elseif($v["ppp"]) {
				if("tudou.com" == $k) {
					if(false!==strpos($url, "play/") && ($html = @dfopen($url))) {
						if($v["gzip"]) {
							$html = @gzdecode($html);
						}

						$iid = "";
						$icode = "";

						if(preg_match('~(?:(?:[\?\&\#]iid\=)|(?:\d+i))(\d+)~',$url,$m) && $m[1]) {
							$iid = $m[1];
						} elseif(preg_match('~(?:(?:\,iid\s*=)|(?:\,defaultIid\s*=)|(?:\.href\)\s*\|\|))\s*(\d+)~',$html,$m) && $m[1]) {
							$iid = $m[1];
						}

						if(preg_match("~".$iid.".*?icode\s*[\:\=]\s*(?:[^\'\"]*?)[\'\"]([\w\d\-\_]+)[\'\"]~s",$html,$m) && $m[1]) {
							$icode = $m[1];
						}

						if($icode) {
							$return["id"] = $icode;
							$return["url"] = $url;

						}
					}
				} elseif("youku.com" == $k) {
					if(preg_match("~\/v\_playlist\/.+?\.htm~",$url) && ($html = dfopen($url))) {
						if($v["gzip"]) {
							$html = gzdecode($html);
						}
							

						$id = "";
						if(preg_match("~\_href\s*\=\s*[\'\"]iku\:\/\/.+?http\:\/\/v\.youku\.com\/v\_show\/id\_([\w\d]+)\.htm~i", $html, $m) && $m[1]) {
							$id = $m[1];
						}

						if($id) {
							$return["id"] = $id;
							$return["url"] = $url;
								
						}
					}
				} elseif("sina.com.cn" == $k) {
					if(preg_match("/video\.sina\.com\.cn\/.+?\/([\d\-]+)\.html/",$url) && ($html=dfopen($url))) {
						if($v["gzip"]) {
							$html = gzdecode($html);
						}
							
						$id = "";
						if(preg_match("~vid\s*[\:]\s*[\'\"]([^\'\"]+?)[\'\"]~i", $html, $m) && $m[1]) {
							$id = $m[1];
						}

						if($id) {
							$return["id"] = $id;
							$return["url"] = $url;

						}
					}
				} elseif("sohu.com" == $k) {
					if(preg_match("~tv\.sohu\.com\/([\w]+\/)+[\w]+\.shtml~i", $url) && ($html=@dfopen($url))){
						if($v["gzip"]){
							$html = @gzdecode($html);
						}

							
						$id = "";
						if(preg_match("~vid\s*[\:\=]\s*[\'\"]([^\'\"]+?)[\'\"]~i", $html, $m) && $m[1]) {
							$id = $m[1];
						}
						if($id){
							$return["id"] = $id;
							$return["url"] = $url;
							$return["host"] = "tv.sohu.com";

						}
					}
				}

				if($return && !isset($return["host"])) {
					$return["host"] = $k;
				}
			}
		}
	}

	$return['swf']=str_replace('FLASHVAR', $return['id'], $swf[$return['host']]);
	return $return['swf'];
}


function gzdecode ($data){
	$flags = ord(substr($data, 3, 1));
	$headerlen = 10;
	$extralen = 0;
	$filenamelen = 0;
	if ($flags & 4){
		$extralen = unpack('v' , substr($data, 10, 2));
		$extralen = $extralen[1];
		$headerlen += 2 + $extralen;
	}
	if ($flags & 8) 		$headerlen = strpos($data, chr(0), $headerlen) + 1;
	if ($flags & 16) 		$headerlen = strpos($data, chr(0), $headerlen) + 1;
	if ($flags & 2) 		$headerlen += 2;
	$unpacked = @gzinflate(substr($data, $headerlen));
	if ($unpacked === FALSE)
		$unpacked = $data;
	return $unpacked;
}



function dfopen($url, $limit = 10485760 , $post = '', $cookie = '', $bysocket = false,$timeout=5,$agent="") {
	if(ini_get('allow_url_fopen') && !$bysocket && !$post) {
		$fp = @fopen($url, 'r');
		$s = $t = '';
		if($fp) {
			while ($t=@fread($fp,2048)) {
				$s.=$t;
			}
			fclose($fp);
		}
		if($s) {
			return $s;
		}
	}

	$return = '';
	$agent=$agent?$agent:"Mozilla/5.0 (compatible; Googlebot/2.1; +http:/"."/www.google.com/bot.html)";
	$matches = parse_url($url);
	$host = $matches['host'];
	$script = $matches['path'].($matches['query'] ? '?'.$matches['query'] : '').($matches['fragment'] ? '#'.$matches['fragment'] : '');
	$script = $script ? $script : '/';
	$port = !empty($matches['port']) ? $matches['port'] : 80;
	if($post) {
		$out = "POST $script HTTP/1.1\r\n";
		$out .= "Accept: */"."*\r\n";
		$out .= "Referer: $url\r\n";
		$out .= "Accept-Language: zh-cn\r\n";
		$out .= "Content-Type: application/x-www-form-urlencoded\r\n";
		$out .= "Accept-Encoding: none\r\n";
		$out .= "User-Agent: $agent\r\n";
		$out .= "Host: $host\r\n";
		$out .= 'Content-Length: '.strlen($post)."\r\n";
		$out .= "Connection: Close\r\n";
		$out .= "Cache-Control: no-cache\r\n";
		$out .= "Cookie: $cookie\r\n\r\n";
		$out .= $post;
	} else {
		$out = "GET $script HTTP/1.1\r\n";
		$out .= "Accept: */"."*\r\n";
		$out .= "Referer: $url\r\n";
		$out .= "Accept-Language: zh-cn\r\n";
		$out .= "Accept-Encoding: none\r\n";
		$out .= "User-Agent: $agent\r\n";
		$out .= "Host: $host\r\n";
		$out .= "Connection: Close\r\n";
		$out .= "Cookie: $cookie\r\n\r\n";
	}

	$fp = jfsockopen($host, $port);

	if(!$fp) {
		return false;
	} else {
		fwrite($fp, $out);
		$return = '';
		while(!feof($fp) && $limit > -1) {
			$limit -= 8192;
			$return .= @fread($fp, 8192);
			if(!isset($status)) {
				preg_match('|^HTTP/[^\s]*\s(.*?)\s|',$return, $status);
				$status=$status[1];
				if($status!=200) {
					return false;
				}
			}
		}
		fclose($fp);
		preg_match("/^Location: ([^\r\n]+)/m",$return,$match);
		if(!empty($match[1]) && $location=$match[1]) {
			if(strpos($location,":/"."/")===false) {
				$location=dirname($url).'/'.$location;
			}
			$args=func_get_args();
			$args[0]=$location;
			return call_user_func_array("dfopen",$args);
		}
		if(false!==($strpos = strpos($return, "\r\n\r\n"))) {
			$return = substr($return,$strpos);
			$return = preg_replace('~^\r\n\r\n(?:[\w\d]{1,8}\r\n)?~',"",$return);
			if("\r\n\r\n"==substr($return,-4)) {
				$return = preg_replace('~(?:\r\n[\w\d]{1,8})?\r\n\r\n$~',"",$return);
			}
		}

		return $return;
	}
}


function jfsockopen($hostname, $port, $errno, $errstr, $timeout)
{
	$fp = false;

	if(function_exists('fsockopen'))
	{
		@$fp = fsockopen($hostname, $port, $errno, $errstr, $timeout);
	}
	elseif(function_exists('pfsockopen'))
	{
		@$fp = pfsockopen($hostname, $port, $errno, $errstr, $timeout);
	}

	return $fp;
}
 
分享到:
评论
1 楼 string2020 2014-05-10  
好,谢谢。
楼主能不能帮忙分析一下
http://class.baihe.com/index.php?play&vid=256
这个网站的视频下载地址

谢谢

相关推荐

    VB批量获取网上swf格式视频教程URL地址.rar

    VB批量获取网上swf格式视频教程URL地址,并可批量移动,将这些地址导入到迅雷或快车中,就可实现批量下载,不错吧。程序获取enet网站的视频教程URL,当然只要符合格式,你可以将地址改为其它目标站,当然程序代码...

    新浪微博视频解析源码 秒拍视频站外调用源码.rar_instrumenttqi_runbv3_微博视频swf_微博视频分析_调用

    3. api.php:这是一个可能包含了与微博视频服务交互的API接口的PHP文件,用于获取视频信息、播放地址等。 4. 使用说明.txt:这是一个文档,详细解释了如何使用这套源码,对于理解和部署源码非常关键。 5. cross...

    swf转换为其他视频格式(软件包)

    通过这个名为“swf转换为其他视频格式解决方案”的压缩包,用户可以获取一个完整、高效的SWF转换工具,实现跨平台、无损质量的视频格式转换。这个软件包解决了SWF文件在当前网络环境下的适应性和可播放性问题,让...

    swf在线录制视频的例子含fla

    标题中的“swf在线录制视频的例子含fla”揭示了这是一个关于使用SWF(ShockWave Flash)文件格式和FLA(Flash源文件)进行在线视频录制的示例项目。SWF是Adobe Flash Player用于播放多媒体内容的文件格式,而FLA则是...

    Delphi 播放swf视频

    - 为了获取SWF文件的总帧数,可以编写以下事件处理程序: ```pascal procedure TForm1.FormCreate(Sender: TObject); begin Label1.Caption := IntToStr(ShockwaveFlash1.TotalFrames); end; ``` #### 五、...

    flvdownloader网页视频地址嗅探器 网页流媒体地址嗅探器

    总的来说,网页视频地址嗅探器是一种实用的工具,它能帮助用户绕过视频网站的限制,获取并下载视频内容。尽管随着技术的发展,嗅探方式也在不断进化,但其核心目标始终是揭示隐藏在网络流量背后的视频资源。

    flv文件地址获取器

    FLV文件地址获取器是一种工具,它的主要功能是解析网页中的视频流信息,从而帮助用户获取到可以直接下载的视频资源链接。在线视频平台通常不会直接提供视频文件的URL,而是通过复杂的脚本和服务器端处理来分发视频...

    asp.net 后台获取flv地址播放flv视频

    本文将详细讲解如何在ASP.NET后台上获取FLV视频地址,并实现播放功能。 首先,我们需要了解FLV视频的存储和组织方式。通常,FLV文件会存储在服务器的某个目录下,例如"videos"目录。为了在后台获取FLV地址,我们...

    AS3 调用SWF类库

    SWF(Small Web Format)是Adobe Flash Player支持的一种文件格式,用于存储包含动画、图形、音频和视频等多媒体内容。AS3是编写SWF文件的主要编程语言,它提供了一种强大的方式来创建交互式应用程序。 要调用一个...

    FLVplayer.swf

    在IT行业中,FLVplayer.swf是一个常见的Flash视频播放器,尤其在过去的年代,它被广泛用于网页中播放FLV格式的视频内容。这个标题"FLVplayer.swf"表明我们要讨论的是一款专为播放FLV文件设计的SWF文件。SWF全称是...

    swf格式视频转换成avi格式视频的软件

    - `洪越源代码.url`:这个文件可能是一个网址链接,指向开发者的网站或源代码页面,用户可以在此获取更多关于软件的技术支持或查看其开源状态。 在实际使用中,用户需要先运行`setup.exe`安装软件,然后参照`说明...

    通过java获取土豆视频

    // 获取视频播放地址 String content = doc.html(); int beginLocal = content.indexOf("&lt;script&gt;document.domain"); int endLocal = content.indexOf("&lt;/script&gt;"); content = content.substring(beginLocal, end...

    swf格式特效集合

    1. **SWF格式**:SWF是Adobe Flash的输出格式,它能够展示动画、音频、视频和互动内容。SWF文件通常在网页上播放,通过Adobe Flash Player或者内置在浏览器中的插件来支持。由于其小巧的体积和丰富的表现力,SWF在20...

    swf分解,flash分解,swf还原,flash还原

    首先,SWF(ShockWave Flash)是Adobe Flash的一种文件格式,它包含了动画、视频、声音和交互性内容。SWF文件通常是在Flash开发环境中创建,然后嵌入到网页中供用户查看。"SWF分解"或"Flash分解"指的是将一个完整的...

    swf资源提取软件

    在描述中提到的"swf资源提取软件"是一款高效便捷的工具,用户可以通过它轻松获取SWF文件内部的元素。这对于开发者和设计师来说尤其有用,他们可能需要访问原始素材以便修改或创建新的Flash项目。软件的操作通常直观...

    SWF播放器.rar 播放SWF文件

    3. 质量调整:允许用户根据网络状况或个人偏好调整视频质量。 4. 全屏模式:提供全屏播放功能,增强观看体验。 5. 交互性:支持用户与SWF内容进行交互,如点击按钮、填写表单等。 6. 安全性:防止恶意的ActionScript...

    解析swf文件 源码

    1. **文件读取**:使用文件操作函数打开SWF文件,并逐字节读取文件头,获取版本和文件长度信息。 2. **解压缩**:如果文件是压缩的,需要先用zlib等库进行解压缩。 3. **数据块解析**:根据文件头信息,解析每个...

    SWF文件提取图片 声音 工具

    "TT软件下载说明.txt"可能包含了关于如何下载和安装该工具的详细步骤,而".url"文件是一种快捷方式,可以直接打开浏览器访问相关网站获取更多软件信息。最后,"ftswfresextractor"可能是该工具的执行文件,用户需要...

    swf视频格式转flv等

    2. **导入SWF文件**:打开软件后,选择“添加文件”或类似选项,将你需要转换的SWF视频导入到软件中。 3. **设置输出格式**:在软件的设置菜单中,选择目标输出格式,如FLV。可能还需要调整分辨率、编码器、比特率...

    沪江swf课件播放器

    最后,`访问我们.url`和`U盘量产网.url`是快捷方式文件,前者可能指向沪江教育的官方网站,方便用户获取更多课程信息或支持,后者则可能是推广或教程链接,与播放器本身的功能关系不大。 总的来说,沪江swf课件...

Global site tag (gtag.js) - Google Analytics