正在写的91prom、avaotu等视频网站的MP4地址解析


视频解析

今天在91prom上看视频的时候实在有些受不了广告的烦扰,所以萌生了一个解析视频mp4地址直接看的想法。

下面是源代码部分,包括一个自己改过的curl类,以及一个解析文件,有兴趣的自己玩玩就好。

下面是视频解析的代码,不过是老的,只写了两个,新的还正在写,不过可以凑活合着用。

视频解析文件(老版本只写了2个,重新写一个新的)

/**
 * 作者:君子不器
 * 网站:http://junzibuqi.com
 * QQ:2148124
 * 用途:视频解析
 */
/**
* 类似网站
 * 地址  http://email.91dizhi.at.gmail.com.b9c.club/index.php
 * 地址  http://www.avaotu.com/
 * 视频地址解析示例
 * http://91.p9p.co/ev.php?VID=9b5fYwx2vQUqMbTPPaBo4dwQN7qTbw2oNOh9FPHaOZsjlJmL
 * http://www.avaotu.com/embed/713/
 */
header("content-type:text/html;charset=utf8");
if(!isset($_GET['act'])){
	exit;
}
$str = base64_decode($_GET['act']);
// 解析URL
$site = parse_url($str);
if(!isset($site['host'])){
	exit;
}
include 'httpCurl.php';
// 获取视频文件地址
function getvideo($url){
	// 解析URL
	$site = parse_url($url);
	if(!isset($site['host'])){
		return false;
	}
	// 请求类
	$http = new HttpCurl();
	// 判断
	switch ($site['host']) {
		case '91.p9p.co':
			$u = "http://91.9p91.com/getfile_jw.php?" . $site['query'] . "&v=NaN&mp4=999";
			$vid = $site['query'];
			$data = $http->request($u, 'get');
			if(strpos($data[0],'file=') !== false){
				$data = substr($data[0],strpos($data[0],'file=') + 5);
				$data = str_replace(".mp4&", ".mp4?", $data);
			}else{
				$data = 'fail';
			}
			break;
		case 'www.avaotu.com':
			$res = $http->request($url,'get');
			$start = strpos($res[0], 'source src="');
			$end = strpos($res[0], 'type="video');
			$data = substr($res[0],$start + 12,$end - $start - 14);
			$res = $http->request($data,'get');
			$data = $res[2]['redirect_url'];
			break;
		default:
			$data = 'fail';
			break;
	}
	return $data;
}

if(isset($_GET['dl']) and $_GET['dl'] == 'link'){
	header('location:' . getvideo($str));
}
echo getvideo($str);

自己改得HttpCurl类

/**
 * HttpCurl Curl模拟Http工具类
 */
class HttpCurl
{
    /**
     * 模拟POST与GET请求
     */
    public static function request($url, $type, $data = false, $ua = null, $gzip = false, $header = [], $timeout = 60)
    {
        $cl = curl_init();

        // 兼容HTTPS
        if (stripos($url, 'https://') !== FALSE) {
            curl_setopt($cl, CURLOPT_SSL_VERIFYPEER, 0);
            curl_setopt($cl, CURLOPT_SSL_VERIFYHOST, 0);
            curl_setopt($cl, CURLOPT_SSLVERSION, 1);
        }

        // 设置返回内容做变量存储
        curl_setopt($cl, CURLOPT_RETURNTRANSFER, 1);

        // 设置需要返回Header
        curl_setopt($cl, CURLOPT_HEADER, true);

        // 设置User-Agent信息
        if(!empty($ua)){
            curl_setopt($cl, CURLOPT_USERAGENT, $ua);
        }
        // 设置请求头
        if (count($header) > 0) {
            curl_setopt($cl, CURLOPT_HTTPHEADER, $header);
        }

        // 设置需要返回Body
        curl_setopt($cl, CURLOPT_NOBODY, 0);

        // 设置超时时间
        if ($timeout > 0) {
            curl_setopt($cl, CURLOPT_TIMEOUT, $timeout);
        }

        // POST/GET参数处理
        $type = strtoupper($type);
            if ($type == 'POST') {
            curl_setopt($cl, CURLOPT_POST, true);
            // convert @ prefixed file names to CurlFile class
            // since @ prefix is deprecated as of PHP 5.6
            if (class_exists('\CURLFile') && is_array($data)) {
                foreach ($data as $k => $v) {
                    if (is_string($v) && strpos($v, '@') === 0) {
                        $v = ltrim($v, '@');
                        $data[$k] = new \CURLFile($v);
                    }
                }
            }
            curl_setopt($cl, CURLOPT_POSTFIELDS, $data);
        }
        if ($type == 'GET' && is_array($data)) {
            if (stripos($url, "?") === FALSE) {
                $url .= '?';
            }
            $url .= http_build_query($data);
        }
        curl_setopt($cl, CURLOPT_URL, $url);
        // 读取获取内容
        if($gzip){
            curl_setopt($cl, CURLOPT_ENCODING, "gzip");
        }
        $response = curl_exec($cl);
        // 读取状态
        $status = curl_getinfo($cl);
        // 读取错误号
        $errno  = curl_errno($cl);
        // 读取错误详情
        $error = curl_error($cl);

        // 关闭Curl
        curl_close($cl);
        if ($errno == 0 && isset($status['http_code'])) {
            $header = substr($response, 0, $status['header_size']);
            $body = substr($response, $status['header_size']);
            return array($body, $header, $status, 0, '');
        } else {
            return array('', '', $status, $errno, $error);
        }
    }
}

求分享目标站

如果你有好的网站,可以直接在线观看的,可以把网址发给我,我给你解析出mp4的地址并把文件发给你。

至于这个是做什么用的,该懂的都会懂,如果你需要帮忙集成到你的WordPress里我也可以帮你。

分享您对本文的看法!
喜欢 喜欢
13
喜欢
不懂 不懂
15
不懂
膜拜 膜拜
50
膜拜
蛋疼 蛋疼
22
蛋疼
好奇 好奇
9
好奇
逗比 逗比
45
逗比
有才 有才
14
有才
开心 开心
10
开心
可怕 可怕
17
可怕
正在写的91prom、avaotu等视频网站的MP4地址解析

万事不求人,做最全面的自己!

评论 2

分享下您的观点

您填写的邮箱不会被公开,邮箱仅用于获取您的Gravatar头像

登录

重置密码

再次尝试?
登录